Closed shNanChen closed 6 years ago
环境按照wiki ipv6 VPN advanced 配置,经过测试:
ping6 2600::
无问题:
[root@tplink-wdr4310:~]
$ ping6 2600::
PING 2600:: (2600::): 56 data bytes
64 bytes from 2600::: seq=0 ttl=50 time=309.170 ms
64 bytes from 2600::: seq=1 ttl=50 time=309.138 ms
64 bytes from 2600::: seq=2 ttl=50 time=309.425 ms
ping6 2700::
ping不通,VPS上一样不通,应该是这个IP地址自己的问题。
全都显示
ping6: sendto: Permission denied
, 像是直接在把 2600::/7 网段给短路了?
你自己用ip -6 route
检查下是不是忘加路由表了。
另外,2个 ipv6 wiki 在我这 OPENVZ 的 VPS上都不能正常配置,
搬瓦工按照wiki ipv6 VPN advanced 可以正常配置。
wiki ipv6 VPN advanced 配置又没办法让路由下面的客户端用自己的ipv6地址翻墙, 最终我只能在 openwrt client side 配置 ipv6 nat。
教程本身是为电脑作为客户端写的,如果你想运行在路由器上并把ipv6分配给路由器后面的机器,需要自己在教程基础上做改动,ipv6 nat不是必须的。
ip -6 route
没有路由表就应该是timeout
,而不是直接ping6: sendto: Permission denied
ip -6 addr del 2607:8700:****:****:abcd::2/80 dev tun200
删除接口地址后就可以ping6
了
也奇怪的是路由器下面的电脑ping6 2600::
却一直是正常的,traceroute6
也一直是正常走的ISP的ipv6网络
root@WDR4310:~# ifconfig tun200
tun200 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.17.2 P-t-P:192.168.17.1 Mask:255.255.255.255
inet6 addr: fe80::e293:****:****:3a42/64 Scope:Link
inet6 addr: 2607:8700:****:****:abcd::2/80 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:7042 errors:0 dropped:0 overruns:0 frame:0
TX packets:5710 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:2346366 (2.2 MiB) TX bytes:1119438 (1.0 MiB)
root@WDR4310:~# ping6 2600::
PING 2600:: (2600::): 56 data bytes
ping6: sendto: Permission denied
root@WDR4310:~#
root@WDR4310:~# ip -6 addr del 2607:8700:****:****:abcd::2/80 dev tun200
root@WDR4310:~#
root@WDR4310:~# ping6 2600::
PING 2600:: (2600::): 56 data bytes
64 bytes from 2600::: seq=0 ttl=43 time=354.391 ms
64 bytes from 2600::: seq=1 ttl=43 time=354.762 ms
64 bytes from 2600::: seq=2 ttl=43 time=355.739 ms
如果没有ipv6 nat
,纯 ipv6 路由,策略路由该如何绕过G*F*W
呢,
ipv4
的透明代理很好用,国内直连,国外绕行,ipv6
下咋实现呢?
ip -6 route 没有路由表就应该是timeout,而不是直接ping6: sendto: Permission denie
[root@tplink-wdr4310:~]
$ ping6 2600::
PING 2600:: (2600::): 56 data bytes
64 bytes from 2600::: seq=0 ttl=50 time=309.255 ms
64 bytes from 2600::: seq=1 ttl=50 time=308.635 ms
^C
--- 2600:: ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 308.635/308.945/309.255 ms
[root@tplink-wdr4310:~]
$ ip -6 route del default via fd48::1 dev tun100
[root@tplink-wdr4310:~]
$ ping6 2600::
PING 2600:: (2600::): 56 data bytes
ping6: sendto: Permission denied
这个,有点理解不了,默认路由本来就存在啊
root@WDR4310:~# ip -6 route
default from 2409:8a1e:****:****::/64 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
default from 2409:8a1e:****:****::/60 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
2409:8a1e:****:****::/64 dev pppoe-cmcc1 proto static metric 256 pref medium
2409:8a1e:****:****::/64 dev br-lan proto static metric 1024 pref medium
unreachable 2409:8a1e:****:****::/60 dev lo proto static metric 2147483647 error -148 pref medium
2607:8700:****:****:abcd::/80 dev tun200 proto kernel metric 256 pref medium
2607:8700:****:****::/64 dev pppoe-cmcc1 metric 1024 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0.3 proto kernel metric 256 pref medium
fe80::/64 dev macvlan1 proto kernel metric 256 pref medium
fe80::/64 dev macvlan2 proto kernel metric 256 pref medium
fe80::/64 dev macvlan3 proto kernel metric 256 pref medium
fe80::/64 dev eth0.2 proto kernel metric 256 pref medium
fe80::/64 dev br-lan proto kernel metric 256 pref medium
fe80::/64 dev tun200 proto kernel metric 256 pref medium
fe80::/10 dev pppoe-cmcc1 metric 1 pref medium
fe80::/10 dev pppoe-cmcc1 proto kernel metric 256 pref medium
而且 traceroute6 2800::
不存在Permission denied
,
感觉在哪隐含了2600::/7
路由表不存在一样
root@WDR4310:~# traceroute6 2600::
traceroute6: can't connect to remote host: Permission denied
root@WDR4310:~#
root@WDR4310:~# traceroute6 2700::
traceroute6: can't connect to remote host: Permission denied
root@WDR4310:~#
root@WDR4310:~# traceroute6 2800::
traceroute to 2800:: (2800::), 30 hops max, 64 byte packets
1 2409:8084:8000::5c (2409:8084:8000::5c) 3.365 ms 2.914 ms 2.728 ms
2 2409:8084:8000:1::148 (2409:8084:8000:1::148) 2.550 ms 2.901 ms 3.009 ms
3 2409:8080:0:2:204:272:: (2409:8080:0:2:204:272::) 3.271 ms 5.653 ms 3.647 ms
ip -6 route add 2600::/7 dev tun200
添加路由后,确实可以 ping6 2600::
了,
感觉强行vpn啊
ip -6 route add 2600::/7 dev tun200 添加路由后,确实可以 ping6 2600:: 了, 感觉强行vpn啊
啥叫强行VPN
从你发的路邮表看,跟本就没执行过教程里的ip -6 route add default via 2001:19f0:aabb:ccdd::10
这一步操作。你还是重新看一遍教程吧。
可能我没有说清楚, 我的最终目的是默认走本地isp的ipv6网络, 特定被屏蔽的ipv6地址才走tinyfecvpn,
目前遇到的情况是,tun接口一但配置2607:aaaa:bbbb:ffff::/64
等类似地址,
路由上 ping6 2600::/7 网段
网络就会Permission denied
删除接口地址后ping6 2600::/7 网段
就正常。
按路由表default规则,2600::/7 网段
都应该从本地isp路由出去呀?
或者我哪个地方理解错了?
除了2600::/7 网段
,其它ipv6地址段都能被正常路由。
anyway,谢谢你的耐心回复。
目前遇到的情况是,tun接口一但配置2607:aaaa:bbbb:ffff::/64 等类似地址, 路由上 ping6 2600::/7 网段 网络就会Permission denied 删除接口地址后ping6 2600::/7 网段 就正常。
你观察一下添加ipv6地址前后ip -6 route
输出有没有区别
再试一下ping6 -I <interface>
强制指定接口是否能ping通
按路由表default规则,2600::/7 网段 都应该从本地isp路由出去呀? 或者我哪个地方理解错了?
我看不出来你这个路由表里的default是不是没问题的:
default from 2409:8a1e:****:****::/64 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
default from 2409:8a1e:****:****::/60 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
你观察一下添加ipv6地址前后ip -6 route输出有没有区别
这个是原始的 ip -6 route
root@WDR4310:~# ip -6 route
default from 2409:8a1e:****:****::/64 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
default from 2409:8a1e:****:****::/60 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
2409:8a1e:****:****::/64 dev pppoe-cmcc1 proto static metric 256 pref medium
2409:8a1e:****:****::/64 dev br-lan proto static metric 1024 pref medium
unreachable 2409:8a1e:****:*****::/60 dev lo proto static metric 2147483647 error -148 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0.3 proto kernel metric 256 pref medium
fe80::/64 dev macvlan1 proto kernel metric 256 pref medium
fe80::/64 dev macvlan2 proto kernel metric 256 pref medium
fe80::/64 dev macvlan3 proto kernel metric 256 pref medium
fe80::/64 dev eth0.2 proto kernel metric 256 pref medium
fe80::/64 dev br-lan proto kernel metric 256 pref medium
fe80::/10 dev pppoe-cmcc1 metric 1 pref medium
fe80::/10 dev pppoe-cmcc1 proto kernel metric 256 pref medium
tinyfecVPN
是ipv6连接服务器的
tinyvpn_mips24kc_be -c -r [2607:8700:****:****::]:3000 --sub-net 192.168.17.0 --tun-dev tun200
添加ipv6地址
ip -6 addr add 2607:8700:****:****:abcd::2/80 dev tun200
路由表会自动增加1条
2607:8700:****:****:abcd::/80 dev tun200 proto kernel metric 256 pref medium
此时ping6
服务端地址都Permission denied
root@WDR4310:~# ping6 2607:8700:****:****::
PING 2607:8700:****:****:: (2607:8700:****:****::): 56 data bytes
ping6: sendto: Permission denied
但奇怪的是tinyfecVPN sub-net 192.168.17.0
ipv4接口还能通
root@WDR4310:~# ping 192.168.17.1
PING 192.168.17.1 (192.168.17.1): 56 data bytes
64 bytes from 192.168.17.1: seq=0 ttl=64 time=285.916 ms
64 bytes from 192.168.17.1: seq=1 ttl=64 time=284.776 ms
或许这还是可能和 路由表里的default 有些许关系,
但是Permission denied
仅发生在 路由器上,
路由器lan中的电脑都可以正常通讯,ping6 2600:: 从头到尾都能ping 通。
最后的办法就是ip -6 route add default dev pppoe-cmcc1
从这篇文章有所理解,Openwrt / LEDE路由器上的IPv6 NAT
default from 2409:8a1e:****:****::/64 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
default from 2409:8a1e:****:****::/60 via fe80::769d:8fff:****:**** dev pppoe-cmcc1 proto static metric 512 pref medium
默认路由中的from
限定,限制了只有源地址为 2409:8a1e:****:****::/60
的数据可以通过网关流出路由器,
为的是防止 fe80::
的本地地址向外路由,限定fe80::
只能在本地通讯。
ip -6 addr add 2607:8700:****:****:abcd::2/80 dev tun200
在接口获得2607:8700:****:****
前缀地址后,
在 ping6 2600::/7
网段内地址时,系统会优先选用2607:8700:****:****:abcd::2
做为源地址,
2607:8700:****:****:abcd::2
源地址不存在任何路由表,就会发生Permission denied
于此同时,路由器lan中设备都是2409:8a1e:****:****::/60
的源地址,都从默认路由走。
ip -6 addr add 2607:8700:::abcd::2/80 dev tun200 在接口获得2607:8700::前缀地址后, 在 ping6 2600::/7 网段内地址时,系统会优先选用2607:8700:::abcd::2做为源地址, 2607:8700:::abcd::2源地址不存在任何路由表,就会发生Permission denied
我之前也怀疑过这个,所以在前面建议再试一下ping6 -I <interface>强制指定接口是否能ping通
,强制了pppoe接口后,ping会从ppoe接口上获得源ip。
在 ping6 2600::/7 网段内地址时,系统会优先选用2607:8700:::abcd::2做为源地址
题外话,你有没有试过用ping以外的其他程序去连接2600::/7
这个地址,会不会提示Permission denied
或no route to host
。 ping底层是用raw socket实现的,在源ip选择上可能跟其他程序不一样。
题外话,你有没有试过用ping以外的其他程序去连接2600::/7这个地址
root@WDR4310:~# dig @2600:: google.com
; <<>> DiG 9.11.2-P1 <<>> @2600:: google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
tcpdump host 2600::
抓不到任何数据包
lan
的电脑dig @2600:: google.com
,
tcpdump host 2600::
是可以看到数据包的,
估计是一样的情况。
网络环境是ipv4+ipv6双栈运行,openwrt 18.06.01,bandwagonhost VPS tinyfecVPN 通过 ipv6 连接成功, 按 wiki ipv6 VPN advanced 手工给 tun 接口设置ipv6地址,
ip -6 addr add 2607:8700:aabb:ccdd::128 dev tun200
设置后, ping6 2600:: ping6 2700:: 全都显示
ping6: sendto: Permission denied
, 像是直接在把 2600::/7 网段给短路了?另外,2个 ipv6 wiki 在我这 OPENVZ 的 VPS上都不能正常配置, wiki ipv6 inside vpn 配置,因为OPENVZ 的 VPS 内核太低,没有 ipv6 nat; wiki ipv6 VPN advanced 配置又没办法让路由下面的客户端用自己的ipv6地址翻墙, 最终我只能在 openwrt client side 配置 ipv6 nat。