TSM Posted May 13, 2006 Posted May 13, 2006 Есть локалка 192.168.0/24 Стоит сервер (Linux), на нем биллинг и все дела, к нему подключен ADSL, на сервере реальный IP на eth0, Skystar смотрит в небо, поднят OpenVPN канал на tap0, после соединения на нем адрес вида 10.255.239.XXX, клиенты цепляются к VPN PPTP серверу, им в зависимости от тарифа выдается адрес либо 192.168.2/24 либо из 192.168.3/24 Необходимо сделать так чтобы из 2/24 ходило все через спутник, а из 3/24 через ADSL. this=192.168.0.251 # IP Сервера в локалке inet=10.255.239.SSS # IP Сервера по спутнику (tap0) adsl=217.107.132.XXX # IP маршрутизатора ( ADSL-модем ) eth0 ext=217.107.132.YYY # Внешний IP серевера iface_cli=eth1 # Локалка iface_inet=tap0 # Спутник iface_adsl=eth0 # ADSL делаю так: echo "1" > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 3128 -j REJECT iptables -t nat -A PREROUTING -p tcp -s 192.168.2.0/24 -d ! 192.168.0.0/24 --dport 80 -j REDIRECT --to-ports 3128 iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d ! 192.168.0.0/24 -j MASQUERADE С этим вопросов нет, все работает на ура, что нужно переправляется на локальный проксик, остальное летит на спутиник ( т.к. deafult gw автоматом ставится ипишник tap0 ) Со второй подсетью проблема - как заставить ее ходить через землю ? iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -d ! 192.168.0.0/24 -o $iface_adsl -j MASQUERADE не работает, думаю маршрут не тот ? Добавляем ip route add ADSL_IP/29 dev eth0 src EXT_IP table T1 ip route add default via ADSL_IP table T1 ip rule add from EXT_IP table T1 т.е. попросту все что идет в T1 заворачиваем на адсл ip rule add from 192.168.3.0/24 table T1 На eth0 tcpdump показывает наличие пакетов от сервера в инет и обратно, на интерфейсе пользователя (192.168.3.1 например ) видно что пакеты идут туда-сюда, происходит какая-то возня и коннект умирет, trcert с машины показывает что все идет через ADSL вроде как, пинг идет. Не могу понять, что не нравится... может быть NAT не знает куда разворачивать пришедшие пакеты на 2.0 или на 3.0? Так вроде же таблица это помнит. Может с каким-нить MTU/MRU/RWIN что-то не так ? Вставить ник Quote
ShumBor Posted May 14, 2006 Posted May 14, 2006 Хм. А если прописать через SNAT? У меня на внеше 4 каналд и 3 подсети хотят через разные каналы... Вроде бы проблем нет. Если что могу завтра на раблоте глянуть таблицы Вставить ник Quote
TSM Posted May 14, 2006 Author Posted May 14, 2006 А подробнее можно, как оно работает ? ) У меня вроде в нате смотрится источник: -s 192.168.3.0/24 Вставить ник Quote
TSM Posted May 18, 2006 Author Posted May 18, 2006 Неужели никто с таким не сталкивался ? Вставить ник Quote
S_ergey Posted May 18, 2006 Posted May 18, 2006 Неужели никто с таким не сталкивался ? iptables -A POSTROUTING -t nat -s 192.168.2.0/24 -j SNAT --to-source 10.255.239.SSS iptables -A POSTROUTING -t nat -s 192.168.3.0/24 -j SNAT --to-source 217.107.132.XXX Вставить ник Quote
TSM Posted May 19, 2006 Author Posted May 19, 2006 Странно, но не работает ... что-то еще нужно кроме SNAT ? Вставить ник Quote
Jugernault Posted May 20, 2006 Posted May 20, 2006 TSM Ну минимум не хватет ip route flush table cache после выполнения ip rule add from EXT_IP table T1 ip rule add from 192.168.3.0/24 table T1 ну и опять же - представь в студию результаты вывода комманд: ip r l t main ip r l t local ip r l t t1 ip ru li ip r g 193.193.193.3 from 192.168.2.XX iif pppXX - 192.168.2.XX и pppXX поставиш тот который сейчас активен. ip r g 193.193.193.3 from 192.168.3.XX iif pppXX - 192.168.2.XX и pppXX поставиш тот который сейчас активен. iptables-save затем выполни tcpdump -i eth0 -n net 192.168.0.0/16 И сесли ты что нибудь там увидиш, то с натом у тебя плохо... Вставить ник Quote
S_ergey Posted May 20, 2006 Posted May 20, 2006 Странно, но не работает ... что-то еще нужно кроме SNAT ? Дай вывод iptables -t nat -nL Вставить ник Quote
v-m-k Posted May 20, 2006 Posted May 20, 2006 Я бы посоветовал метить нужные пакеты MARKом, потом меченные в нужную таблицу заворачивать, сразу завелось у мя именно так. Т.к. у мя unlim по PPPOE, а трафик IP на интерфейсе весит, пробыл в ip rule запихнуть подсеть, но не заработало, как метить стал и по метке заворачивать сразу всё пошло, попробуй метить одним словом. Вставить ник Quote
Jugernault Posted May 21, 2006 Posted May 21, 2006 v-m-k Не заработало потому что кэш не сбросили... ip route flush table cache Вставить ник Quote
v-m-k Posted May 21, 2006 Posted May 21, 2006 Сбрасывал, Linux Advanced Routing Howto хорошо читал и много раз... Хотя фиг знает (я уверен, что у мя просто что-то не получилось), поэтому и предположил, что у человека может быть что-то похожее... Хоть может это и не правильно, но вообще предпочитаю классифицировать трафик файрволом, а потом по меткам и приоритеты выставялть и в таблицы загонять, о5 таки изменять в конечном счёте проще потом :) Вставить ник Quote
Jugernault Posted May 21, 2006 Posted May 21, 2006 v-m-k Ну уж поверь, в данному случаю маркировка абсолютно не причем... Пока клиент не выдаст на гора результаты вывода тех комманд что я перечислил, ничего понять нельзя будет. Слишком сумбурно изложены условия. Вот здается мне что правило ip rule add from EXT_IP table T1 в данном случае лишнее. Но опять же не берусь судить пока не увижу полной картины. Вставить ник Quote
TSM Posted May 21, 2006 Author Posted May 21, 2006 [root@t-lan scripts]# ip r l t main 80.254.111.254 via 217.107.132.233 dev eth0 192.168.2.8 dev ppp0 proto kernel scope link src 192.168.2.1 82.211.136.2 via 217.107.132.233 dev eth0 192.168.2.99 dev ppp1 proto kernel scope link src 192.168.2.1 80.81.208.66 via 217.107.132.233 dev eth0 192.168.2.7 dev ppp5 proto kernel scope link src 192.168.2.1 62.181.47.197 via 217.107.132.233 dev eth0 217.107.132.232/29 via 217.107.132.234 dev eth0 scope link 217.107.132.232/29 dev eth0 scope link 192.168.0.0/24 via 192.168.0.251 dev eth1 scope link 192.168.0.0/24 dev eth1 scope link 192.168.0.0/24 dev dvb0_0 proto kernel scope link src 192.168.0.231 10.255.239.0/24 dev tap0 proto kernel scope link src 10.255.239.158 127.0.0.0/8 dev lo scope link default via 10.255.239.1 dev tap0 ============================================== [root@t-lan scripts]# ip r l t local broadcast 217.107.132.232 dev eth0 proto kernel scope link src 217.107.132.234 broadcast 192.168.0.255 dev eth1 proto kernel scope link src 192.168.0.251 broadcast 192.168.0.255 dev dvb0_0 proto kernel scope link src 192.168.0.231 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 217.107.132.234 dev eth0 proto kernel scope host src 217.107.132.234 local 192.168.0.251 dev eth1 proto kernel scope host src 192.168.0.251 broadcast 10.255.239.0 dev tap0 proto kernel scope link src 10.255.239.158 broadcast 217.107.132.239 dev eth0 proto kernel scope link src 217.107.132.234 local 192.168.2.1 dev ppp5 proto kernel scope host src 192.168.2.1 local 192.168.2.1 dev ppp0 proto kernel scope host src 192.168.2.1 local 192.168.2.1 dev ppp1 proto kernel scope host src 192.168.2.1 local 192.168.0.231 dev dvb0_0 proto kernel scope host src 192.168.0.231 broadcast 192.168.0.0 dev eth1 proto kernel scope link src 192.168.0.251 broadcast 192.168.0.0 dev dvb0_0 proto kernel scope link src 192.168.0.231 local 10.255.239.158 dev tap0 proto kernel scope host src 10.255.239.158 broadcast 10.255.239.255 dev tap0 proto kernel scope link src 10.255.239.158 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 ========================================== [root@t-lan scripts]# ip r l t T1 217.107.132.232/29 dev eth0 scope link src 217.107.132.234 default via 217.107.132.233 dev eth0 ========================================== [root@t-lan scripts]# ip ru li 0: from all lookup local 32764: from 192.168.3.0/24 lookup T1 32765: from 217.107.132.234 lookup T1 32766: from all lookup main 32767: from all lookup 253 =========================================== [root@t-lan scripts]# iptables -t nat -nL Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- 192.168.2.0/24 !192.168.0.0/24 tcp dpt:80 redir ports 3128 Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 192.168.2.0/24 0.0.0.0/0 to:10.255.239.158 SNAT all -- 192.168.3.0/24 0.0.0.0/0 to:217.107.132.234 Chain OUTPUT (policy ACCEPT) target prot opt source destination ============================================= ppp1 Link encap:Point-to-Point Protocol inet addr:192.168.2.1 P-t-P:192.168.2.99 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1 ======================================== [root@t-lan scripts]# ip r g 193.193.193.3 from 192.168.2.99 iif ppp1 193.193.193.3 from 192.168.2.99 via 10.255.239.1 dev tap0 src 192.168.2.1 cache <src-direct> mtu 1400 advmss 1360 iif ppp1 =========================================== [root@t-lan scripts]# ip r g 193.193.193.3 from 192.168.3.99 iif ppp1 193.193.193.3 from 192.168.3.99 via 217.107.132.233 dev eth0 src 192.168.2.1 cache <src-direct> mtu 1400 advmss 1360 iif ppp1 =========================================================== Самое интересное, 192.168.3.99 машина C:>tracert ya.ru 1 2 ms 1 ms <1 мс 192.168.2.1 2 1 ms <1 мс <1 мс router.t-lan.ru [217.107.132.233] и пошло дальше C:>ping ya.ru Ответ от 213.180.204.8: число байт=32 время=56мс TTL=56 Ответ от 213.180.204.8: число байт=32 время=55мс TTL=56 Вот это меня ставит в тупик .. пинги есть, а ничего не работает .... ============================================================ После tcpdump тишина в течении 5 минут, дольше ждать не стал, пакеты локальные туда не летят... А с маршрутизацией действительно беда какая-то ... Не сильно шарю я в ней, учусь :) Спасибо за помощь! Вставить ник Quote
desperado Posted May 23, 2006 Posted May 23, 2006 невозможно штатно сделать сначала нат локальных соединений (от прокси на этом сервере) потом на основании уже измененного адреса источника отроутить приглядись к картинке http://www.opennet.ru/docs/RUS/iptables/mi...es_traverse.jpg выход - добавить после ната -j ROUTE (нужен патч) или вынести проксю и юзай лучше SNAT, IP если что скриптом выцепишь... можно его через ppp-up.local (или как там его) поднимать Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.