在单个接口上禁用IPv6


9

除非您明确告诉Ubuntu,Ubuntu不会处理ipv4 DHCP,但除非您告诉它不接受,否则它会很乐意采用ipv6 RA,这让我有些奇怪。有什么办法可以将默认行为更改为“除非我明确将其打开,否则什么都不做”?

(致答者的注意:我不是要全局禁用ipv6,也不是完全关闭autoconf。我希望默认情况下禁用autoconf (例如,除非在/ etc / network /中这样说,否则我不希望ipv6。接口,就像我不明确获得dhcp一样,我不只是获得v4地址一样。发生的事情是,对于任何打开的接口-例如具有ipv4配置-v6地址都倾向于打开尽管我没有显式启用该功能,但到目前为止,该解决方案目前为止还不错,但是如果我全局禁用v6或autoconf,则无法在其上重新启用v6 / etc / network / interfaces中的简单命令以每个接口为基础。请注意,我相当确定我要在棍子上放月亮)。


1
这是有关如何禁用ipv6的链接。我自己还没有尝试过。让我知道它是否有效:如何在Ubuntu中禁用IPV6
BiggJJ 2013年

3
它可能可以,但是我不想禁用ipv6,只是阻止在接口上进行自动配置,除非我特别希望自动配置它们。
ijw

Answers:


9

Autoconf是IPv6基本功能的一部分。RA公告不是DHCP,并且RA服务器未分配地址。RA更加接近在169.254.0.0/16 IP范围上完成的IPv4自动配置。如果启用了隐私,则您的IPv6地址将随着时间而改变。您的旧地址将被淘汰,并最终被删除。

您可以使用以下命令轻松禁用ipv6 autoconf:

sudo sysctl -w net.ipv6.conf.all.autoconf=0

all用接口名称替换以禁用一个接口。替换autoconfdisable_ipv6以禁用IPv6。/etc/sysctl.d使用要在启动过程中应用设置的变量分配创建一个文件。

要查找所有与ipv6相关的设置,请运行以下命令:

sudo sysctl -a | grep ipv6 | less

4

检查是否启用或禁用了IPv6

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

0表示已启用,1表示已禁用。

禁用IPv6

$ su -
# nano /etc/sysctl.conf

并将这些行添加到sysctl.conf文件中

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

使用新的配置保存sysctl.conf文件,然后重新启动系统

# reboot

再次检查系统

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

现在您应该看到“ 1”表示您的系统已禁用IPv6。

来自http://namhuy.net/1419/disable-ipv6-ubuntu-linux-mint.html


为我工作。至少在Centos上,您可以运行“ sudo sysctl -p”来重新加载而无需重新启动
Code Wiget

2

与其他答案之一相似,但与之不同,我非常高兴地尝试了此操作:

在/etc/sysctl.d中添加sysctl文件以禁用ipv6-尽管不是通用的,只是作为接口默认状态:

net.ipv6.conf.default.disable_ipv6=1

然后,在interfaces文件中,仅对于希望启用ipv6的接口,添加:

iface eth0 inet dhcp # .. or whatever
up sysctl -w net.ipv6.conf.$IFACE.disable_ipv6=0

...因此,接口在连接时(如当前)不会获得IPv6地址,但可以说服它们在特定情况下使用它们。如果这也是您想要的,那么无疑可以在启用ipv6之前禁用RA。

注意:我怀疑您会遇到VLAN命名接口(例如eth0.100)的问题,并且必须在'up'命令中将其拼写为'eth0 / 100',而不是$ IFACE,这将使用错误的格式-我尚未测试,但这似乎是sysctl如何看待世界的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.