mybridge
우리는 보드에 브리지() eth0
와 인터페이스를 만들고 싶습니다 eth1
. 보드는 Linux 2.6.34.9를 실행합니다.
명령은 다음과 같습니다.
brctl addbr mybridge
ifconfig eth1 0.0.0.0
ifconfig eth0 0.0.0.0
brctl addif mybridge eth1
brctl addif mybridge eth0
ifconfig mybridge up
PC------ETH1-----mybridge------ETH0
PC에서 보드를 ping하면 패킷을 수신할 수 있지만 eth1
( eth1
rx 카운터가 증가함) mybridge
rx 카운터가 mybridge
증가하지 않기 때문에 패킷이 전송되지 않습니다. 온라인으로 검색한 결과
mybridge
시작은 되었지만 실행 모드로 전환되지는 않는 것으로 나타났습니다. 브릿지는 실행 모드로 들어가지 않으면 작동하지 않습니다.
mybridge
왜 RUNNING 상태로 들어가지 않았는지 알려주실 수 있나요 ?
/ # ifconfig
eth0 Link encap:Ethernet HWaddr BC:9A:78:56:34:12
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 00:E0:0C:BC:E0:00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:101 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7200 (7.0 KiB) TX bytes:126 (126.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
mybridge Link encap:Ethernet HWaddr 00:E0:0C:BC:E0:00
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
어떤 종류의 의견이라도 큰 도움이 될 것입니다.
답변1
보드에 IP 주소가 없기 때문에 보드를 ping할 수 없습니다. 여기서 정확히 무엇을 하고 있는지는 확실하지 않습니다.
보드의 eth0에는 아무것도 없기 때문에 패킷은 보드의 브리지를 통과하지 못합니다. 장치를 eth0에 연결하고 ping하면 패킷이 브리지를 통과하는 것을 볼 수 있습니다.
eth0의 패킷 카운터가 증가하지 않는 데는 두 가지 이유가 있을 수 있습니다.
1) 브리지는 브리지의 각 포트 뒤에 있는 장치의 MAC 주소를 추적한다는 점에서 스위치와 다소 유사하게 작동합니다. 이 명령을 실행하면 brctl showmacs mybridge
브리지가 검색한 장치의 MAC 주소와 해당 장치가 있는 포트를 확인할 수 있습니다.
장치를 eth0에 연결하고 ping을 시도하면 ping 호스트는 먼저 ping할 IP 주소가 있는 호스트의 MAC 주소를 검색하기 위해 ARP 요청을 브로드캐스트합니다. 호스트가 ARP 요청에 응답하면 브리지는 해당 MAC 주소를 가진 호스트가 브리지의 eth0 뒤에 있음을 확인합니다. 그러나 인터페이스에 대해 계산된 ARP 브로드캐스트를 보고 싶습니다. 따라서 eth0의 패킷/바이트 수는 더 적지만 0이 아니어야 합니다.
2) eth0에는 아무것도 연결되어 있지 않으므로 캐리어가 없습니다. 플러그가 뽑힌 인터페이스에서 패킷을 보내는 것은 의미가 없습니다. "ip link" 명령을 사용하여 이를 볼 수 있습니다(이 ip
명령은 더 이상 사용되지 않습니다 ifconfig
. 인터페이스 카운터를 보는 데 사용할 수 있습니다 ip -s link
). eth0에 대해 이것을 볼 수 있습니다 NO-CARRIER
.
답변2
나는 같은 문제가 있었지만 모든 eth 구성에 HDADDR 매개 변수를 지정하여 해결했습니다. 따라서 ifconfig -a 명령을 사용하여 인터페이스 mac 주소를 찾은 다음 /etc/sysconfig/network-scripts/ifcfg-ethX에서 각 인터페이스 구성 파일을 편집하고 각 인터페이스 카드에 대한 정확한 mac 주소를 지정해야 합니다. Redhat에서는 여러 개의 물리적 인터페이스 카드가 있는 경우 인터페이스 HDADDR을 지정할 것을 권장합니다.
" HWADDR=MAC-address 여기서 MAC-address는 AA:BB:CC:DD:EE:FF 형식의 이더넷 장치의 하드웨어 주소입니다. 이 지시문은 인터페이스가 각 NIC에 연결되도록 여러 NIC가 있는 시스템에서 사용해야 합니다. 모듈에는 구성이 로드되는 순서에 관계없이 올바른 장치 이름이 할당됩니다. 이 지시어는 MACADDR과 함께 사용하면 안 됩니다.