[Решено:] Переброс порта с 2 внешними интерфейсами

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

borin
Сообщения: 67

[Решено:] Переброс порта с 2 внешними интерфейсами

Сообщение borin »

Задача следующая, голову сломал, есть роутер на Debian+Stargazer, вопрос в следующем, нужно пробросить во внутрь порт и чтоб он был доступен на обоих интрфейсах (2 внешних интерфейса). Маршрутизацией добился, если открывать порт на самой машине, то тут все нормально он доступен на обоих интерфейсах, ответ уходит с того интерфейса откуда пришел. А вот если пробрасывать порт в локалку DNAT-ом то ответ уходит через шлюз по умолчанию и => порт доступен только на одном интерфейсе.

fw:

Код:

#!/bin/bash ############################### #Описываем переменные########## ############################### ip_lan="192.168.2.50" ip_interra="1.1.1.1" ip_kgok="2.2.2.2" if_lan="eth2" if_interra="eth0" if_kgok="eth1" net_lan="192.168.2.0/24" net_interra="1.1.1.0/24" net_kgok="2.2.2.192/26" gw_interra="1.1.1.2" gw_kgok="2.2.2.2.193" #********************************************** #Включение правил маршрутизации**************** #********************************************** ip route flush table T1 #Обнуляем первую таблицу ip route flush table T2 #Обнуляем вторую таблицу ip route add $net_interra dev $if_interra src $ip_interra table T1 #закидываем в первую таблицу инфу о сети первого провайдера ip route add $net_lan dev $if_lan table T1 #закидываем в первую таблицу инфу о том, что у нас существует локальная сеть ip route add $net_kgok dev $if_kgok table T1 #закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть ip route add 127.0.0.0/8 dev lo table T1 #закидываем в первую таблицу инфу о существовании лупбека ip route add default via $gw_interra table T1 #закидываем в первую таблицу дефолтный гейт на первого провайдера ip route add $net_kgok dev $if_kgok src $ip_kgok table T2 #закидываем в первую таблицу инфу о сети второго провайдера ip route add $net_lan dev $if_lan table T2 #закидываем в первую таблицу инфу о том, что у нас существует локальная сеть ip route add $net_interra dev $if_interra table T2 #закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть ip route add 127.0.0.0/8 dev lo table T2 #закидываем в первую таблицу инфу о существовании лупбека ip route add default via $gw_kgok table T2 #закидываем в первую таблицу дефолтный гейт на первого провайдера ip rule delete from $ip_interra table T1 #удаляем наши таблицы, если они присутсвуют в текущей конфигурации ip rule delete from $ip_kgok table T2 #аналогично для второй. ip rule del fwmark 0xa ip rule del fwmark 0xb ip rule add from $ip_interra table T1 #все пакеты от ip адреса первого провайдера маршрутизировать по таблице T1 ip rule add from $ip_kgok table T2 #все пакеты от ip адреса второго провайдера маршрутизировать по таблице T2 ip rule add fwmark 10 table T1 #все пакеты, которые имеют метку 10 маршрутизировать по таблице T1 ip rule add fwmark 11 table T2 #все пакеты, которые имеют метку 11 маршрутизировать по таблицу T2 ip route flush cache #ну и на последок очистить кеш ip route del default #Удаляем дефолтный шлюз если стоял ip route add default via $gw_interra #заполняем основную таблицу адресов. дефолтный гейт на interra #ip route add default via $gw_kgok #заполняем основную таблицу адресов. дефолтный гейт на kgok #********************************************************** # Разрешаем форвардинг пакетов между интерфейсами # Эта штука необязательна, просто в некоторых дистрибутивах # по умолчанию форвардинг разрешен, а в некоторых - запрещен # Если мы подстрахуемся, хуже не бкдет echo "1" > /proc/sys/net/ipv4/ip_forward # Очищаем правила файрвола iptables -t filter -F iptables -t filter -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # Политика по умолчанию DROP: всем всё запрещено iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP # Разрешаем всё на локальном интерфейсе iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT # Доверяем локальной сети iptables -t filter -A INPUT -s $net_lan -d $ip_lan -j ACCEPT iptables -t filter -A OUTPUT -d $net_lan -s $ip_lan -j ACCEPT #Разрешаем серверу ходить куды угодно iptables -t filter -A INPUT -m state --state ESTABLISHED -i $if_interra -j ACCEPT iptables -t filter -A OUTPUT -m state --state NEW,ESTABLISHED -o $if_interra -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED -i $if_kgok -j ACCEPT iptables -t filter -A OUTPUT -m state --state NEW,ESTABLISHED -o $if_kgok -j ACCEPT #Разрешаем vpn iptables -t filter -A INPUT -p gre -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 1723 -j ACCEPT #Пробрасываем порт 1494 citrix от st2 наружу для офиса iptables -t nat -A PREROUTING -p tcp -s xx.xx.xx.xx --dport 1494 -j DNAT --to-destination 192.168.2.8 iptables -t filter -A FORWARD -p tcp -s 192.168.2.8 --sport 1494 -j ACCEPT iptables -t filter -A FORWARD -p tcp -d 192.168.2.8 --dport 1494 -j ACCEPT #маркируем пакеты (ходим через ИНТЕРРУ) iptables -t mangle -A PREROUTING -s $net_lan -j MARK --set-mark 10 #маркируем пакеты (ходим через КГОК) #iptables -t mangle -A PREROUTING -s $net_lan -j MARK --set-mark 11 #Правила SNAT, если пакет с меткой 10 - идем через ИНТЕРРУ, с меткой 11 - идем через КГОК iptables -t nat -A POSTROUTING -m mark --mark 10 -p ALL -s $net_lan -o $if_interra -j SNAT --to-source $ip_interra iptables -t nat -A POSTROUTING -m mark --mark 11 -p ALL -s $net_lan -o $if_kgok -j SNAT --to-source $ip_kgok #Льготные ресурсы интерры всегда, через интерру (метим 10) iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.76 -j MARK --set-mark 10 #radio.kch.ru iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.79 -j MARK --set-mark 10 #war.kch.ru iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.78 -j MARK --set-mark 10 #files.kch.ru iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.71 -j MARK --set-mark 10 #irc.kch.ru iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.72 -j MARK --set-mark 10 #kino.kch.ru
ubuntu 8.04 | Debian lenny
Спасибо сказали:
borin
Сообщения: 67

Re: [Решено:] Переброс порта с 2 внешними интерфейсами

Сообщение borin »

ubuntu 8.04 | Debian lenny
Спасибо сказали: