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
# 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 у меня маскарадится, а не рутится ]
Конечно это хак. Это будет жить нормально если только первые пакеты придут
со стороны маскированного хоста. Иначе коннтрак не сможет правильно его
размаскировать. 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/
1312 Прочтений • [Эксперимент по поднятию GRE туннеля через NAT (linux gre tunnel nat pptp)] [08.05.2012] [Комментариев: 0]