如何在 RHEL 5.6 上完全禁用环回接口的 IPv6

如何在 RHEL 5.6 上完全禁用环回接口的 IPv6

我已经对如何在 RedHat Linux 上禁用 IPv6 进行了大量研究,并且几乎完全禁用了它。但是环回接口仍然获取 inet6 环回地址 (::1/128)。我找不到仍启用 IPV6 进行环回的地方。

为了禁用 IPV6,我在 /etc/sysctl.conf 中添加了以下设置:

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

并在 /etc/sysconfig/network 中添加了以下行:

NETWORKING_IPV6=no

重新启动后,inet6 地址从我的物理接口(eth0)上消失了,但是仍然存在:

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:50:56:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.x.x.x/21 brd 10.x.x.x scope global eth0

如果我手动从环回中删除 IPV6 地址,然后反弹接口,它会恢复:

# ip addr del ::1/128 dev lo
# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
# ip link set lo down
# ip link set lo up
# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever

我相信应该在内核级别禁用 IPV6,这已由 sysctl 确认:

# sysctl net.ipv6.conf.lo.disable_ipv6
net.ipv6.conf.lo.disable_ipv6 = 1

还有什么其他想法会导致环回接口获取 IPV6 地址?

答案1

1) 通过创建包含以下内容的文件 /etc/modprobe.d/ECS.conf 禁用 ipv6 内核模块:

alias net-pf-10 off
alias ipv6 off

2)编辑/etc/sysconfig/network并设置:

NETWORKING_IPV6=off

3)禁用IPV6的iptables:

chkconfig ip6tables off

4)重启(我不建议手动删除ipv6内核模块)

答案2

我通常只是使用modprobe/modload框架来禁用加载ipv6内核模块(在 Debian - Red Hat 上/etc/modules/etc/modprobe.d可能选择了不同的目录),或者如果构建自定义内核,则不构建 IPv6 支持。

相关内容