Sunday, 19 September 2010

Доступ к IPv6 изнутри OpenVZ контейнера без поддержки IPv6 провайдером

Итак, у нас есть OpenVZ VPS, тяга ко всему новому и ленивый хостер, который ну никак не хочет подключать нэтивную поддержку IPv6, итак, что делать? Упросить хостера включить две фичи для контейнера, а длее действовать самому :)

Для начала для контейнера необходимо включить (это требуется сделать Вашему хостеру, как его упросить - решать Вам) поддержку sit (механизм инкапсуляции IPv6 пакетов в IPv4), на уровне ноды это делается так:
vzctl set 106 --features sit:on --save

А также поддержку опции net_admin:
vzctl set 106 --capability net_admin:on --save

После этого необходимо перезагрузить контейнер:
vzctl restart 106

После этого внутри контейнера появится новый интерфейс sit:
ifconfig sit
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Теперь просто настраиваем его по инструкции из моего блога: http://phpsuxx.blogspot.com/2010/09/ipv6-debian-6to4.html (разве что с поправкой, что echo "ipv6" >> /etc/modules; modprobe ipv6 делать не нужно!)

Если делать по моему мануалу и забыть подключить net_admin, то получим нечто вот такое:
/etc/init.d/networking restart
Reconfiguring network interfaces...if-up.d/mountnfs[venet0]: waiting for interface venet0:0 before doing NFS mounts (warning).
if-up.d/mountnfs[venet0]: waiting for interface sit0 before doing NFS mounts (warning).
if-up.d/mountnfs[venet0:0]: waiting for interface sit0 before doing NFS mounts (warning).
SIOCADDRT: Operation not permitted
Failed to bring up sit0.
done.

А если все нормально, то вуаля:
ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8004::6a) 56 data bytes
64 bytes from 2a00:1450:8004::6a: icmp_seq=1 ttl=56 time=60.0 ms
64 bytes from 2a00:1450:8004::6a: icmp_seq=2 ttl=56 time=59.8 ms
64 bytes from 2a00:1450:8004::6a: icmp_seq=3 ttl=56 time=50.6 ms
64 bytes from 2a00:1450:8004::6a: icmp_seq=4 ttl=56 time=50.1 ms

--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 50.118/55.155/60.026/4.784 ms

У мануала имеется баг - дело в том, что OpenVZ с ноды при каждой перезагрузке переписывает /etc/network/interfaces заново, таким образом всем наши старания оттуда будут тщательно стерты (если пробовать добавлять конфигурацию в /etc/network/interfaces.template, то ничего не происходит, а разбираться влом).

No comments:

Post a Comment

Note: only a member of this blog may post a comment.