长话短说,我在使用 ISP Charter Business 的第 6 隧道时遇到了 IPv6 问题。他们提供了一条我认为已正确设置的第 6 隧道,但服务器不会回复每个 IPv6 请求。当服务器的网络接口空闲约 10 分钟且没有流量时,IPv6 将停止接受入站连接。要重新允许它,我必须进入服务器,并让它进行出站 IPv6 连接(通常是ping
)以重新启动它。但奇怪的是,如果我在iptraf
它不工作的时候运行,它仍然显示入站 IPv6 数据包...服务器没有回复,我不知道为什么。此外,如果我尝试从同一 ISP 上约 1 英里外的房子通过 IPv6 访问我的服务器,它永远无法连接。它总是超时,但再次显示iptraf
IPv6 入站数据包。同样,它就是不回复。为了测试我的服务器是否可以通过 IPv6 访问,我总是必须使用我的 vzw 4g 手机(他们使用 IPv6)或 ipv6proxy dot net。
以下是我的 ISP 在隧道服务器上提供的所有配置信息:
6rd Prefix = 2602:100::/32
Border Relay Address = 68.114.165.1
6rd prefix length = 32
IPv4 mask length = 0
这是我的/etc/network/interfaces
IPv6(使用 x 来阻止真实地址)
auto charterv6
iface charterv6 inet6 v4tunnel
address 2602:100:189f:xxxx::1
netmask 32
ttl 64
gateway ::68.114.165.1
endpoint 68.114.165.1
local 24.159.218.xxx
up ip link set mtu 1280 dev charterv6
这是我的iptables
配置
filter
:INPUT DROP [0:0]
:fail2ban-ssh – [0:0]
:OUTPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:hold – [0:0]
-A INPUT -p tcp -m tcp —dport 22 -j fail2ban-ssh
-A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport -j ACCEPT —dports 80,443,25,465,110,995,143,993,587,465,22
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp —dport 10000 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 5900:5910 -j ACCEPT
-A fail2ban-ssh -j RETURN
-A INPUT -p icmp -j ACCEPT
COMMIT
最后这是我的ip6tables
防火墙配置
filter
:INPUT DROP [1653:339023]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [60141:13757903]
:hold – [0:0]
-A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport —dports 80,443,25,465,110,995,143,993,587,465,22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp —dport 10000 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 5900:5910 -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
COMMIT
总结一下:
iptraf
始终显示 IPv6 流量,因此它始终会到达服务器服务器在一段时间内(大约 10 分钟)没有流量后停止在 IPv6 上应答,直到建立出站连接,然后重复该过程。
服务器永远无法访问 vi 相同的 ISP(但
iptraf
仍显示 IPv6 请求)
注意:当我尝试从城镇另一侧的同一个 ISP 访问它时,即使iptables
允许ip6tables
所有入站流量,也会显示此信息iptraf
。
IPv6 (92 bytes) from 97.92.18.xxx to 24.159.218.xxx on eth0
ICMP dest unrch (port) (120 bytes) from 24.159.218.xxx to 97.92.18.xxx on eth0
奇怪的是,即使主机文件中的 IPv6 地址设置为服务器域名,它也会这样做。使用iptables
上述配置正常设置后,它只会显示以下内容:
IPv6 (100 bytes) from 97.92.18.xxx to 24.159.218.xxx on eth0
另外,我注意到了另一件事。当我能够访问我的服务器时,所有 IPv6 请求都显示此信息
IPv6 (100 bytes) from 68.114.165.1 to 24.159.218.xxx on eth0
这意味着他们正在经历第 6 次中继,然而当在同一个 ISP 上时,请求显示来自诚实的源 IP,这让我认为路由可能与此有关。
我真的被这个问题难住了,如果能得到任何帮助我都会非常感激。
编辑:不知道这是否有帮助,但这是我的路线。
root@XXXXXXX:~# route -A inet6
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
::68.114.165.1/128 :: U 1024 0 1 charterv6
2602:100::/32 :: Un 256 0 0 charterv6
fe80::/64 :: Un 256 0 0 charterv6
fe80::/64 :: U 256 0 0 eth1
fe80::/64 :: U 256 0 0 eth2
::/0 ::68.114.165.1 UG 1024 0 30 charterv6
::/0 :: !n -1 1 32 lo
::1/128 :: Un 0 3 47 lo
2602:100:189f:xxxx::1/128 :: Un 0 1 50 lo
fe80::189f:xxxx/128 :: Un 0 1 0 lo
fe80::21b:21ff:fe98:456a/128 :: Un 0 1 0 lo
fe80::21b:21ff:feab:bd3c/128 :: Un 0 1 0 lo
ff00::/8 :: U 256 0 0 charterv6
ff00::/8 :: U 256 0 0 eth1
ff00::/8 :: U 256 0 0 eth2
::/0 :: !n -1 1 32 lo
答案1
您对 ipv4 使用状态过滤,但我没有看到任何允许入站封装的第 6 层流量的规则,也许这就是问题所在?
如果我没记错的话,6rd 也使用协议编号 41?
iptables -I INPUT 3 --protocol 41 -s 68.114.165.1 -j ACCEPT
编辑:如果您想接收来自您的 ISP 的其他第 6 个客户的流量,您还需要接受来自这些客户的流量。