Вимкнути IPv6 на інтерфейсі в Debian Wheezy?


10

Я працюю над Debian Wheezy:

$ uname -a
Linux openstack1 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux

Я створив дві мережі для VirtualBox:

# Public network vboxnet0 (10.1.0.0/16)
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet0 --ip 10.1.0.254 --netmask 255.255.0.0

# Private network vboxnet1 (10.2.0.0/16)
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet1 --ip 10.2.0.254 --netmask 255.255.0.0
...

# VirtualBox Network
VBoxManage modifyvm openstack1 --nic1 nat \
  --nic2 hostonly --hostonlyadapter2 vboxnet0 \
  --nic3 hostonly --hostonlyadapter3 vboxnet1

У віртуальній машині у мене є наступне /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# Primary network interface
auto eth0
iface eth0 inet dhcp

# Public network (OpenStack)
auto eth1
iface eth1 inet static
    address 10.1.0.10
    netmask 255.255.0.0
    network 10.1.0.0
    broadcast 10.1.255.255

# Private network (OpenStack)
auto eth2
iface eth2 inet static
    address 10.2.0.10
    netmask 255.255.0.0
    network 10.2.0.0
    broadcast 10.2.255.255

Коли я вивчаю конфігурацію інтерфейсу, IPv6 увімкнено:

$ sudo ifconfig
[sudo] password for openstack: 
eth0      Link encap:Ethernet  HWaddr 08:00:27:6f:c5:38  
          inet addr:172.16.1.23  Bcast:172.31.255.255  Mask:255.240.0.0
          inet6 addr: fe80::a00:27ff:fe6f:c538/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:614 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:61279 (59.8 KiB)  TX bytes:13336 (13.0 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:79:99:40  
          inet addr:10.1.0.10  Bcast:10.1.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fe79:9940/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5288 (5.1 KiB)  TX bytes:8485 (8.2 KiB)

eth2      Link encap:Ethernet  HWaddr 08:00:27:f1:7b:f5  
          inet addr:10.2.0.10  Bcast:10.2.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fef1:7bf5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5288 (5.1 KiB)  TX bytes:8690 (8.4 KiB)

man 5 interfacesне обговорює, як відключити IPv6 в інтерфейсі. Проект Debian IPv6 не визначає, як відключити IPv6 для Wheezy (лише рівень ядра для Squeeze).

За відсутності документації я спробував додати a offі disableto eth1і eth2, але це призвело до помилки:

iface eth1 inet6 off

(Судячи з усього, вищевказана строфа повністю розірвала мережу, тому що я нічого не отримую ifconfigі pingне працює. До того ж, eth0і loвниз, навіть якщо вони не були змінені.)

Що додати, щоб /etc/network/interfacesвідключити IPv6 на налаштованих інтерфейсах?


1
Можливий дублікат Як відключити IPv6 на Debian Wheezy?
CVn

Дякую Майклу. Його близько, але не зовсім. Я хочу відключити його для налаштованого нами інтерфейсу, а не для ядра.
jww

2
Якщо ви будете задоволені блокуванням IPv6 (не відключенням), тоді ви можете використовувати ip6tablesдля повного блокування введення та виведення IPv6, але інтерфейс все ще буде слухати IPv6.
VL-80

Ще одне можливе рішення: відповідно до Linux IPv6 HOWTO є можливість видалити IPv6 адресу за допомогою команди # /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>. Я відключив IPv6 у своєму ядрі, тому не міг його перевірити. У будь-якому випадку, спробуйте і повідомте нам про це.
VL-80

1
Дякую Майклу. "Чому ви намагаєтесь відключити IPv6 в інтерфейсі" - моя маленька лабораторія надає лише IPv4, тому немає потреби в IPv6. IP v6 використовує додаткові ресурси та збільшує поверхню атаки. Плюс це створює багато шуму під час слідів проводів. Я здогадуюсь, я міг би заграти через мережу: навіщо людям керувати тим, чого вони не хочуть чи не потребують?
jww

Відповіді:


13

Відповідно до цієї відповіді , наступне в розділі /etc/sysctl.confмає відключити IPv6 на всіх інтерфейсах:

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

Редагування: лише для одного інтерфейсу слід виконати наступні дії (замінити <interface>ім'я інтерфейсу):

net.ipv6.conf.<interface>.disable_ipv6 = 1

Можливо, вам доведеться запустити sudo sysctl -pпісля внесення вищезазначених змін. (Або ж ви можете перезавантажити.)
mpb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.