Назад | Перейти на главную страницу

Маршрутизация трафика IPv6 через туннель IPv4

Моя текущая ситуация такова, что я хочу использовать IPv6, но в настоящее время не назначен ни один IPv6-адрес. Но у меня есть сервер с интерфейсом двойного стека, включая общедоступный адрес IPv4 и IPv6 (только подсеть / 128). Итак, я подумал: «Эй, а было бы неплохо использовать возможности сервера IPv6?»

Впервые я установил сервер OpenVPN, который направляет весь мой трафик IPv4 через туннель IPv4. Это сработало. После этого я много гуглил и пытался найти решение, позволяющее перенаправить весь трафик IPv6 через этот туннель. Я нашел много руководств, в которых показано, как назначить новый IPv6-адрес из собственной подсети каждому пользователю, подключающемуся к серверу OpenVPN. Но, к сожалению, у меня есть только один IPv6-адрес: адрес моего сервера, который не находится в моей локальной сети (потому что они очень важны для хостера моего сервера, знаете ли ...). Я попытался применить NAT для моего единственного IPv6-адреса позже, аналогично моему IPv4-адресу, но не смог ...


server.conf:

port 1194
proto tcp

dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0
server-ipv6 fe80::/64

ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "route-ipv6 2000::/3"

push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

keepalive 10 120

tls-auth ta.key 0
key-direction 0

cipher AES-128-CBC   # AES
auth SHA256

comp-lzo

user openvpn
group openvpn

persist-key
persist-tun

status openvpn-status.log

verb 3

iptable:

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ens3 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -s fe80::/64 -o ens3 -j MASQUERADE

Адреса IPv6 не представляют ценности, хотя хостинговые службы вряд ли захотят стать туннельными брокерами. IPv6 не требует NAT, хотя есть экспериментальные реализации.

Основное преимущество IPv6 над IPv4 состоит в том, что NAT не требуется. Если вы пытаетесь получить IPv6 в своей локальной сети, настройте локальную сеть для IPv6. Недостатком является необходимость соответствующего брандмауэра, поскольку NAT больше не защищает вашу сеть.

Вы можете использовать 6to4 для создания адреса на основе внешнего IP-адреса вашей локальной сети. Это даст вам блок / 64 для вашей локальной сети. Затем вы можете направить это через свою VPN, чтобы обеспечить доступ IPv6 к вашему серверу. Это не будет глобально маршрутизируемым, поскольку внешние хосты будут маршрутизировать в вашу локальную сеть. (Вы можете попробовать то же самое на своем сервере.) Я задокументировал свой опыт работы с Внедрение IPv6 6to4 на OpenWRT, что в основном применимо к другим серверам на базе Linux (конфигурация отличается).

Однако я бы рекомендовал использовать туннельного брокера. Они предоставят как минимум один / 64 блока и предоставят дополнительные блоки по запросу. Не используйте VPN для IPv6 и используйте брандмауэры для соответствующего ограничения / разрешения доступа. Я переключился на туннельного брокера и задокументировал дополнительную настройку в Внедрение IPv6, часть 2.