如何在 Linux 的特定接口上禁用 ipv6?

Yve*_*ssi 29 networking linux centos script ipv6

有人能告诉我如何在 CentOS 的特定网络接口上禁用 ipv6 自动配置吗?

目前的情况是:

一台 PC 有两个网络适配器 eth0 和 eth1,它们连接到同一个 LAN,其中,IPv6 路由器使用 NDRA(邻居发现路由器广告)数据包通告 IPv6 前缀。因此,eth0 和 eth1 都会自动使用该前缀配置 IPv6 地址。

但是,我只想在 eth1 上启用 ipv6 并在 eth0 上禁用它。我尝试了以下方法,但它们不起作用。

1. /etc/sysconfig/network

NETWORKING_IPV6=no
IPV6_AUTOCONF=no
Run Code Online (Sandbox Code Playgroud)

这将在 eth0 和 eth1 上禁用 ipv6。

2. /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no
Run Code Online (Sandbox Code Playgroud)

然后,它不起作用。我已经重新启动了网络服务。

San*_*ann 42

您可以使用以下行从 /etc/sysctl.conf 禁用它:

net.ipv6.conf.eth0.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)

看看/proc/sys/net/ipv6/conf/eth0。您可以在该目录中设置许多选项,例如启用 IPv6 但禁用 autoconf 等。

  • 仅供那些希望禁用所有接口的人使用,而不仅仅是一个接口,只需将“eth0”替换为“all” (4认同)
  • 实际上,不是修改`/etc/sysctl.conf`,而是在`/etc/sysctl.d`中创建一个文件,命名为`00_ipv6_off.conf`,内容如上。`ifconfig` 将显示没有 IPv6 功能的接口。 (2认同)

小智 12

$ sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
Run Code Online (Sandbox Code Playgroud)

弃用

# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6
Run Code Online (Sandbox Code Playgroud)

为了确保此更改在重新启动后仍然存在,您需要将此行添加到您的/etc/sysctl.conf文件中:

net.ipv6.conf.eth0.disable_ipv6=1
Run Code Online (Sandbox Code Playgroud)

请注意,使用该/etc/sysconfig/network-scripts/ifcfg-eth0文件是不可移植的。


lep*_*epe 9

暂时删除接口上的 ipv6 的一种方法是:(重新启动后它将恢复)

ip -6 addr flush eth0

  • 这对我来说很棒,我有一台主机(proxmox apt repo)在 ipv6 上速度很慢,所以只需要它消失一次即可。谢谢! (2认同)
  • 和 @trisweb 遇到了同样的问题,这非常有效,非常感谢 lepe (2认同)