![동일한 서브넷에 있는 두 개의 네트워크 카드 - 라우팅을 설정해야 함](https://linux55.com/image/36063/%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%84%9C%EB%B8%8C%EB%84%B7%EC%97%90%20%EC%9E%88%EB%8A%94%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EC%B9%B4%EB%93%9C%20-%20%EB%9D%BC%EC%9A%B0%ED%8C%85%EC%9D%84%20%EC%84%A4%EC%A0%95%ED%95%B4%EC%95%BC%20%ED%95%A8.png)
까다로운 경우가 있습니다.
+---+ +----+
|D1 +->eth0---------<-eth0-+D2 |
| | | |
| +->eth1---------<-eth1-+ |
+---+ +----+
D2에서 동일한 서브넷의 IP 주소를 사용하는 경우 eth0
: , . D1의 인터페이스에는 할당된 주소가 없으며 스위치처럼 작동합니다.eth1
eth0
10.1.1.1/24
eth1
10.1.1.2/24
10.1.1.2
이제 D2가 를 통해 트래픽을 보낼 수 있기를 원하므로 eth0
패킷 경로는 D2(eth0)--D1(eth0)--D1(eth1)--D2(eth1)이어야 합니다.
D2에서 ping을 하면 10.1.1.2
로컬로 패킷이 전송됩니다. 즉, D1은 패킷을 수신하지 않습니다. 원하는 동작을 달성하려면 D2에서 무엇을 변경해야 합니까?
감사해요.
답변1
원하는 것은 Linux에서는 불가능합니다. 적어도 라우팅 계층에는 없습니다. 대상 주소가 로컬 인터페이스에 속하는 경우 패킷은 항상 루프백 인터페이스를 통과하므로 외부(RfC를 통해)로 라우팅될 수 없습니다.
대상을 서브넷에서 사용되지 않는 주소로 사용 iptables
및 변경하고 MAC 주소를 다른 NIC 중 하나로 정적으로 설정하지만 패킷을 로컬 주소와 일치시키지 않는 규칙을 사용하는 것이 가능할 것이라고 생각했습니다 .DNAT
ip neigh
DNAT
10.1.1.1
커널이 인식 하지 못하도록 가상 머신이나 네트워크 네임스페이스를 사용할 수 있습니다 eth0
. 그러나 들어오는 패킷을 물리적 인터페이스에서 가상 인터페이스로 이동하려면 프록시 ARP 및 DNAT가 필요합니다.
그렇다면 노력할 가치가 있습니까?
답변2
네트워크 네임스페이스가 옵션일 수 있습니다. 이들은 본질적으로 네트워크 스택의 독립적인 인스턴스이므로 적어도 이론적으로는 두 인터페이스를 분리할 수 있어야 합니다.
지난번에 그들과 놀려고 했을 때 나는 그들을 일하게 할 수 없었습니다.