我有一个正在运行的 OpenVPN 服务器,它为客户端提供 IPv4 和 IPv6 连接。我试图向该系统添加一个 OpenVPN 客户端,它连接到另一个可以提供默认路由的 OpenVPN 服务器,但实际上我想为该客户端禁用此功能。与此服务器一起运行的 OpenVPN 客户端的目的只是为了提供对该其他服务器上某些 IPv4 和 IPv6 子网的访问。当我启用 OpenVPN 客户端时,IPv4 工作正常,但当连接到其他服务器的客户端运行时,服务器本身无法从互联网获取任何 IPv6 流量。
服务器上的 OpenVPN 服务以 运行,openvpn@server
连接到另一个 OpenVPN 服务器的客户端以 运行,openvpn@client
最后一个服务阻止服务器在其 IPv6 地址上接收任何eth0
互联网接口信息。openvpn@client
停止后,SSH 和 ping 请求等 IPv6 服务可以工作,但其他服务则不行。
openvpn@server
这是...的配置。
port 9976
proto udp
proto udp6
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.7.0.0 255.255.255.0
server-ipv6 fd0a:beef:b00b:cafe::/112
ifconfig-pool-persist ipp.txt
tun-ipv6
push tun-ipv6
push "route-ipv6 2000::/3"
push "dhcp-option DNS 10.7.0.1"
push "dhcp-option DNS6 fd0a::beef:b00b:cafe::1"
push "redirect-gateway def1 bypass-dhcp"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_emjWqXeJkx9FLowU.crt
key server_emjWqXeJkx9FLowU.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3
openvpn@home
这是...的配置。
client
proto udp
explicit-exit-notify
remote 139.218.29.235 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_3UvQL2AfKLys5yTS name
auth SHA256
auth-nocache
cipher AES-256-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
route-nopull
pull-filter ignore route-ipv6
pull-filter ignore redirect-gateway
route 192.168.1.0 255.255.255.0
route 192.168.84.0 255.255.255.0
route-ipv6 2403:ffff:ffff:ffff::/64 #redacted
route-ipv6 fd00:beef:b00b:cafe::/64
当两者都激活时,您将获得这些地址和路由,并且我看不到任何冲突。 (我已经编辑了服务器的 IPv6 互联网地址),但是当第二个 OpenVPN 服务运行时,eth0 IPv6 被破坏了……
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2404:ffff:ffff:ffff:216:3eff:fee2:12fe/64 scope global dynamic mngtmpaddr
valid_lft 4sec preferred_lft 3sec
inet6 fe80::216:3eff:fee2:12fe/64 scope link
valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 500
inet6 fd0a:beef:b00b:cafe::1/112 scope global
valid_lft forever preferred_lft forever
inet6 fe80::b9ec:b1f8:e65:7f3d/64 scope link stable-privacy
valid_lft forever preferred_lft forever
8: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 500
inet6 fd08:beef:b00b:cafe::3/112 scope global
valid_lft forever preferred_lft forever
inet6 fe80::f807:1850:2b87:348/64 scope link stable-privacy
valid_lft forever preferred_lft forever
2403:ffff:ffff:ffff::/64 dev tun1 metric 1024 pref medium
2404:ffff:ffff::/64 dev eth0 proto kernel metric 256 expires 4sec pref medium
fd00:beef:b00b:cafe::/64 dev tun1 metric 1024 pref medium
fd08:beef:b00b:cafe::/112 dev tun1 proto kernel metric 256 pref medium
fd0a:beef:b00b:cafe::/112 dev tun0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev tun0 proto kernel metric 256 pref medium
fe80::/64 dev tun1 proto kernel metric 256 pref medium
default via fe80::ec4:7aff:fecc:1ca7 dev eth0 proto ra metric 1024 expires 1sec hoplimit 64 pref medium
default via fe80::ec4:7aff:fe7c:bf1f dev eth0 proto ra metric 1024 expires 4sec hoplimit 64 pref high
我不确定这里出了什么问题,而且服务openvpn@home
似乎没有分配上述任何默认路由,正如我的配置文件所述。我不明白为什么这会在服务启动时阻止 eth0 获取任何 IPv6 流量。IPv4 工作正常,我似乎能够在我的客户端配置中获取这些 LAN 子网。另一个 OpenVPN 服务器旨在提供互联网,但我不想从它那里获得互联网。
答案1
我意识到自己做错了,于是我改变了连接到另一个 OpenVPN 服务器的客户端配置,并简单地注释掉了我的静态 IPv6 路由。
#route-ipv6 2403:4800:3f02:1483::/64
#route-ipv6 fd00:beef:b00b:cafe::/64
相反,在第二台服务器上,我/etc/openvpn/ccd
为该客户端创建了一个客户端配置文件,将其 IPv6 子网引用为 iroute……
iroute-ipv6 fd08:beef:b00b:cafe::/64
事情开始顺利了!