Уважаемые гуру, проверьте, пожалуйста, скрипт для формирования правил 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
|