URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4608
[ Назад ]

Исходное сообщение
"Настройка iptables при условии 2 wan, 2 lan"

Отправлено important , 04-Июн-10 17:32 
Уважаемые гуру, проверьте, пожалуйста, скрипт для формирования правил iptables со
следующими условиями:
есть некий физический сервер "mars" на debian lenny с двумя физическими
интерфейсами eth0, eth1(назначение - dns, dhcp, samba, openvpn, ssh),
на нем также поднята виртуальная машина на которой в свою очередь крутятся
еще 3 сервера "phobos" (lenny назначение http,https, smtp,ftp), "deymos" (w2k3
uvnc в качестве удаленного рабочего стола), "sirius" (lenny назначение torrentflux)
у родительского сервера "mars":
1) есть два wan со стороны интернета - первый через NAT провайдера (eth0), второй виртуальный ppp0
(работает через eth0 и имеет внешний ip)
2) есть два lan - первый eth1, который уходит на свич, второй виртуальный tun0
(работает через pptp и ожидает соединения из интернета удаленных клиентов)
3) виртуальные сервера взаимодействуют между собой и с сервером mars через
brige на eth1 через физический свич

Задачи такие:
1) Клиенты локальной сети ходят в интернет только через NAT провайдера eth0 у "mars"
2) Сервера (phobos, deymos, sirius) ходят в интернет через ppp0 соединение у "mars"
3) Перенаправление входящих пакетов с интерфейса pptp на нужные виртуальные сервера
4) Маршрутизация локальных клиентов eth1 и удаленных клиентов tun0

Сейчас это все как-бы работает через физический маршрутизатор. Но он слабый и имеет низкую производительность.
Я хочу переделать систему описанным выше способом.
Привожу скрипт, который удалось составить и прошу помочь исправить ошибки, а также
помочь с маршрутизацией локальных клиентов и удаленных клиентов.
#!/bin/bash

#разрешаем маршрутизацию#
echo "1" > /proc/sys/net/ipv4/ip_forward
#Определяем переменные#
inet="eth0"     #интерфейс интернета через нат провайдера
inet2="ppp0" #виртуальный интерфейс интернета с внешним ip (соединяется через eth0)
lan="eth1"     #интерфейс локалки подключенный к lan порту роутера
lan2="tun0"    #виртуальный интерфейс для удаленных клиентов (соединяется через ppp0)
inet_ip=XXX.XXX.XXX.XXX #адрес выделяемый провайдером для нат
inet_net=255.255.252.0
inet2_ip=XX.XX.XXX.XXX #внешний ip адрес через vpn
inet2_net=255.255.255.255
lan_ip=192.168.137.200 #адрес сервера в локальной сети
lan_net=255.255.255.0
lan2_ip=192.168.138.200 #адрес сервера для удаленных клиентов
lan2_net=255.255.255.0
#Сбрасывам все правила#
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t nat -F
iptables -t nat -X
iptables -F
iptables -X
#ПОДКЛЮЧАЕМ МОДУЛИ#
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_nat_irc
#ПОЛИТИКА ПО УМОЛЧАНИЮ#
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
#ВСЕГДА РАЗРЕШЕННЫЕ ВХОДЯЩИЕ СОЕДИНЕНИЯ#
iptables -t filter -A INPUT -i lo -j ACCEPT #Разрешаем трафик с обратной петли
iptables -t filter -A INPUT -p icmp --icmp-type any -j ACCEPT #Разрешаем пинговать
iptables -t filter -A INPUT -i $lan -j ACCEPT #Разрешаем локальной сети все
iptables -t filter -A INPUT -i $lan2 -j ACCEPT #Разрешаем удаленным клиентам сети все
#ОТКРЫВАЕМ ПОРТЫ#
iptables -t filter -A INPUT -p tcp --dport 221 -j ACCEPT #ssh_mars
iptables -t filter -A INPUT -p tcp --dport 222 -j ACCEPT #ssh_phobos
iptables -t filter -A INPUT -p udp --dport 5900 -j ACCEPT #vnc_tcp_deymos
iptables -t filter -A INPUT -p udp --dport 5900 -j ACCEPT #vnc_udp_deymos
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT #dns_tcp_mars
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT #dns_udp_mars
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT #smtp_phobos
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #http_phobos
iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT #https_phobos
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT #ftp_phobos
iptables -t filter -A INPUT -p tcp --dport 49160:49300 -j ACCEPT #torrent_tcp_sirius
iptables -t filter -A INPUT -p udp --dport 49160:49300 -j ACCEPT #torrent_udp_sirius
iptables -t filter -A INPUT -p tcp --dport 445 -j ACCEPT #samba_mars
iptables -t filter -A INPUT -p udp --dport 445 -j ACCEPT #samba_mars
iptables -t filter -A INPUT -p tcp --dport 137:139 -j ACCEPT #samba_mars
iptables -t filter -A INPUT -p udp --dport 137:139 -j ACCEPT #samba_mars
iptables -t filter -A INPUT -p udp --dport 67:68 -j ACCEPT #dhcp_mars
#Разрешить установленным соединениям
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#МАРШРУТИЗАЦИЯ МЕЖДУ ИНТЕРФЕЙСАМИ#
#разрешить локалке ходить наружу
iptables -t filter -A FORWARD -i $inet -o $lan -j ACCEPT
iptables -t filter -A FORWARD -o $inet -i $lan -j ACCEPT
#сервера mars, phobos, deymos, sirius ходят в интернет через впн провайдера с внешним ip
iptables -t filter -A FORWARD -s 192.168.137.200 -o $inet -j DROP
iptables -t filter -A FORWARD -s 192.168.137.201 -o $inet -j DROP
iptables -t filter -A FORWARD -s 192.168.137.202 -o $inet -j DROP
iptables -t filter -A FORWARD -s 192.168.137.203 -o $inet -j DROP
iptables -t filter -A FORWARD -o $inet2 -s 192.168.137.200 -j ACCEPT
iptables -t filter -A FORWARD -o $inet2 -s 192.168.137.201 -j ACCEPT
iptables -t filter -A FORWARD -o $inet2 -s 192.168.137.202 -j ACCEPT
iptables -t filter -A FORWARD -o $inet2 -s 192.168.137.203 -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.137.200 -o $inet2 -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.137.201 -o $inet2 -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.137.202 -o $inet2 -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.137.203 -o $inet2 -j ACCEPT
#Разрешаем установленным соединениям порождать новые
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#МАСКАРАД#
iptables -t nat -A POSTROUTING -i $lan -j SNAT --to $inet_ip
#ПЕРЕАДРЕСАЦИЯ ПОРТОВ#
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 221 -j DNAT --to-destination 192.168.137.200:22     #mars
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 222 -j DNAT --to-destination 192.168.137.201:22  #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 80 -j DNAT --to-destination 192.168.137.201:80    #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 8080 -j DNAT --to-destination 192.168.137.201:8080 #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 25 -j DNAT --to-destination 192.168.137.201:25    #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 20 -j DNAT --to-destination 192.168.137.201:25    #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 21 -j DNAT --to-destination 192.168.137.201:25    #phobos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 5900 -j DNAT --to-destination 192.168.137.202:5900 #deymos
iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 5900 -j DNAT --to-destination 192.168.137.202:5900 #deymos
iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 49160:49300 -j DNAT --to-destination 192.168.137.203:49160:49300 #sirius
iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 49160:49300 -j DNAT --to-destination 192.168.137.203:49160:49300 #sirius


Содержание

Сообщения в этом обсуждении
"Настройка iptables при условии 2 wan, 2 lan"
Отправлено reader , 04-Июн-10 20:54 
>[оверквотинг удален]
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 80 -j
>DNAT --to-destination 192.168.137.201:80 #phobos
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 8080 -j
>DNAT --to-destination 192.168.137.201:8080 #phobos
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 25 -j
>DNAT --to-destination 192.168.137.201:25 #phobos
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 20 -j
>DNAT --to-destination 192.168.137.201:25 #phobos
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 21 -j
>DNAT --to-destination 192.168.137.201:25 #phobos

почта и ftp в кучу?

а в целом врядли кто-то будет вчитываться, так что оставляйте минимум правил, запускайте , а потом уже добавляйте ограничения


>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 5900 -j
>DNAT --to-destination 192.168.137.202:5900 #deymos
>iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 5900 -j
>DNAT --to-destination 192.168.137.202:5900 #deymos
>iptables -t nat -A PREROUTING -p tcp -i $inet2 --dport 49160:49300 -j
>DNAT --to-destination 192.168.137.203:49160:49300 #sirius
>iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 49160:49300 -j
>DNAT --to-destination 192.168.137.203:49160:49300 #sirius


"Настройка iptables при условии 2 wan, 2 lan"
Отправлено important , 07-Июн-10 18:09 

>почта и ftp в кучу?
>
>а в целом врядли кто-то будет вчитываться, так что оставляйте минимум правил,
>запускайте , а потом уже добавляйте ограничения

Согласен, ftp лучше перенести на sirius.
Буду пробовать...

А вот здесь порты назначения на 192.168.137.203 машине правильно заданы!?
iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 49160:49300 -j
DNAT --to-destination 192.168.137.203:49160:49300 #sirius


"Настройка iptables при условии 2 wan, 2 lan"
Отправлено reader , 08-Июн-10 00:27 
>
>>почта и ftp в кучу?
>>
>>а в целом врядли кто-то будет вчитываться, так что оставляйте минимум правил,
>>запускайте , а потом уже добавляйте ограничения
>
>Согласен, ftp лучше перенести на sirius.

вообще то я имел ввиду то что 20,21,25 порты переправляются на один 25

>Буду пробовать...
>
>А вот здесь порты назначения на 192.168.137.203 машине правильно заданы!?
>iptables -t nat -A PREROUTING -p udp -i $inet2 --dport 49160:49300 -j
>
>DNAT --to-destination 192.168.137.203:49160:49300 #sirius

нет
http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET


"Настройка iptables при условии 2 wan, 2 lan"
Отправлено important , 09-Июн-10 10:53 
>вообще то я имел ввиду то что 20,21,25 порты переправляются на один
>25

Спасибо, поправил на соответствующие порты. Просто скопировал правила и не исправил порты...
>http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET

Данный момент тоже исправил...