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

Как правильно настроить IPv6 с OpenVPN?

Пытаясь найти конфигурацию OpenVPN, которая соответствует моим потребностям, я сделал этот сценарий, чтобы помочь себе во время установки в системе CentOS. Мой файл конфигурации сервера на самом деле выглядит так:

port 1194
proto udp
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.8.0.1"
push "dhcp-options DNS 2a04:52c0:101:xxx::1"
push "redirect-gateway def1 bypass-dhcp"
crl-verify crl.pem
ca ca.crt
cert server.crt
key server.key
tls-auth tls-auth.key 0
dh dh4096.pem
auth SHA256
cipher AES-256-CBC
tls-server
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
status openvpn.log
verb 4

На самом деле он работает отлично, но поскольку я арендовал сервер @ liteserver.nl, и они предоставили мне подсеть / 64, я пытался настроить сервер OpenVPN, чтобы каждый клиент имел один IPv6-адрес для доступа в Интернет с выделенным IP. Итак, я выполнил инструкции по этот страницу для настройки IPv6 для внутреннего использования. И эта страница содержит инструкции для сервера с общедоступным IPv6, то есть 2001: db8: 0: abc :: 100/64 и маршрутизируемой подсетью IPv6 (что, я думаю, вероятно, то, что мне дал liteserver.nl), то есть 2001: db8: 0: 123 :: / 64. Не обращая внимания на разницу в типовых адресах, я настроил свой сервер с общедоступным IPv6 (2a04: 52c0: 101: xxx :: 100/64) и дал клиентам OpenVPN всю подсеть, которую они мне предоставили (2a04: 52c0: 101: xxx :: / 64), вот как на самом деле выглядит мой server.conf:

port 1194
proto udp
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.8.0.1"
push "dhcp-options DNS 2a04:52c0:101:xxx::1"
push "redirect-gateway def1 bypass-dhcp"
crl-verify crl.pem
ca ca.crt
cert server.crt
key server.key
tls-auth tls-auth.key 0
dh dh4096.pem
auth SHA256
cipher AES-256-CBC
tls-server
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
status openvpn.log
verb 4
server-ipv6 2a04:52c0:101:xxx::/64
tun-ipv6
push tun-ipv6
ifconfig-ipv6 2a04:52c0:101:xxx::1 2a04:52c0:101:xxx::2
push "route-ipv6 2a04:52c0:101:xxx::/64"
push "route-ipv6 2000::/3"

Так как подключение IPv4 работает, IPv6 назначается правильно, но я не могу получить доступ к Интернету с помощью IPv6 (согласно test-ipv6.com). Я спрашиваю себя, нужны ли мне две подсети / 64 (одна для частной сети OpenVPN и одна для сам VPN-сервер, поэтому для исходящих подключений), чтобы правильно настроить это или если я что-то пропустил ... в любом случае я бы хотел получить VPN-сервер с частным подключением IPv4 и IPv6 и с общедоступным IPv4 и одним или несколькими IPv6 адрес (а). Скажите, пожалуйста, возможно ли это и как это сделать. Я очень надеюсь, что кто-нибудь сможет мне помочь.

Заранее спасибо.

Я думаю, вам нужно проксировать запросы NDP на ваши общедоступные IPv6-адреса. Я не тестировал это лично, но это теория:

Ваш интернет-провайдер будет отправлять трафик для всей вашей сети IPv6 (2a04: 52c0: 101: xxx :: / 64) на ваш сервер. Это означает, что, когда кто-то в Интернете пытается подключиться к IP-адресу внутри этой сети, трафик будет отправлен на ваш сервер, ожидая, что он знает, как с ним справиться.

У вашего сервера есть адрес в этой сети (2a04: 52c0: 101: xxx :: 100). Когда он получает трафик на другой адрес, он игнорирует его, потому что это не тот адрес, по которому он может идентифицировать себя. Таким образом, трафик, который идет к устройствам, которые получают IP-адрес из этой сети, назначенной OpenVPN, останавливается на вашем сервере.

Чтобы ваш сервер осознал, что он должен получать этот трафик и отправлять его "вниз" через OpenVPN, у вас есть два варианта: использовать другую сеть IPv6 для ваших клиентов OpenVPN (так что традиционная маршрутизация работает) или проксировать трафик в вашу текущую сеть. Первый - лучший вариант, но ваш провайдер не может назначить вам более одного / 64; последнее - проксирование NDP, сродни проксированию ARP в IPv4.

Используя проксирование NDP, ваш сервер будет получать трафик для адресов, не принадлежащих ему, и повторно отправлять его клиентам с тем же IP-адресом, подключенным через OpenVPN. Вам нужно будет сделать это для каждого IP-адреса в вашей сети, который принадлежит клиенту OpenVPN.

В сети StackExchange есть и другие ответы, подробно описывающие это:

Пожалуйста, проверьте эти ответы для более подробного объяснения.