handler Опубликовано 23 июля, 2009 Жалоба Опубликовано 23 июля, 2009 И снова здравствуйте! Имеем роутер на базе Fedora10 с 5-ю сетевыми картами: eth0 - смотрит в локаль (192.168.0.0/16) eth1-4 - смотрят в нет (ч/з адсл-модемы) Адреса клиентам раздаются ДНСП (192.169.0.0/16) Клиенты подключаются к интернет ч/з ВПН Скрипт инициализации ВПН-соединения: (/etc/ppp/ip-up) $1 - имя создаваемого интерфейса (ppp0) $5 - адрес, насначаемый клиенту (к примеру 192.168.10.20) $4 - адрес роутера (192.168.1.1) iptables -I INPUT -i $1 -s $5 -d $4 -j ACCEPT iptables -I INPUT -i $1 -s $5 -d $4 -j LOG --log-prefix "INPUT " эти правила работают, клиент видит сервер, но в логи ничего не попадает iptables -I FORWARD -i $1 -s $5 -j ACCEPT iptables -I FORWARD -i $1 -s $5 -j LOG --log-prefix "FORWARD " iptables -t nat -I POSTROUTING -i eth1 -s $5 -j SNAT --to-source (ip_eth1) iptables -t nat -I POSTROUTING -i eth1 -s $5 -j LOG --log-prefix "POSTROUTING" iptables -I FORWARD -o $1 -m state --state RELATED,ESTABLISHED -j LOG --log-prefix "BACKWARD" iptables -I FORWARD -o $1 -m state --state RELATED,ESTABLISHED -j ACCEPT Правила форвардинга и построутинга в логи попадают, а обратный форвардинг - нет в логи пишет: Jul 23 18:44:36 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34218 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:44:36 server kernel: POSTROUTING PPP0: IN= OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34218 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:44:39 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34222 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:44:45 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34267 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:44:58 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35074 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:44:58 server kernel: POSTROUTING PPP0: IN= OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35074 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:45:01 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35076 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Jul 23 18:45:07 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35078 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 Как правильно разрешить форвардинг клиентам? Цитата
gogi Опубликовано 24 июля, 2009 Жалоба Опубликовано 24 июля, 2009 Я не совсем понял Вашу схему. Если проблема ещё не решилась, нарисуйте более подробную схемку с указанием клиента, выхода в инет, на каком интерфейсе поднят vpn, адресов интерфейсов и т.д.. Цитата
handler Опубликовано 29 июля, 2009 Автор Жалоба Опубликовано 29 июля, 2009 gogi писал(а) Fri, 24 July 2009 16:14 Я не совсем понял Вашу схему. Если проблема ещё не решилась, нарисуйте более подробную схемку с указанием клиента, выхода в инет, на каком интерфейсе поднят vpn, адресов интерфейсов и т.д.. Имеется компьютер с пятью сетевыми картами eth0, eth1, eth2, eth3, eth4 и ОС Fedora10 Сетевая карта eth0 имееет адрес 192.168.1.1/16 и смотрит в локальную сеть Сетевая карта eth1 имеет адрес 10.10.10.10/24 и смотрит на адсл-модем Сетевая карта eth2 имеет адрес 10.10.20.10/24 и смотрит на адсл-модем Сетевая карта eth3 имеет адрес 10.10.30.10/24 и смотрит на адсл-модем Сетевая карта eth4 имеет адрес 10.10.40.10/24 и смотрит на адсл-модем Всем пользователям назначены статические адреса в диапазоне 192.168.0.0/16 Далее фаервол настроен на статическую маршрутизацию адресов, т. е. все пользователи разделены на четыре группы и каждая группа роутится на один из модемов. Для этого созданы четыре таблицы маршрутизации. Так есть сейчас. Наша задача: динамически распределять пользователей по модемам по следующей схеме: 1. Пользователь получает динамический адрес от DHCP-сервера из диапазона 192.169.0.0/16 2. Пользователь создает впн-подключение к серверу по логину/паролю 3. скрипт инициализации ppp-канала прописывает вышеуказанные правила форвардинга и маршрутизации, назначая ему динамически один из четырех маршрутов. В последнем пункте загвоздка с маршрутизацией. Для чистоты эксперимента скрипт сбрасывает вначале все таблицы маршрутизации и правола iptables но клиент не может выйти в интернет. буду рад Вашим соображениям Цитата
gogi Опубликовано 29 июля, 2009 Жалоба Опубликовано 29 июля, 2009 Выложите еще таблицы маршрутизации на клиенте и на роутере до и после поднятия впн. И еще фактически действующие правила (iptables-save) тоже до и после соединения. Цитата
handler Опубликовано 16 августа, 2009 Автор Жалоба Опубликовано 16 августа, 2009 притащил на работу старенький целерон, поставил на нем роутер и упражняюсь на нем в написании фаервола. Когда будут результаты - отпишусь Цитата
SignFinder Опубликовано 17 августа, 2009 Жалоба Опубликовано 17 августа, 2009 Цитата: все пользователи разделены на четыре группы и каждая группа роутится на один из модемов. Для этого созданы четыре таблицы маршрутизации. чем роутятся??? iproute2 ? Тогда ip ro ls в студию и ip ru ls Цитата
handler Опубликовано 23 августа, 2009 Автор Жалоба Опубликовано 23 августа, 2009 # ip ro ls 10.10.20.0/24 dev eth2 proto kernel scope link src 10.10.20.10 10.10.50.0/24 dev eth1 proto kernel scope link src 10.10.50.10 10.10.30.0/24 dev eth3 proto kernel scope link src 10.10.30.10 10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.10 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 10.10.40.0/24 dev eth4 proto kernel scope link src 10.10.40.10 169.254.0.0/16 dev eth2 scope link metric 1002 169.254.0.0/16 dev eth3 scope link metric 1003 169.254.0.0/16 dev eth4 scope link metric 1004 169.254.0.0/16 dev eth0 scope link metric 1005 169.254.0.0/16 dev eth1 scope link metric 1006 192.168.0.0/16 dev eth0 proto kernel scope link src 192.168.1.1 default nexthop via 10.10.10.1 dev eth1 weight 1 nexthop via 10.10.20.1 dev eth2 weight 1 nexthop via 10.10.30.1 dev eth3 weight 1 nexthop via 10.10.40.1 dev eth4 weight 1 ]# ip ru ls 0: from all lookup local 32758: from all fwmark 0x28 lookup RT4 32759: from all fwmark 0x1e lookup RT3 32760: from all fwmark 0x14 lookup RT2 32761: from all fwmark 0xa lookup RT1 32762: from 10.10.40.10 lookup RT4 32763: from 10.10.30.10 lookup RT3 32764: from 10.10.20.10 lookup RT2 32765: from 10.10.10.10 lookup RT1 32766: from all lookup main 32767: from all lookup default для eth1 создано два интерфейсв Цитата
handler Опубликовано 13 сентября, 2009 Автор Жалоба Опубликовано 13 сентября, 2009 Немного изменил конфигурацию: eth0 - 200.200.200.1/24 - смотрит в локальную сеть eth1 - 10.10.10.10/24 - смотрит на адсл-модем правила iptables: FW='/usr/sbin/iptables' IF_LOCAL='eth0' IP_LOCAL='200.200.200.1' NET_LOCAL='200.200.200.0/24' IF_NET='eth1' IP_NET='10.10.10.10' NET_NET='10.10.10.0/24' IF_PPP='ppp+' PPP_NET='100.100.100.0/24' IP_GW1='10.10.10.1' EXT_NET='0/0' echo 1 > /proc/sys/net/ipv4/ip_forward route add default gw $IP_GW1 $FW -F $FW -X $FW -Z $FW -t nat -F $FW -t mangle -F # ************ INPUT ***************************** $FW -A INPUT -i lo -j ACCEPT $FW -A INPUT -i $IF_PPP -j ACCEPT $FW -A INPUT -i $IF_LOCAL -s $PPP_NET -j ACCEPT $FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p tcp --dport 1723 -j ACCEPT $FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p udp --dport 1723 -j ACCEPT $FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p gre -j ACCEPT $FW -A INPUT -i $IF_LOCAL -j DROP # ************ OUTPUT ***************************** $FW -A OUTPUT -o lo -j ACCEPT $FW -A OUTPUT -o $IF_PPP -j ACCEPT #$FW -A OUTPUT -o $IF_LOCAL -d $PPP_NET -j ACCEPT $FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p tcp --sport 1723 -j ACCEPT $FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p udp --sport 1723 -j ACCEPT $FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p gre -j ACCEPT $FW -A OUTPUT -o $IF_LOCAL -j DROP # ************ FORWARD ***************************** $FW -A FORWARD -i $IF_PPP -d $EXT_NET -j ACCEPT $FW -A FORWARD -s $EXT_NET -d $PPP_NET -j ACCEPT # ************ POSTROUTING ***************************** $FW -t nat -A POSTROUTING -s $PPP_NET -d $EXT_NET -j SNAT --to-source $IP_GW1 [/codebox] iptables-save # Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009 *mangle :PREROUTING ACCEPT [392:27906] :INPUT ACCEPT [383:27310] :FORWARD ACCEPT [9:596] :OUTPUT ACCEPT [288:20286] :POSTROUTING ACCEPT [235:16202] COMMIT # Completed on Tue Sep 15 09:38:29 2009 # Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009 *nat :PREROUTING ACCEPT [128:11077] :POSTROUTING ACCEPT [11:836] :OUTPUT ACCEPT [7:552] -A POSTROUTING -s 100.100.100.0/255.255.255.0 -j SNAT --to-source 10.10.10.1 COMMIT # Completed on Tue Sep 15 09:38:29 2009 # Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009 *filter :INPUT ACCEPT [3:252] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [9:756] -A INPUT -i lo -j ACCEPT -A INPUT -i ppp+ -j ACCEPT -A INPUT -s 100.100.100.0/255.255.255.0 -i eth0 -j ACCEPT -A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT -A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p udp -m udp --dport 1723 -j ACCEPT -A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p gre -j ACCEPT -A INPUT -i eth0 -j DROP -A FORWARD -i ppp+ -j ACCEPT -A FORWARD -d 100.100.100.0/255.255.255.0 -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -o ppp+ -j ACCEPT -A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p tcp -m tcp --sport 1723 -j ACCEPT -A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p udp -m udp --sport 1723 -j ACCEPT -A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p gre -j ACCEPT -A OUTPUT -o eth0 -j DROP COMMIT # Completed on Tue Sep 15 09:38:29 2009 [/codebox] Идея проста: dhcpd раздает адреса клиентам в сети из диапазона 200.200.200.10-250 Далее клиент создает ppp-туннель, получая адрес из диапазона 100.100.100.10-250 Правила INPUT OUTPUT работают, как требуется: ограничивают доступ по eth0 только для установления ppp-соединения, а для ppp-туннелей разрешают. Не работает только FORWARD POSTROUTING - с клиента не пингуется ни eth0(10.10.10.10), ни адсл(10.10.10.1) Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.