The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Эксперимент по поднятию GRE туннеля через NAT (linux gre tunnel nat pptp)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, gre, tunnel, nat, pptp,  (найти похожие документы)
Date: Tue, 16 Dec 2003 21:26:31 +0500 From: Aleksey Barabanov <abb@wessen.ru> Newsgroups: ftn.ru.linux Subject: Эксперимент по поднятию GRE туннеля через NAT 1.Приватный хост. 10.0.0.2 -------------------------- # ip tunnel add net1 mode gre remote 192.168.0.1 local 10.0.0.2 ttl 255 # ip link set net1 up # ip addr add 192.168.100.1 dev net1 # ip route add 192.168.100.0/24 dev net1 # ip addr sh 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:05:5d:74:dd:5d brd ff:ff:ff:ff:ff:ff inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0 inet6 fe80::205:5dff:fe74:dd5d/64 scope link 3: sit0@NONE: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 4: gre0@NONE: <NOARP> mtu 1476 qdisc noop link/gre 0.0.0.0 brd 0.0.0.0 5: net1@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue link/gre 10.0.0.2 peer 192.168.0.1 inet 192.168.100.1/32 scope global net1 2.Маскарадер изнутри 10.0.0.1,eth1 3.Маскарадер снаружи 192.168.0.184, eth0 ---------------------------------------- # modprobe iptables_nat # modprobe ip_nat_pptp # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # echo "1" > /proc/sys/net/ipv4/ip_forward 4.Сервер 192.168.0.1 --------------------- # modprobe ip_gre # ip tunnel add net1 mode gre remote 192.168.0.184 local 192.168.0.1 ttl 255 # ip link set net1 up # ip addr add 192.168.100.2 dev net1 # ip route add 192.168.100.0/24 dev net1 # ip addr sh 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host [.....поскипаны реальные адреса моего рутера ;).....] 3: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:c0:df:07:df:26 brd ff:ff:ff:ff:ff:ff inet6 fe80::2c0:dfff:fe07:df26/64 scope link 4: eth2: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:c0:df:08:72:ea brd ff:ff:ff:ff:ff:ff inet6 fe80::2c0:dfff:fe08:72ea/64 scope link 5: zbr0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc noqueue link/ether 00:c0:df:07:df:26 brd ff:ff:ff:ff:ff:ff inet 192.168.0.1/24 brd 192.168.0.255 scope global zbr0 inet6 fe80::2c0:dfff:fe07:df26/64 scope link 6: sit0@NONE: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 7: gre0@NONE: <NOARP> mtu 1476 qdisc noop link/gre 0.0.0.0 brd 0.0.0.0 8: net1@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue link/gre 192.168.0.1 peer 192.168.0.184 inet 192.168.100.2/32 scope global net1 Все ! Теперь проверяем. 1.Приватный хост. -------------------- # ifconfig net1 net1 Link encap:UNSPEC HWaddr 0A-00-00-02-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.100.1 P-t-P:192.168.100.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:664 (664.0 b) TX bytes:808 (808.0 b) # ping -R -c 1 192.168.100.2 PING 192.168.100.2 (192.168.100.2) 56(124) bytes of data. 64 bytes from 192.168.100.2: icmp_seq=1 ttl=64 time=0.382 ms RR: 192.168.100.1 192.168.100.2 192.168.100.2 192.168.100.1 - --- 192.168.100.2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.382/0.382/0.382/0.000 ms # ifconfig net1 net1 Link encap:UNSPEC HWaddr 0A-00-00-02-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.100.1 P-t-P:192.168.100.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1 RX packets:7 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:788 (788.0 b) TX bytes:956 (956.0 b) 2.Сервер. ----------- # ping -R -c 1 192.168.100.1 PING 192.168.100.1 (192.168.100.1) 56(124) bytes of data. 64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.431 ms RR: 192.168.100.2 192.168.100.1 192.168.100.1 192.168.100.2 - --- 192.168.100.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.431/0.431/0.431/0.000 ms # ping -c 1 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. - --- 10.0.0.1 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms # ping -c 1 10.0.0.2 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. >From xxx.xx.xx.xx: icmp_seq=1 Destination Host Unreachable [здесь помарочка - ответ с реального адреса с реального дефолтного гейта ;)] [оно и понятно, так как сетка 10.0.0.0 у меня маскарадится, а не рутится ] - --- 10.0.0.2 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms -------------------------- Конечно это хак. Это будет жить нормально если только первые пакеты придут со стороны маскированного хоста. Иначе коннтрак не сможет правильно его размаскировать. Hо это и ясно. Туннель то ведь несимметричный. Если в этот туннель воткнуть ppp, то после инициализации со стороны клента он будет жить "вечно" за счет LCP. Hу и естественно, описанное "решение" никак не отменяет тот факт, то и обычный pptp туннель тоже прекрасно маскарадится.
From: Aleksey Barabanov <abb@wessen.ru> > Что там в /proc/net/ip_conntrack на маскарадере? :) Пинги это ж не сессия. Здесь только подсчет пакетов детально продемонстрирован. И естественно в коннтраке в проц пусто. Но сам коннтрак работает. Подождать немного и канал умирает. Прочистить и снова пойдет. А загрузить на маскарадере ip_gre и, думаю, все встанет колом. Точнее я не разбирался в каком из модулей точно что как включено. Но в рекомендациях указано, что надо только инициировать загрузку iptables_nat и вроде как все далее само. Это первая половина правды. Действительно (думаю это зависит от многого не разбирался от чего) если я первым его не грузил туннел правильно не создавался. Автозагрузка все делала как-то не так. Но и с ним, по опыту с pptp, приходилось еще руками грузить специфичные модули. Вот для чистого gre я тоже добавил еще модуль. Опять же не разбирался точно, но думаю что они просто друг у друга перехватывают хуки. Но не буду настаивать.
From: opennet Рекомендую по данному вопросу посмотреть на модули ip_nat_proto_gre и ip_conntrack_proto_gre http://cvs.netfilter.org/netfilter-extensions/helpers/pptp/

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Yury Bokhoncovich (?), 14:40, 26/04/2004 [ответить]  
  • +/
    Если туннели делаются с самих виндозных машин на виндозный же сервак где-то на просторах инета, всё прекрасно маскарадится.
     
     
  • 3, romanr (?), 16:14, 01/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    видать не встретился маскарад между виндозными машинами на просторах интернета, такое часто случается ;)
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру