Я бы хотел, чтобы моя машина 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, работать не будет.