전체 서브넷에 대해 ARP 항목( )을 추가하고 싶습니다 10.50.0.0/16
.
나는 시도했다:arp -v -i p4p1 -s 10.50.0.0 MAC_OF_P4P2 netmask 255.255.0.0 pub
그러나 명령은 다음을 반환합니다.
arp: SIOCSARP()
SIOCSARP: Invalid argument
하나씩 추가했는데 문제가 없었습니다.arp -v -i p4p1 -s 10.50.0.1 MAC_OF_P4P2
내가 원하는 것을 할 수 있는 방법이 있나요?
그것은 다음과 같습니다:arp -v -i p4p1 -s 10.50.0.0/16 MAC_OF_P4P2
이야기:
eth0
, p4p1
및 3개의 인터페이스가 있습니다 p4p2
.
p2p1
장치를 통해 연결 되지만 p2p2
말하자면 전선과 같습니다.
A.B.x.x
네트워크에 에 연결된 여러 서버가 있습니다 Eth0
.
액세스하려는 시스템에서 A.B.x.x
:
- 다음을 통해 직접
Eth0
:ping A.B.X.X
괜찮아요, 자동으로 실행됩니다
p2p1
->external device/wire
->를 통해p2p2
다음으로 리디렉션합니다Eth0
.ping 10.50.X.X
10.50.0.0/16
이 경우 인터페이스와 동일 A.B.0.0/16
하지만 인터페이스를 통해 가상 IP를 생성해야 합니다 p4p*
.
패킷은 IP 소스/대상을 유지해야 하며 10.50.x.x
도착할 때만 eth0
IP가 로 변환됩니다 A.B.X.X
.
단계별로 해봅시다.
10.50.0.0/16
내 인터페이스로 라우팅 합니다p4p1
.ip route add 10.50.0.0/16 dev p2p1
=> p4p1은 모른다Who has 10.50.0.152? Tell 10.0.0.1
10.50.0.0/16
에 연결할 ARP 항목을 설정해야 합니다 p4p2
.
답변1
네트워크 프록시 arp 항목(0xffffffff와 같지 않은 넷마스크)에 대한 지원이 Linux 2.2에서 제거되었습니다. 이는 다른 인터페이스에서 연결할 수 있는 모든 호스트에 대해 커널이 설정한 자동 프록시 arp 설정으로 대체됩니다(인터페이스에 대해 전달 및 프록시 arp가 활성화된 경우).
인용하다: https://manpages.courier-mta.org/htmlman7/arp.7.html
어쩌면 설정을 시도해 볼 수도 있습니다.
echo 1 > /proc/sys/net/ipv4/conf/"interface"/proxy_arp
인터페이스는 인터페이스 서브넷과 연결된 라우팅 테이블을 확인하고 arp 프록시 패킷을 보냅니다.
답변2
당신이 해야 할 일은 경로를 설정하는 것뿐입니다. 귀하의 질문에는 이 서브넷이 존재하는지 여부가 나와 있지 않습니다 10.50.0.0/16
.존재하다대상 장치 또는뒤에대상 장치이지만 그것은 중요하지 않습니다. 귀하의 기계에 관한 한 그것들은 정확히 동일합니다.
라우팅 테이블에 경로를 추가하면 대상 서브넷의 모든 트래픽이 지정된 IP를 가진 장치의 MAC 주소로 라우팅된다는 의미입니다. 예를 들어 ip route add 10.50.0.0/16 via 1.2.3.4
, 시스템이 내부 컴퓨터와 통신해야 하는 경우 10.50.0.0/16
MAC 주소를 찾아 1.2.3.4
해당 MAC 주소로 트래픽을 보냅니다.나가는 패킷에는 IP 주소가 없습니다.1.2.3.4
.
따라서 귀하의 솔루션은 간단합니다.
ip route add 10.50.0.0/16 via 1.2.3.4
^ 1.2.3.4
해당 MAC 주소를 가진 장치의 IP는 어디에 있습니까 00:XX:XX:XX:XX:XX
? 동일한 서브넷에 여러 인터페이스가 있는 경우(나쁜 생각일 수 있지만 항상 그런 것은 아님) 발신 인터페이스를 지정할 수 있습니다.
ip route add 10.50.0.0/16 via 1.2.3.4 dev p2p1