나는 Debian Wheezy 상자에 4-NIC 본딩을 설정했습니다. 새로 부팅한 후 시스템은 LAN에 액세스할 수 있지만 외부 호스트 이름을 확인하거나 외부 IP에 액세스할 수는 없습니다. 이는 bond0 인터페이스가 기본 게이트웨이 경로를 가져오지 않고 대신 슬레이브 인터페이스(보통 eth3) 중 하나에서 가져오기 때문인 것 같습니다.
route -n
시작 후 결과:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth3
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth3
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
즉각적인 네트워크 문제는 다음을 수행하여 완화할 수 있습니다 route add default gw 192.168.2.1 bond0
. 그러나 물리적 액세스가 없을 때 재부팅 후 최소한 컴퓨터가 외부 네트워크 액세스 권한을 얻도록 해야 합니다.
소위 슬레이브 인터페이스는 매번 자체 IP 주소를 얻습니다. 이것이 문제의 원인이 아닐까 의심됩니다. 여기서 무슨 일이 일어나고 있는 걸까요? 결과적 ifconfig
으로 eth3에 주목하세요:
bond0 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
inet addr:192.168.2.3 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::be5f:f4ff:febe:4acc/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:522992 errors:0 dropped:4871 overruns:0 frame:0
TX packets:885760 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:53459302 (50.9 MiB) TX bytes:736701670 (702.5 MiB)
eth0 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:85101 errors:0 dropped:5 overruns:0 frame:0
TX packets:412890 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8568619 (8.1 MiB) TX bytes:37311255 (35.5 MiB)
Memory:f7400000-f7480000
eth1 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1285 errors:0 dropped:12 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:185579 (181.2 KiB) TX bytes:16930 (16.5 KiB)
Memory:f7300000-f7380000
eth2 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2039 errors:0 dropped:11 overruns:0 frame:0
TX packets:472583 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:326122 (318.4 KiB) TX bytes:699347095 (666.9 MiB)
Memory:f7200000-f7280000
eth3 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
inet addr:192.168.2.135 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:434565 errors:0 dropped:410 overruns:0 frame:0
TX packets:210 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44378800 (42.3 MiB) TX bytes:26282 (25.6 KiB)
Memory:f7100000-f7180000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9310 (9.0 KiB) TX bytes:9310 (9.0 KiB)
이와 같이 /etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
bond-mode 4
auto eth1
iface eth1 inet manual
bond-master bond0
bond-mode 4
auto eth2
iface eth2 inet manual
bond-master bond0
bond-mode 4
auto eth3
iface eth3 inet manual
bond-master bond0
bond-mode 4
auto bond0
iface bond0 inet static
address 192.168.2.3
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1
slaves eth0 eth1 eth2 eth3
bond-slaves none
bond-mode 4
bond-miimon 100
bond-downdelay 200
bond-updelay 200
스위치에서 다양한 포트 조합을 시도했고 매번 거의 동일한 결과를 얻었습니다(때때로 인터페이스가 eth3와 달랐습니다). 이 문제는 마더보드를 업그레이드한 후에 발생했습니다. 이전 마더보드에서는 2-NIC 본딩이 훌륭하게 작동했습니다. (기존 Wheezy 설치에서 하드웨어를 업그레이드하는 데 문제가 있을 수 있습니까?) 업그레이드 후 이전 파일을 삭제 /etc/udev/rules.d/70-persistent-net.rules
하고 다시 생성하여 이제 파일에 다음이 포함됩니다.
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.2/0000:07:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:cc", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.4/0000:09:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:bd", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.3/0000:08:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:ce", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.5/0000:0a:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:bf", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
/etc/network/interfaces
마지막으로 "해결 방법" 솔루션을 바라며 내 파일에 다음을 추가해 보았습니다 .
auto bond0
...
post-up route add default gw 192.168.2.1 bond0
pre-down route del default gw 192.168.2.1 bond0
이는 아무런 차이가 없는 것으로 보이며 시작 시 라우팅 테이블에 bond0에 대한 기본 GW 경로가 없습니다(정확히 위와 동일). 나는 내가 뭘 잘못하고 있는지 알고 싶고 적어도 이것을 임시 해결책으로 사용하고 싶습니다.
답변1
글쎄, 그러면 간단한 대답이 나옵니다. update-rc.d network-manager disable
그런 다음 재부팅하십시오. NetworkManager가 아직 실행 중인지 전혀 몰랐지만 실행 중이었고 IP를 할당하고 있었습니다.
답변2
이 게시물과 같이 eth* IP 주소를 새로 고치는 것이 도움이 된다는 것을 알았습니다. https://ubuntuforums.org/showthread.php?t=2315062
즉sudo ip addr flush dev ethX
시스템 재부팅 후에도 유지되는 솔루션을 찾아야 할 수도 있습니다.
답변3
다음 명령을 입력하십시오.
route add default gw 192.168.2.1 bond0
입력하다/etc/rc.local