題 在Debian Wheezy中禁用接口上的IPv6?


我正在研究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項目 沒有指定如何為Wheezy禁用IPv6(僅限Squeeze的內核級別)。

在沒有文檔的情況下,我嘗試添加一個 off 和 disable 至 eth1 和 eth2,但它導致了一個錯誤:

iface eth1 inet6 off

(顯然,上面的節完全打破了網絡,因為我沒有得到任何東西 ifconfig 和 ping 不起作用。另外, eth0 和 lo 即使他們沒有被修改,他們也會失敗。

我要添加什麼? /etc/network/interfaces 在我配置的接口上禁用IPv6?


8
2017-12-25 15:32


起源


可能重複 如何在Debian Wheezy上禁用IPv6? - α CVn
謝謝邁克爾。它很接近,但並不完全。我想為我配置的接口禁用它,而不是內核。 - jww
如果您對阻止IPv6(不禁用)感到滿意,那麼您可以使用 ip6tables 完全阻止輸入和輸出IPv6,但接口仍將監聽IPv6。 - VL-80
另一種可能的解決方案:按照 Linux IPv6 HOWTO 可以使用命令刪除IPv6地址 # /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>。我在內核中禁用了IPv6,所以無法測試它。無論如何,嘗試一下,讓我們知道。 - VL-80
謝謝邁克爾。 “為什麼要嘗試在接口上禁用IPv6” - 我的小實驗室只提供IPv4,因此不需要IPv6。 IP v6使用額外的資源並增加攻擊面。另外,它會在wireshark痕跡中產生很多噪音。我想我可以通過網絡將其抽回:為什麼人們會運行他們不想要或不需要的東西? - jww


答案:


根據 這個答案,以下 /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

11
2017-12-26 03:39