如何在 Mac OS X(10.5 +)上彻底禁用 IPV6?

如何在 Mac OS X(10.5 +)上彻底禁用 IPV6?

我想完全避免我的 Mac OS X 机器使用 ipv6。

我正在寻找一种编程方法来禁用每个网络接口上的 ipv6,并可能完全避免内核对 ipv6 的支持。

作为解释,我需要相当于添加“alias ipv6 off”到 linux 中的 modprobe.conf。

“这是不可能的”的答案是值得欢迎的,当然,它得到了某种官方消息来源的支持。

编辑:

我想从日志、ipfw 以及所有地方删除 ipv6。即使只是为了知道这是否可行以及如何可行。是否正确这样做又是另一个问题 :)

答案1

您可以使用以下方式禁用特定设备的 IP6

networksetup -setv6off Service name
(i.e  networksetup -setv6off "Ethernet 1")

并获取所有可能的服务列表

networksetup -listallnetworkservices

请参阅 man networksetup 以了解更多信息。

我不知道您是否可以告诉 networksetup 一次对每个接口执行命令,但编写一个简短的脚本来迭代列表命令的输出并在所有设备上禁用 IP6 应该不会太难。

答案2

正如 neoice 所提到的,'ip6' 工具在这里很有用。它允许您禁用每个接口的 IPv6,或者 'ip6 -x' 禁用除环回接口之外的所有接口。

您可以使用以下方式在环回接口上禁用 IPv6

ip6 -d lo0

但是当我尝试这个时,DNS解析停止了工作。

所以:是的,您可以完全禁用 IPv6,但您的系统将受到严重损害。

答案3

这将禁用所有网络适配器上的 ipv6:

#!/bin/sh
IFS=$'\n'
net=`networksetup -listallnetworkservices | grep -v asterisk`

for i in $net
do
    networksetup -setv6off "$i"
done
exit 0

答案4

这一页看起来很有用。如果以 root 身份运行,它似乎确实有效。我不想永久禁用它,所以我无法确认 sysctl 命令。

root@Shambhala:~# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    inet 127.0.0.1 netmask 0xff000000 
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet6 fe80::21b:63ff:fea5:de87%en0 prefixlen 64 tentative scopeid 0x4 
    media: autoselect status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 172.16.11.98 netmask 0xffffff00 broadcast 172.16.11.255
    inet6 fe80::21c:b3ff:fe77:c434%en1 prefixlen 64 tentative scopeid 0x5  
    media: autoselect status: active
    supported media: autoselect
vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet6 fe80::276:62ff:fe00:0%vboxnet0 prefixlen 64 scopeid 0x7 
    ether 00:76:62:00:00:00 

root@Shambhala:~# ip6 -x
root@Shambhala:~# ifconfig 
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    inet 127.0.0.1 netmask 0xff000000 
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    media: autoselect status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 172.16.11.98 netmask 0xffffff00 broadcast 172.16.11.255
    media: autoselect status: active
    supported media: autoselect
vboxnet0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:76:62:00:00:00 

不过看起来 IPv6 在环回设备上仍然保持启用状态......

相关内容