Wyłączyć IPv6 na interfejsie w Debian Wheezy?

10

Pracuję nad Debian Wheezy:

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

Skonfigurowałem dwie sieci dla 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

Na maszynie wirtualnej mam następujące elementy /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

Podczas sprawdzania konfiguracji interfejsu włącza się protokół 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 interfacesnie omawia sposobu wyłączania IPv6 w interfejsie. Projekt Debian IPv6 nie określa, jak wyłączyć IPv6 dla Wheezy (tylko poziom jądra dla Squeeze).

W przypadku braku dokumentacji, próbowałem dodanie offa disabledo eth1i eth2, ale to spowodowało błędu:

iface eth1 inet6 off

(Wygląda na to, że powyższa zwrotka całkowicie zepsuła sieć, ponieważ nic nie wychodzi ifconfigi pingnie działa. Dodatkowo, eth0i nie działa, lomimo że nie zostały zmodyfikowane.)

Do czego mam dodać, aby /etc/network/interfaceswyłączyć IPv6 na skonfigurowanych przeze mnie interfejsach?

jww
źródło
Dzięki Michael. Jest blisko, ale nie do końca. Chcę go wyłączyć dla skonfigurowanego interfejsu, a nie jądra.
jww
2
Jeśli będziesz zadowolony z blokowania IPv6 (nie wyłączając), możesz użyć ip6tablesdo całkowitego zablokowania wejścia i wyjścia IPv6, ale interfejs nadal będzie nasłuchiwał IPv6.
VL-80,
Inne możliwe rozwiązanie: zgodnie z HOWTO Linux IPv6 istnieje możliwość usunięcia adresu IPv6 za pomocą polecenia # /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>. Wyłączyłem IPv6 w moim jądrze, więc nie mogłem go przetestować. W każdym razie spróbuj i daj nam znać.
VL-80,
1
Dzięki Michael. „Dlaczego próbujesz wyłączyć IPv6 w interfejsie” - moje małe laboratorium zapewnia tylko IPv4, więc nie ma potrzeby IPv6. IP v6 wykorzystuje dodatkowe zasoby i zwiększa powierzchnię ataku. Dodatkowo generuje dużo hałasu podczas śladów wireshark. Wydaje mi się, że mógłbym to przelać z powrotem przez sieć: dlaczego ludzie mieliby prowadzić coś, czego nie chcą lub nie potrzebują?
jww

Odpowiedzi:

13

Zgodnie z tą odpowiedzią , następujące w /etc/sysctl.confpowinny wyłączyć IPv6 na wszystkich interfejsach:

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

Edycja: tylko w przypadku jednego interfejsu następujące czynności powinny rozwiązać problem (zastąp <interface>nazwą interfejsu):

net.ipv6.conf.<interface>.disable_ipv6 = 1
Społeczność
źródło
Może być konieczne uruchomienie sudo sysctl -ppo wprowadzeniu powyższych zmian. (Lub, alternatywnie, możesz zrestartować komputer).
mpb