如何在Mac OS X(10.5 +)上完全禁用IPV6?

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

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

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

当然,“这是不可能的”答案是受欢迎的,得到某种官方的支持。

编辑:

我想从各地的ipfw,从日志中删除ipv6。 即使是知道如何以及如何可能的满意。 这是对的做这是另一个问题:)

您可以使用特定设备禁用IP6

networksetup -setv6off Service name (ie networksetup -setv6off "Ethernet 1") 

并获得所有可能的服务清单

 networksetup -listallnetworkservices 

请参阅mannetworking安装了解更多信息。

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

正如已经提到的那样,'ip6'工具在这里很有用。 这允许您禁用每个接口的IPv6,或者'ip6 -x'禁用除loopback接口以外的所有接口。

您可以使用环回接口禁用IPv6

 ip6 -d lo0 

当我尝试这个虽然,DNSparsing停止工作。

所以:是的,你可以完全禁用IPv6,但你会得到一个严重受损的系统。

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

 #!/bin/sh IFS=$'\n' net=`networksetup -listallnetworkservices | grep -v asterisk` for i in $net do networksetup -setv6off "$i" done exit 0 

回复您对SvenW的回答的评论:

我的目标是使我的系统完全IPV6无知,这是可能的吗?

虽然到处都没有使用IPv6,可能会在几年之后。 所以我猜测,IPv6是与IPv4一样集成到OS X的,而且你需要重build内核(可能还有一些应用程序)来删除它们。 (我没有任何消息来源。)

这个页面看起来很丰富。 它看起来像是以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保持启用环回设备,但…

你说ipfw需要ipv6规则。 所以你可以简单地阻止ipv6那里,这发生在内核和什么都不会有关于ipv6的工作。