Назад | Перейти на главную страницу

Как полностью отключить IPV6 в Mac OS X (10.5+)?

Я бы хотел, чтобы моя машина Mac OS X вообще не использовала ipv6.

Я ищу программный способ отключить ipv6 на каждом сетевом интерфейсе и, возможно, вообще избежать поддержки ipv6 ядром.

В качестве объяснения я нужен эквивалент добавления "alias ipv6 off" в modprobe.conf в linux.

Ответ «это невозможно» приветствуется, конечно, поддерживается каким-то официальным источником.

РЕДАКТИРОВАТЬ:

Я хочу удалить ipv6 из логов, из ipfw, отовсюду. Даже для удовольствия узнать, возможно ли это и как. Правильно это сделать - другой вопрос :)

Вы можете отключить IP6 для определенного устройства с помощью

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

и получите список всех возможных услуг с

networksetup -listallnetworkservices

См. Man networksetup для получения дополнительной информации.

Я не знаю, можете ли вы указать networksetup выполнять команду для каждого интерфейса сразу, но не должно быть слишком сложно написать короткий сценарий, который выполняет итерацию по выходным данным команды list и отключает IP6 на всех устройствах.

Как уже упоминалось neoice, здесь полезен инструмент ip6. Это позволяет вам отключить IPv6 для каждого интерфейса, или «ip6 -x» отключает все, кроме интерфейса обратной связи.

Вы можете отключить IPv6 на интерфейсе обратной связи с помощью

ip6 -d lo0

Когда я попробовал это, разрешение DNS перестало работать.

Итак: Да, вы можете полностью отключить IPv6, но вы получите серьезно поврежденную систему.

Это отключит 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 так же интегрирован в OS X, как и IPv4, и вам нужно будет перестроить ядро ​​(и, возможно, некоторые приложения), чтобы удалить любое из них. (Хотя у меня нет источников.)

эта страница выглядит информативно. похоже, что он работает, если запускать его как 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 остается включенным на устройстве loopback, хотя ...

Вы сказали, что ipfw принимает правила ipv6. Таким образом, вы можете просто заблокировать там ipv6, это происходит в ядре, и ничего, связанное с ipv6, работать не будет.