2 интерфейса, iptables и DNAT | Форум Вернуться к спискам тем
Михаил Коваленко создал тему 05.09.2008 в 15:06
Новичок
Сообщений: 12
Репутация: 15
Сейчас не на форуме
Имеется 2 канала в интернет, и сервер с Ubuntu с ядром 2.6.24-19-server.Хождение трафика реализовано через такой скрипт:---/bin/shIP_LOCAL=10.1.1.2IP_INET1=12.45.78.10IP_INET2=53.35.32.34IF_LOCAL=eth0IF_INET1=eth1IF_INET2=eth3NET_LOCAL=10.1.1.0/24NET_INET1=12.45.78.10/30NET_INET2=53.35.32.34/30GW1=12.45.78.9GW2=53.35.32.33 RULESroute del defaultroute del defaultip route flush table T1ip route flush table T2ip route add 036;NET_INET1 dev 036;IF_INET1 src 036;IP_INET1 table T1ip route add 036;NET_LOCAL dev 036;IF_LOCAL table T1ip route add 036;NET_INET2 dev 036;IF_INET2 table T1ip route add 127.0.0.0/8 dev lo table T1ip route add default via 036;GW1 table T1ip route add 036;NET_INET2 dev 036;IF_INET2 src 036;IP_INET2 table T2ip route add 036;NET_LOCAL dev 036;IF_LOCAL table T2ip route add 036;NET_INET1 dev 036;IF_INET1 table T2ip route add 127.0.0.0/8 dev lo table T2ip route add default via 036;GW2 table T2ip route add 036;NET_INET1 dev 036;IF_INET1 src 036;IP_INET1ip route add 036;NET_INET2 dev 036;IF_INET2 src 036;IP_INET2ip route add default via 036;GW2ip rule delete table T1ip rule delete table T2ip rule delete table T1ip rule delete table T2ip rule add from 036;IP_INET1 table T1ip rule add from 036;IP_INET2 table T2ip rule add fwmark 10 table T1ip rule add fwmark 11 table T2ip route flush cacheexit 0---В итоге получается что все пакеты с самого сервера ходят вроде как через один интерфейс. Так как обьединять каналы в один большой нет необходимости - так вроде как и подходит. Идём дальше.Стоит iptables 1.3.8.0debian1-1ubuntu2. Конфиг примерно такой:---/bin/sh IPTables config 1 - INTERFACES SOME SERVERS 1.1 - LANlan=eth0lan_ip=10.1.1.2lan_net=10.1.1.0/24lan_broadcast=10.1.1.255 1.2 - LOlo=lo 1.3 - NET1net1=eth1net1_ip=12.45.78.10 1.4 - NET2net2=eth3net2_ip=53.35.32.34 1.5 - COMPUTERS NETWORKSserver=10.1.1.1 2- MODULES enabling forwardingecho 1 gt; /proc/sys/net/ipv4/ip_forward load some modules/sbin/modprobe ip_tables/sbin/modprobe ip_conntrack/sbin/modprobe iptable_filter/sbin/modprobe iptable_mangle/sbin/modprobe iptable_nat/sbin/modprobe ipt_LOG/sbin/modprobe ipt_limit/sbin/modprobe ipt_state/sbin/modprobe ip_conntrack_ftp 3 - CLEANINGiptables -Fiptables -t nat -Fiptables -t mangle -F 4 - RULES 4.1 - FILTER TABLE 4.1.1 - POLICIESiptables -P INPUT DRОPiptables -P OUTPUT DRОPiptables -P FORWARD DRОP 4.1.2 - INPUT chain LOiptables -A INPUT -p ALL -i 036;{lo} -j ACCEPT LANiptables -A INPUT -i 036;{lan} -p tcp -m tcp --dport 53 -j ACCEPTiptables -A INPUT -i 036;{lan} -p udp -m udp --dport 53 -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp -m tcp --dport 1081 -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp -m tcp --dport 3128 -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp -m tcp --dport 26 -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp -m tcp --dport 80 -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp --syn -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{lan} -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{lan} -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Цитировать
Менеджер по рекламе рекомендует
Знаток своего дела
Сообщений: 1987
Репутация: 5055
Сейчас на форуме
Михаил Коваленко ответил 05.09.2008 в 15:06
Новичок
Сообщений: 12
Репутация: 15
Сейчас не на форуме
NET1iptables -A INPUT -i 036;{net1} -d 036;{net1_ip} -p tcp -m tcp --dport 6782 -j ACCEPTiptables -A INPUT -i 036;{net1} -d 036;{net1_ip} -p tcp --syn -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{net1} -d 036;{net1_ip} -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{net1} -d 036;{net1_ip} -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT NET2iptables -A INPUT -i 036;{net2} -d 036;{net2_ip} -p tcp -m tcp --dport 6782 -j ACCEPTiptables -A INPUT -i 036;{net2} -d 036;{net2_ip} -p tcp --syn -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{net2} -d 036;{net2_ip} -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPTiptables -A INPUT -i 036;{net2} -d 036;{net2_ip} -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT RELATED,ESTABLISHEDiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 4.1.4 - FORWARD chainiptables -A FORWARD -i 036;{lan} -j ACCEPTiptables -A FORWARD -i 036;{net1} -j ACCEPTiptables -A FORWARD -i 036;{net2} -j ACCEPT 4.1.5 - OUTPUT chainiptables -A OUTPUT -p ALL -j ACCEPT 4.2 - NAT TABLE 4.2.1 - PREROUTING chain REDIRECT SERVER NET1iptables -t nat -A PREROUTING -i 036;{net1} -d 036;{net1_ip} -p tcp -m tcp --dport 21 -j DNAT --to-destination 036;{server}:21iptables -t nat -A PREROUTING -i 036;{net1} -d 036;{net1_ip} -p tcp -m tcp --dport 25 -j DNAT --to-destination 036;{server}:25iptables -t nat -A PREROUTING -i 036;{net1} -d 036;{net1_ip} -p tcp -m tcp --dport 80 -j DNAT --to-destination 036;{server}:80iptables -t nat -A PREROUTING -i 036;{net1} -d 036;{net1_ip} -p tcp -m tcp --dport 110 -j DNAT --to-destination 036;{server}:110 NET2iptables -t nat -A PREROUTING -i 036;{net2} -d 036;{net2_ip} -p tcp -m tcp --dport 21 -j DNAT --to-destination 036;{server}:21iptables -t nat -A PREROUTING -i 036;{net2} -d 036;{net2_ip} -p tcp -m tcp --dport 25 -j DNAT --to-destination 036;{server}:25iptables -t nat -A PREROUTING -i 036;{net2} -d 036;{net2_ip} -p tcp -m tcp --dport 80 -j DNAT --to-destination 036;{server}:80iptables -t nat -A PREROUTING -i 036;{net2} -d 036;{net2_ip} -p tcp -m tcp --dport 110 -j DNAT --to-destination 036;{server}:110 4.2.2 - POSTROUTING chainiptables -t nat -A POSTROUTING -p all -s 036;{server} -o 036;{net1} -j SNAT --to-source 036;{net1_ip}iptables -t nat -A POSTROUTING -p all -s 036;{server} -o 036;{net2} -j SNAT --to-source 036;{net2_ip} 4.2.3 - ALLOWED PORTS TO SNAT RADMIN TO ANYWEREiptables -t nat -A POSTROUTING -p tcp -s 036;{lan_net} -o 036;{net2} --dport 4899 -j SNAT --to-source 036;{net2_ip}iptables -t nat -A POSTROUTING -p tcp -s 036;{lan_net} -o 036;{net2} --dport 4900 -j SNAT --to-source 036;{net2_ip} FTP TO ANYWEREiptables -t nat -A POSTROUTING -p tcp -s 036;{lan_net} -o 036;{net2} --dport 21 -j SNAT --to-source 036;{net2_ip} 4.3 - MANGLE table 4.3.1 - PREROUTING chainiptables -t mangle -A PREROUTING -s 036;{server} -d 036;{lan_net} -j MARK --set-mark 10 end.---На сервере стоит прокся, через которую ходит в Сеть офис.Но на другом сервере поднята почта и фтп, и туда надо попадать снаружи. Вот тут и есть проблема - по пробросам портов через NET1 - сервер видно снаружи, а по NET2 - нет. Если убрать маркировку (iptables -t mangle -A PREROUTING -s 036;{server} -d 036;{lan_net} -j MARK --set-mark 10) - то становится видно по NET2 (у Ubuntu-сервера основной шлюз - шлюз NET2), а по NET1 - нет.Внимание - вопрос. Что изменить в данной схеме, чтобы проброс на внутренний сервер работал по обоим интерфейсам?
Цитировать
Евгений Коченюк ответил 06.09.2008 в 1:25
Новичок
Сообщений: 35
Репутация: 24
Сейчас не на форуме
Думаю твой вопрос вне пределов понимания 90 % читающих эту группу.Сам я подобное хотел настроить, правда, давно, на Федоре, и так и не настроил, надобность отпала. Но, надо признать, не осилил :(Почитай доку по iptables, кажется то что тебе нужно описано там, и называется DMZ
Цитировать
Михаил Коваленко ответил 06.09.2008 в 18:53
Новичок
Сообщений: 12
Репутация: 15
Сейчас не на форуме
Да, наверное ты прав насчёт 90%. Хотя и на форум.убунту.ру - тоже народ в большинстве своём - не на много более шарящий. :(А по поводу DMZ - как вариант, надо будет посмотреть.
Цитировать
Чтобы ответить, нужно авторизоваться
здесь