Debian:OpenVPN上的IPv6-in-IPv4

以下(大致)在我现在有https://www.zagbot.com/openvpn_ipv6_tunnel.html的说明如下:

客户

martin@theoria:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:50:8d:b3:fd:f4 inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::250:8dff:feb3:fdf4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31372164 errors:0 dropped:0 overruns:0 frame:0 TX packets:33131753 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15453951555 (15.4 GB) TX bytes:26797262646 (26.7 GB) Interrupt:23 Base address:0xa000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1985259 errors:0 dropped:0 overruns:0 frame:0 TX packets:1985259 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:347645379 (347.6 MB) TX bytes:347645379 (347.6 MB) sit1 Link encap:IPv6-in-IPv4 inet6 addr: 2001:41d0:2:b353::10/64 Scope:Global inet6 addr: fe80::a08:a/128 Scope:Link UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.10 PtP:10.8.0.9 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:9 errors:0 dropped:0 overruns:0 frame:0 TX packets:14 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1106 (1.1 KB) TX bytes:1598 (1.5 KB) virbr0 Link encap:Ethernet HWaddr 12:86:9c:16:08:fd inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlan0 Link encap:Ethernet HWaddr 00:0e:2e:4e:94:8a UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

服务器

 root@martineve:~# ifconfig eth0 Link encap:Ethernet HWaddr e0:69:95:72:85:77 inet addr:188.165.232.xxx Bcast:188.165.232.255 Mask:255.255.255.0 inet6 addr: fe80::e269:95ff:fe72:8577/64 Scope:Link inet6 addr: 2001:41d0:2:b353::1/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:49817 errors:0 dropped:6 overruns:0 frame:0 TX packets:51419 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:21105790 (20.1 MiB) TX bytes:36400780 (34.7 MiB) Interrupt:20 Memory:fe500000-fe520000 eth0:0 Link encap:Ethernet HWaddr e0:69:95:72:85:77 inet addr:87.98.254.xxx Bcast:87.255.255.255 Mask:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:20 Memory:fe500000-fe520000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:14274 errors:0 dropped:0 overruns:0 frame:0 TX packets:14274 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:10206299 (9.7 MiB) TX bytes:10206299 (9.7 MiB) sit10 Link encap:IPv6-in-IPv4 inet6 addr: 2001:41d0:2:b353::3/64 Scope:Global inet6 addr: fe80::a08:1/128 Scope:Link UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 PtP:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:16000 errors:0 dropped:0 overruns:0 frame:0 TX packets:13254 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:9839924 (9.3 MiB) TX bytes:5791219 (5.5 MiB) 

每台设备可以通过它们之间的IPv6networkingping另一台设备:

客户:

 PING 2001:41d0:2:b353::3(2001:41d0:2:b353::3) 56 data bytes 64 bytes from 2001:41d0:2:b353::3: icmp_seq=1 ttl=64 time=25.3 ms 

服务器:

 PING 2001:41d0:2:b353::10(2001:41d0:2:b353::10) 56 data bytes 64 bytes from 2001:41d0:2:b353::10: icmp_seq=1 ttl=64 time=94.7 ms 

但是,从客户端,我不能访问外面的任何地方。

客户:

 martin@theoria:~$ ip -6 route show 2001:41d0:2:b353::/64 via :: dev sit1 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 via :: dev sit1 proto kernel metric 256 default via 2001:41d0:2:b353::1 dev sit1 metric 1024 martin@theoria:~$ sudo route -A inet6 [sudo] password for martin: Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2001:41d0:2:b353::/64 :: Un 256 0 1 sit1 fe80::/64 :: U 256 0 0 eth0 fe80::/64 :: Un 256 0 0 sit1 ::/0 2001:41d0:2:b353::1 UG 1024 0 0 sit1 ::/0 :: !n -1 1 520 lo ::1/128 :: Un 0 2 56 lo 2001:41d0:2:b353::10/128 :: Un 0 1 3 lo fe80::a08:a/128 :: Un 0 1 0 lo fe80::250:8dff:feb3:fdf4/128 :: Un 0 1 0 lo ff00::/8 :: U 256 0 0 eth0 ff00::/8 :: U 256 0 0 sit1 ::/0 :: !n -1 1 520 lo 

服务器:

 root@martineve:~# ip -6 route show 2001:41d0:2:b353::10 dev sit10 metric 1024 2001:41d0:2:b353::/64 dev eth0 proto kernel metric 256 2001:41d0:2:b353::/64 via :: dev sit10 proto kernel metric 256 2001:41d0:2:b300::/56 dev eth0 proto kernel metric 256 expires 2590467sec fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 via :: dev sit10 proto kernel metric 256 ff00::/8 dev eth0 metric 256 ff00::/8 dev sit10 metric 256 default via fe80::5:73ff:fea0:0 dev eth0 metric 1024 root@martineve:~# route -A inet6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If ::1/128 :: Un 0 1 196 lo 2001:41d0:2:b353::/128 :: Un 0 1 0 lo 2001:41d0:2:b353::/128 :: Un 0 1 0 lo 2001:41d0:2:b353::1/128 :: Un 0 1 101 lo 2001:41d0:2:b353::3/128 :: Un 0 1 3 lo 2001:41d0:2:b353::10/128 :: U 1024 0 0 sit10 2001:41d0:2:b353::/64 :: U 256 0 0 eth0 2001:41d0:2:b353::/64 :: Un 256 0 0 sit10 2001:41d0:2:b300::/56 :: UAe 256 0 2 eth0 fe80::/128 :: Un 0 1 0 lo fe80::a08:1/128 :: Un 0 1 0 lo fe80::e269:95ff:fe72:8577/128 :: Un 0 1 49 lo fe80::/64 :: U 256 0 0 eth0 fe80::/64 :: Un 256 0 0 sit10 ff00::/8 :: U 256 0 0 eth0 ff00::/8 :: U 256 0 0 sit10 ::/0 fe80::5:73ff:fea0:0 UG 1024 0 0 eth0 ::/0 :: !n -1 1 113 lo 

该服务器具有IPv6通用连接性:

 PING aaaa.test-ipv6.com(jason-fesler.f0-8.switch2a.fmt.he.net) 56 data bytes 64 bytes from jason-fesler.f0-8.switch2a.fmt.he.net: icmp_seq=1 ttl=53 time=164 ms 

客户没有:

 PING aaaa.test-ipv6.com(jason-fesler.f0-8.switch2a.fmt.he.net) 56 data bytes ^C --- aaaa.test-ipv6.com ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2015ms 

我试过这个无济于事:

 root@martineve:~# cat /proc/sys/net/ipv6/conf/all/forwarding 1 

我需要做些什么来让客户访问IPv6的大外部世界呢?

您有很多具有相同优先级和不同设备的路由。 你正在路由你的/ 64出eth0这可能会导致你的问题。 对于不同的子网,通常会有不同的/ 64s。

在尝试联系之前,validationnetworking中的IPv6连接。 客户端和主机可以通过IPv6互相ping通。 在路线之前,这一定是有效的。

有些提供商专门为您的服务器和他们的networking之间的路由/ 64。 这些连接可能只支持应该分配给您的外部接口的一个地址。 他们还应该为您的内部networking需求提供/ 48,/ 56或/ 60。

编辑:我再次检查你的路由,并将其与我的比较。 我会build议检查您的ip -6 neigh输出。 在我的情况下,我有一个通过隧道IPv6点对点链接,它不显示我的外部路由器。 看起来您有一个外部地址2001:41d0:2:b353 :: / 64用于外部路由,2001:41d0:2:b300 :: / 56用于内部networking。 尝试使用2001:41d0:2:b300 :: / 64作为您的路由器内部networking块,2001:41d0:2:b301 :: / 64作为远程服务器块。 尝试更像这样的configuration。

服务器:(sit0 – 2001:41d0:2:b300 :: 2)

 default dev eth0 metric 1024 mtu 1480 advmss 1420 hoplimit 0 2000::/3 dev eth0 metric 1024 mtu 1480 advmss 1420 hoplimit 0 2001:41d0:2:b301::/64 via 2001:41d0:2:b301::3 dev sit0 proto kernel metric 256 mtu 1480 advmss 1420 hoplimit 0 

客户:(sit1 – 2001:41d0:2:b301 :: 3)

 default dev sit1 metric 1024 mtu 1480 advmss 1420 hoplimit 0 2000::/3 dev via 2001:41d0:2:b3010::2sit1 metric 1024 mtu 1480 advmss 1420 hoplimit 0 

好的,最终的答案是我原来的链接!

当你正在做这种路由时,你必须指定“ip add neigh proxy [ip] eth0”位。

扩大OP的自我回答。

问题是你的数据包正在上网,但答复没有回来。

您的托pipe服务提供商已经给您一个“on-link”模块(虽然我们不知道肯定是这个模块)。 您可以使用块中的任何地址,但要这样做,您的服务器必须响应该地址的邻居发现请求。 您的服务器将响应2001:41d0:2:b353 :: 1的邻居发现请求,因为它与面向您的提供者的接口相关联,但它不会响应2001:41d0:2:b353 :: 10的邻居发现请求。 因此,您的托pipe服务提供商的路由器不知道将答复发送到客户端发送的数据包的位置。

有几个可能的解决scheme。

一个是使用“ip -6 neigh add proxy 2001:41d0:2:b353 :: 10 eth0”命令来显式地告诉内核,您希望它响应2001:41d0:2:b353 ::的邻居发现请求在eth0上收到10个。 这是一个hacky解决scheme,但不幸的是,与一些提供商,这是你唯一的select。

另一个是要求你的主机提供商给你一个“路由”块。 使用路由块而不是分别为您的块中的每个地址进行邻居发现,他们会将您的服务器视为路由器。

最后的可能是用ip6tables做伪装。 这是比第一个更骇人的select。

PS openvpn现在可以直接承载ipv6stream量,不需要再在隧道内部做隧道了。