У меня есть сервер Fedora с OpenVPN. VPN в режиме tun доступен через IPv4 и IPv6 и успешно маршрутизирует весь трафик IPv4 через сервер OpenVPN. Но маршрутизация трафика IPv6 не работает. Какие-нибудь советы? Вот моя установка:
IPv6-адреса серверных интерфейсов:
ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 MYPREFIX::/65 scope global
valid_lft forever preferred_lft forever
tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
inet6 MYPREFIX:8000::1/65 scope global
valid_lft forever preferred_lft forever
Часть конфига сервера считаю актуальной:
port 1194 # actually, I use another port
proto udp6
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
server-ipv6 MYPREFIX:8000::/65
push "redirect-gateway def1 bypass-dhcp"
push "route-ipv6 2000::/3"
push "dhcp-option DNS 8.8.8.8"
persist-key
persist-tun
Кажется, что к клиенту приходят правильные маршруты:
$ ip -6 r
CLIENT_ISP_NET::/64 dev wlp3s0 proto ra metric 600 pref medium
CLIENT_ISP_NET::/56 via fe80::HOME_AP dev wlp3s0 proto ra metric 600 pref medium
MYPREFIX:: via fe80::HOME_AP dev wlp3s0 proto static metric 600 pref medium
MYPREFIX:8000::1 dev tun0 proto kernel metric 256 pref medium
MYPREFIX:8000::/65 dev tun0 proto kernel metric 256 pref medium
2000::/3 via MYPREFIX:8000::1 dev tun0 proto static metric 50 pref medium
fe80::HOME_AP dev wlp3s0 proto static metric 600 pref medium
fe80::/64 dev wlp3s0 proto kernel metric 256 pref medium
fe80::/64 dev tun0 proto kernel metric 256 pref medium
default dev tun0 proto static metric 50 pref medium
default via fe80::HOME_AP dev wlp3s0 proto static metric 600 pref medium
Но ping -6 google.de
Одер curl -L6 google.de
блоки и ничего не происходит.
После того, как я сделал sysctl -w net.ipv6.conf.all.forwarding=1
на сервере поведение ping осталось прежним, в то время как curl дает curl: (7) Failed to connect to google.de port 80: Permission denied
.
Моя текущая ставка заключается в том, что что-то не так с настройкой брандмауэра, но я не знаю. Используемый брандмауэр - firewalld (по умолчанию в Fedora). Для IPv4 я включил маскировку, поэтому firewalld настроил всю пересылку автоматически. Для IPv6 все по-другому, поскольку маскировка отсутствует. Некоторые прямые правила iptables из нескольких сообщений в блогах пока не помогли. Не знаю, в чем проблема.