debian 8:我的机器开始仅使用 IPv6 进行“传出”连接。如何回到IPv4?

debian 8:我的机器开始仅使用 IPv6 进行“传出”连接。如何回到IPv4?

debian 8我在我的服务器上运行。最近,服务器开始仅使用 IPv6 进行所有传出 TCP 连接。不过,它仍然接受 IPv4 进行传入连接。

因此,我现在无法访问任何网站(端口 80)、建立任何 ssh 连接(端口 22),也无法通过服务器的任何 TCP 端口访问任何其他传出主机。

iptables -F我通过后跟完全禁用了所有 iptables 规则iptables -X,问题仍然存在。

以下是一些可能相关的命令输出:

% sudo ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether aa:bf:5c:77:b2:82 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f2:3c:91:96:da:28 brd ff:ff:ff:ff:ff:ff
    inet 45.33.123.70/24 brd 45.33.123.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 45.33.5.47/24 scope global eth0:1
       valid_lft forever preferred_lft forever
    inet 192.168.135.4/17 scope global eth0:2
       valid_lft forever preferred_lft forever
    inet6 2600:3c00::f03c:91ff:fe96:da28/64 scope global mngtmpaddr dynamic 
       valid_lft 87sec preferred_lft 27sec
    inet6 fe80::f03c:91ff:fe96:da28/64 scope link 
       valid_lft forever preferred_lft forever
4: teql0: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 100
    link/void 
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
6: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
    link/gre 0.0.0.0 brd 0.0.0.0
7: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1464 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
10: ip6_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
11: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
12: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
13: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

% sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         45.33.123.1     0.0.0.0         UG    0      0        0 eth0
45.33.5.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
45.33.123.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.128.0   0.0.0.0         255.255.128.0   U     0      0        0 eth0

我不知道是什么导致输出更改为仅 IPv6。但无论如何,我只想返回所有传出连接的默认值 IPv4。

感谢您的任何见解和建议。

答案1

另一种可能有效的方法是将您的计算机配置为更喜欢IPv4。因此,它会首先尝试 IPv4,如果失败则再尝试 IPv6。

这可以在以下位置完成/etc/gai.conf

precedence ::ffff:0:0/96  100
scopev4 ::ffff:0.0.0.0/96       14

这告诉getaddrinfo()调用优先考虑 IPv4 结果。

答案2

如果你删除公共 ip6 地址,你应该没问题:

# ip address del 2600:3c00::f03c:91ff:fe96:da28/64 dev eth0

至于它是如何到达那里的,可能是他们的 DHCP 服务器(如果您通过 DHCP 获取地址)刚刚开始发送 IPv6 前缀。

您可能需要将此情况告知您的提供商,因为从长远来看您确实希望启用 IPv6。

答案3

当谈到 IPv6 时,我采取“从轨道上攻击它”的方法。

添加ipv6.disable=1到您的内核选项,/etc/default/grub然后运行update-grub并重新启动:

GRUB_CMDLINE_LINUX_DEFAULT="... ipv6.disable=1"

或者,如果您无法轻松修改内核参数,请将其添加到 sysctl.conf 或运行 sysctl 进行手动设置:

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

相关内容