Клиенты OpenVPN не имеют связи через IPv6

449
Kevin Abraham

Я пытаюсь добавить поддержку туннеля IPv6 на сервер OpenVPN (то есть клиенты могут получить доступ к Интернету IPv6 через VPN).

Маршрутизатор, на котором работает OpenVPN (Netgear WNDR4500v1 с Tomato v1.28-140), использует IPv6 через Hurricane Electric (и с маршрутизацией / 64, и с маршрутизацией / 48) - 2001: xxxx: 7: 3b3 :: 2 - это адрес WAN IPv6 - 2001: xxxx: 8: 3b3 :: 1/64 направляется на интерфейс LAN (br0) - 2001: xxxx: e1ca :: / 48 направляется на интерфейс OpenVPN (tun21)

IPv6 работает из локальной сети, test-ipv6.com возвращает 10/10.

Я могу подключиться от клиента к серверу OpenVPN через IPv4 или IPv6, и клиент получает адрес v6, который находится в префиксе 2001: xxxx: e1ca :: / 48. Тем не менее, клиент не имеет подключения IPv6 вообще. Я пробовал это с несколькими клиентами (Tunnelblick / macOS, OpenVPN для Android, OpenVPN Connect / iOS). test-ipv6.com говорит: «IPv6-адрес не обнаружен». Кроме того, это отображается в журналах сервера:

SM-N910V/2610:xxxx:7f97 MULTI: bad source address from client [2610:xxxx:7f97], packet dropped 

Я посмотрел на вики OpenVPN IPv6, а также руководство Якоба Д. Эванса среди других ресурсов. Конфигурации сервера / клиента приведены ниже.

Конфигурация сервера:

# Automatically generated configuration daemon server 192.168.2.0 255.255.255.0 proto udp port 1194 dev tun21 cipher AES-256-CBC comp-lzo adaptive keepalive 15 60 verb 3 push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 192.168.1.1" push "redirect-gateway def1" tls-auth static.key 0 ca ca.crt dh dh.pem cert server.crt key server.key status-version 2 status status  # Custom Configuration proto udp6  topology subnet push "topology subnet"  server-ipv6 2001:xxxx:e1ca::/64 push "route-ipv6 2001:xxxx:8:3b3::/64" push "route-ipv6 2001:xxxx:e1ca::/48"  push "comp-lzo adaptive" verb 4  auth sha256 

Конфигурация клиента:

client dev tun  remote vpn.server.com 1194 udp6 float nobind  persist-key persist-tun  remote-cert-tls server cipher AES-256-CBC key-direction 1 auth sha256  explicit-exit-notify comp-lzo adaptive pull  <ca>...</ca> <cert>...</cert> <key>...</key> <tls-auth>...</tls-auth> 

ip -6 route перед подключением к VPN:

2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium 2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 256 pref medium default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium 

ip -6 route после подключения к VPN:

2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium 2001:xxxx:8:3b3::/64 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium 2001:xxxx:e1ca::1 dev tun0 proto kernel metric 50 pref medium 2001:xxxx:e1ca::1 dev tun0 proto kernel metric 256 pref medium 2001:xxxx:e1ca::1000 dev tun0 proto kernel metric 50 pref medium 2001:xxxx:e1ca::/48 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium 2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 256 pref medium default dev tun0 proto static metric 50 pref medium default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium 

ip -6 route после запуска команд, опубликованных @grawity ниже:

default from 2001:xxxx:e1ca::/64 dev tun0 metric 1024 pref medium default from 2610:xxxx::/64 via 2610:xxxx::1 dev enp0s3 metric 1024 pref medium 2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium 2001:xxxx:8:3b3::/64 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium 2001:xxxx:e1ca::1 dev tun0 proto kernel metric 50 pref medium 2001:xxxx:e1ca::1 dev tun0 proto kernel metric 256 pref medium 2001:xxxx:e1ca::1000 dev tun0 proto kernel metric 50 pref medium 2001:xxxx:e1ca::/48 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium 2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 100 pref medium fe80::/64 dev enp0s3 proto kernel metric 256 pref medium default dev tun0 proto static metric 50 pref medium default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium 

У кого-нибудь есть идеи относительно того, что происходит?

Журналы OpenVPN: https://gist.github.com/abraha2d/f339ff163dd93e20ba3b499c69d6abe3

0
Таким образом, сервер OV может общаться через IPv6, но не через клиента? - Были ли назначены какие-либо адреса IPv6 клиентскому компьютеру, и является ли клиентский компьютер двойным стеком (_ie_: IPv4 и IPv6)? Кроме того, у вас отключена маршрутизация пакетов (IPv6) в конфигурации маршрутизатора, так как это может помешать сетевым машинам обмениваться данными друг с другом через пакеты IPv6? Y Treehugger Cymru 5 лет назад 0
@YTreehuggerCymru Клиенту назначается адрес IPv6 сервером OpenVPN (2001: xxxx: e1ca :: 1000). Клиент определенно является двойным стеком, так как IPv6 отлично работает вне VPN (согласно test-ipv6.com). Маршрутизация IPv6 включена в конфигурации маршрутизатора. Kevin Abraham 5 лет назад 0
Тогда все, что приходит на ум, это проблемы, связанные с локальными сетями: OpenVPN является абсолютным чем-то не упоминаемым по отношению к ним, и мне пришлось переключиться на подсеть 10.200.0, потому что моя реализация OV не будет хорошо работать с подсетями 192.168. Y Treehugger Cymru 5 лет назад 0
@YTreehuggerCymru Я подумал, что у IPv6 таких проблем не будет, поскольку адреса везде уникальны. Моя интуиция говорит мне, что `MULTI: неверный адрес источника` является ключом к решению этой проблемы. Может быть, некоторые детали конфигурации я пропускаю? Kevin Abraham 5 лет назад 0
У вас есть простой Linux-клиент, и можете ли вы протестировать его, добавив дополнительные маршруты _after_, устанавливающие соединение вручную? (Подключитесь, затем добавьте `ip route add :: / 0 из 2001: xxxx: e1ca :: / 64 dev tun0` * и *` ip route add :: / 0 из 2610: xxx / 64 через dev eth0`.) grawity 5 лет назад 0
Во второй команде я заменил `2610: xxxx :: 1` на``и` enp0s3` вместо `eth0`. Ничего не изменилось, IPv6 все еще не работает. Kevin Abraham 5 лет назад 0
@grawity Я обновил вопрос с маршрутами до / после подключения к VPN Kevin Abraham 5 лет назад 0
Going back over your original question, I am beginning to think that this is not related to OV at all: test-ipv6.com says "No IPv6 address detected" says to me that you might have an underlying network issue (probably in the router configuration bearing in mind the variety of clients you have used for testing). Are you able to provide any details of your router's IPv6 configuration? Y Treehugger Cymru 5 лет назад 0
@YTreehuggerCymru The router running OpenVPN has Tomato Shibby v1.28-140 installed. I've put the HE IPv6 tunnel details into the Basic IPv6 page. I use the VPN Tunneling > OpenVPN Server page to configure OpenVPN, which generates the config file above. I had to add `ip6tables -I INPUT 1 -p udp --dport 1194 -j ACCEPT` to the Firewall tab of Scripts, since the OpenVPN gui doesn't take of that. Can't really think of anything else that's non-standard from a default Tomato install. What other details are needed? Kevin Abraham 5 лет назад 0
В настоящее время я использую Draytek (проприетарный, без DD-WRT или обычай), но то, что вы сделали, выглядит хорошо, поэтому в моем случае и в крайнем случае я бы прибегнул к «Hello World» и наращиванию; то есть: отбросьте все брандмауэры и тому подобное, перейдите на абсолютно простое соединение (используя IPv6) и перейдите оттуда. Если это все еще не помогло, вы, по крайней мере, устранили множество возможностей. Y Treehugger Cymru 5 лет назад 0
These are my absolute basics snippets for IPv4 (not sure of IPv6 config, yet, so I will look that up and test later), but it should be simple to change them: // dev tun remote 10.200.0.6 ifconfig 10.200.0.1 10.200.0.2 secret static.key cipher AES-256-CBC persist-tun persist-key // dev tun remote 10.200.0.5 ifconfig 10.200.0.2 10.200.0.1 user nobody group nobody secret static.key cipher AES-256-CBC persist-tun persist-key Y Treehugger Cymru 5 лет назад 0
@YTreehuggerCymru Как вы думаете, будет ли иметь значение, если я перенесу сервер OV на компьютер внутри локальной сети? Таким образом, я могу использовать последнюю версию и тому подобное, и у меня больше контроля над конфигурацией. Машина будет работать под управлением Linux. Полагаю, все, что мне нужно сделать, это перенаправить порт 1194 / tcp, а также маршрутизировать / 64. Я мог бы, вероятно, воссоздать ваш конфиг точно и посмотреть, работает ли это. Kevin Abraham 5 лет назад 0
Приношу свои извинения за то, что больше не общаюсь (работа в избирательных кампаниях делает меня более занятым, чем мне бы хотелось). Я думаю, что перенос вашей конфигурации с маршрутизатора на компьютер на конфигурацию компьютера - это определенно то, что вы должны попробовать (я часто обнаруживал, что реализации маршрутизатора имеют странную функциональность, ведут себя не так, как ожидалось, или нуждаются в определенных параметрах, чтобы заставить их вести себя как ожидается, плюс библиотеки будут зависеть от прошивки и, таким образом, могут быть устаревшими). Код, который я вам дал, должен работать для IPv4, и теперь может быть доступен более новый алгоритм. Y Treehugger Cymru 5 лет назад 0
Чтобы создать статический ключ (linux, командная строка): openvpn --genkey --secret static.key ... и мое собственное наблюдение относительно IP-адресов: два _ifconfig_ IP-адреса, которые OV будет использовать при установлении соединения: не настроен на моем маршрутизаторе, и мне абсолютно не нужно переконфигурировать мой маршрутизатор, чтобы разрешить их использование, поскольку они являются частью той же подсети 255.255.255.0, что и два других адреса 10.200.0 (10.200.0.5 и 10.200.0.6), поэтому OpenVPN разрешено использовать их через адаптер OpenVPN и DHCP. Y Treehugger Cymru 5 лет назад 0
Ключом к этому является получение базовой настройки, которая затем может быть настроена для работы в качестве IPv6, а не просто IPv4, а затем добавление ваших требований к тому, что вы хотите, тестирование по пути, чтобы увидеть, где что-то ломается. В этот момент вы, надеюсь, сможете точно определить, что сломало, что и где, и сможете это исправить; после чего конфигурацию можно перенести обратно на маршрутизатор, после чего вы будете точно знать, вызывает ли конфигурация ваш маршрутизатор, в отличие от машины, проблему. Y Treehugger Cymru 5 лет назад 0
@YTreehuggerCymru Я сделаю это, и обновлю здесь, как это идет. Kevin Abraham 5 лет назад 0
Справедливо, я тоже об этом не забыл. Y Treehugger Cymru 5 лет назад 0

1 ответ на вопрос

0
Michael Hampton

Вам не хватает опции push в конфигурации вашего сервера.

У тебя есть:

push "redirect-gateway def1" 

Вы также должны иметь ipv6возможность, а именно:

push "redirect-gateway def1 ipv6" 
Я пробовал с / без опции `push" redirect-gateway def1 ipv6 "`. Без изменений. Kevin Abraham 5 лет назад 0