Я пытаюсь реализовать NAT64 с тайгой на своем сервере и дошел до точки, когда не знаю, как действовать дальше.
Мой сервер подключен к Интернету через один IPv4-адрес и один / 64-адресный блок IPv6. Он обслуживает все виды вещей. По причинам, я также использую некоторые контейнеры LinuX (LXC). Это эксклюзивный IPv6. Я реализовал мост (br0) в своей хост-системе и переключил адреса с eth0 на br0. Мои контейнеры успешно взаимодействуют друг с другом по IPv6. С помощью mod_proxy на моем хосте я также мог подключить свои веб-серверы только с ipv6 (LXC) к Интернету IPv4. Но можно сказать, только в одном направлении.
Для некоторых функций автоматического обновления мне нужен NAT64 + DNS6, потому что некоторые серверы обновлений не поддерживают IPv6.
Предположим следующее и остерегайтесь того, что IP-адреса на самом деле не используются.
Хост br0:
inet address: 10.0.0.1 # external IP
inet6 address: 2a01::1/64 # external IP
LXC eth0:
# external IP, some ip6tables forward rules implemented on the host
inet6 address: 2a01::2/64
Я установил тайгу на свой хост и настроил ее так:
tun-device nat64
ipv4-addr 192.168.255.1
prefix 2a01:0:0:0:64::/96
map 192.168.255.2 2a01::2
Тайга автоматически выбирает IPv6-адрес из этой подсети / 96. Затем я создал интерфейс.
$>tayga --mktun
Теперь вы должны добавить каждый адрес IPv4 и IPv6 в интерфейс nat64. Согласно FAQ использовать одни и те же IP-адреса для хоста - не лучшая идея. С другой стороны, заявлено использование (внутренних) адресов маршрутизаторов. Но я мог взять и совершенно другие, и тогда меня попросили добавить нужные маршруты. Позвольте мне процитировать кое-что:
# ip link set nat64 up
# ip addr add 192.168.0.1 dev nat64 (replace with your router's IPv4 address)
# ip addr add 2001:db8:1::1 dev nat64 (replace with your router's IPv6 address)
# ip route add 192.168.255.0/24 dev nat64
# ip route add 2001:db8:1:ffff::/96 dev nat64
Я не знаю, что мне делать. Какие адреса мне использовать? Просто использовать какие-то частные адреса IPv4 / IPv6? А что еще нужно? Один источник говорит о добавлении некоторых правил пересылки (я уже изменил eth0 на br0, поскольку использую br0):
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables -A FORWARD -i br0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i nat64 -o br0 -j ACCEPT
Дело в том, что я пробовал, и однажды я смог
ping6 2a01:0:0:0:64::192.168.255.1
на моем хосте. Но мне не удалось заставить мой LXC разговаривать с какой-либо системой. Не 2a01: 0: 0: 0: 64 :: 192.168.255.1 или, может быть, 2a01: 0: 0: 0: 64 :: 8.8.8.8 (Google).
Прямо сейчас меня не волнует еще не полностью реализованный DNS64. Я установил какой-то пакет debian и (думаю) знаю, как его настроить, просто еще не пробовал.
Источники, с которыми я консультировался: http://www.litech.org/tayga/ http://www.litech.org/tayga/faq.html http://www.litech.org/tayga/README-0.9.2 http://ipvsix.me/?p=106 http://stuartl.longlandclan.yi.org/blog/2011/06/23/nat64dns64-in-gentoo/ http://blog.raorn.name/2012/02/ipv6-only-lan-with-dual-stack-openwrt.html
Обновление 1:
From 2a01::64:0:c0a8:ff01 icmp_seq=1 Destination unreachable: Unknown code 5
Такой адрес тайга выбирает сама. Я пробовал пинговать From 2a01: 0: 0: 0: 64 :: 8.8.8.8. Я добавил упомянутые правила iptables и сделал следующее:
ip link set nat64 up
ip addr add 192.168.255.1 dev nat64
ip addr add 2a01::1 dev nat64
ip route add 192.168.255.0/24 dev nat64
ip route add 2a01:0.0.0.64::/96 dev nat64
Тем не менее, я могу пинговать 2a01: 0: 0: 0: 64 :: 192.168.255.1, но только с моего хоста. Мой LXC даже не может связаться с этим адресом.
Да, я исключил неправильные правила ip6tables.