4개의 이더넷 포트(eth0, eth1, eth2 및 eth3)가 있는 장치가 있습니다. 일부 포트를 구성했는데 결과는 ifconfig
다음과 같습니다.
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:90:0B:68:D9:ED
inet addr:192.168.0.81 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2601:1c0:5200:e950:290:bff:fe68:d9ed/64 Scope:Global
inet6 addr: fe80::290:bff:fe68:d9ed/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:3382 errors:0 dropped:1 overruns:0 frame:0
TX packets:9717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:363791 (355.2 KiB) TX bytes:13339318 (12.7 MiB)
Memory:dfe60000-dfe7ffff
eth1 Link encap:Ethernet HWaddr 00:90:0B:68:D9:EE
inet addr:192.168.0.90 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:44 errors:0 dropped:1 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2919 (2.8 KiB) TX bytes:438 (438.0 b)
Memory:dfe40000-dfe5ffff
eth3 Link encap:Ethernet HWaddr 00:90:0B:68:D9:F0
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::290:bff:fe68:d9f0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:308 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20454 (19.9 KiB) TX bytes:618 (618.0 b)
Memory:dfe00000-dfe1ffff
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:65536 Metric:1
RX packets:11986 errors:0 dropped:0 overruns:0 frame:0
TX packets:11986 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:14067159 (13.4 MiB) TX bytes:14067159 (13.4 MiB)
따라서 내 문제는 이더넷 케이블을 eth0에 연결할 때만 각 IP 주소(eth0, eth1 및 eth3에 연결된 주소)에 액세스할 수 있다는 것입니다. 케이블이 eth0에 연결되면 3개 장치 모두에 ping을 보낼 수 있습니다. eth1과 eth3에 연결하면 둘 중 하나를 ping할 수 없습니다. eth1과 eth3에 연결하면 링크 표시등이 켜집니다.
내가 실행하면 ethtool eth3
이라고 나옵니다 Link detected: yes
.
누구든지 어떤 아이디어가 있습니까?
감사해요!
답변1
이 질문은 다음과 같은 질문과 관련이 있습니다.비대칭 라우팅— 한 인터페이스에서 수신된 패킷은 다른 인터페이스로 응답을 보내므로 네트워크 외부에서 특정 IP 주소에 액세스할 수 없습니다.
이 경우 수신된 ICMP 핑 요청은 요청 eth1,2,3
으로 다시 라우팅되며 eth0
(네트워크에 물리적으로 연결되지 않은 경우) 담당자는 응답할 수 없습니다 eth1,2,3
. 해결책은 rp_filter
모든 인터페이스가 서로 독립적으로 응답하도록 역방향 경로 필터 커널 매개변수의 기본값을 1에서 2로 변경하는 것입니다 .
/etc/sysctl.conf
포함하도록 편집되었습니다 .$ grep '.rp_filter' /etc/sysctl.conf net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.eth0.rp_filter = 2 net.ipv4.conf.eth1.rp_filter = 2 net.ipv4.conf.eth2.rp_filter = 2 net.ipv4.conf.eth3.rp_filter = 2
구성 다시 로드:
$ sysctl -p