가상 인터페이스와 실제 이더넷 인터페이스 간의 내부 라우팅을 설정하는 방법(Linux)

가상 인터페이스와 실제 이더넷 인터페이스 간의 내부 라우팅을 설정하는 방법(Linux)

나는 사용할 수 있는 하나의 실제(가상과 반대로 별칭이라고도 함) 이더넷 인터페이스가 있는 Linux 상자를 가지고 있습니다(eth0은 다른 목적으로 사용됩니다. 사용할 수 없으며 더 많은 NIC를 추가할 수도 없습니다). eth1이라고 해봐

SNMP를 통해 일부 개체/엔티티를 제어해야 하므로 적절한 MAC 주소를 사용하여 각 개체에 대한 가상 이더넷 인터페이스를 설정했습니다. 나는 이것을 다음과 같이 한다(vif1의 예):

ip -family inet link add link eth1 name vif1 address <the MAC addr> type macvlan
ip link set vif1 up multicast on
ip route del default dev vif1 table main /* enable the pings/TFTP going out! */
ip route add default via 192.168.1.1 table main proto static metric /* restore orig */

eth1,vif1,vif2,... 모두 단일(원격) DHCP 서버에서 IP 주소를 가져옵니다. 물론 이러한 모든 IP 주소는 동일한 IP 서브넷(예: 10.11.1.0/24)에 있습니다.

문제: Linux 상자에서 DHCP 서버(예: 10.11.1.1) 시스템으로의 ping이 작동합니다. DHCP 서버 시스템에서 eth1 IP 또는 vif#X IP로 ping을 실행하지만(그만큼문제인 것 같습니다...) eth1만 ICMP 패킷에 응답합니다(ifconfig 카운터 및 Wireshark 스니핑으로 확인됨). 이 문제로 인해 vif 인터페이스의 IP 주소와 연결된 SNMP 에이전트에 연결할 수 없게 됩니다.

IP 패킷이 대상 vif#X에 도달하도록 내부 라우팅을 설정해야 할 것 같습니다. 새 IP 라우팅 테이블을 사용하여 IP 규칙을 추가하려고 시도했지만 아마도 (새 테이블) 올바르게 설정하지 않았을 것입니다... 누구든지 이 작업을 수행하는 방법(그리고 바람직하게는 이유도)을 말해 줄 수 있습니까?

Linux 상자는 Ubuntu9.04를 실행하고 DHCP 서버는 Windows XP SP3을 실행합니다.

답변1

마침내 해결되었습니다. ARP 관련 문제입니다.

  1. DHCP 서버는 IP 주소를 가상 인터페이스 MAC 주소에 할당하고 이 쌍을 서버의 로컬 ARP 테이블에 설정합니다.
  2. Linux 상자는 새 IP 주소를 요청한 가상 인터페이스에 연결합니다.
  3. PING은 두 가지 방식으로 작동합니다.
  4. 핑할 때~에서Linux에서 서버로, 실제 인터페이스(동일한 IP 서브넷에 있음)를 통해 나갑니다.
  5. 서버에서 핑을 보낼 때에게Linux, 다시 실제 인터페이스가 응답하므로것 같다마치 모든 것이 괜찮은 것처럼...

하지만

서버가 IP 패킷(제 경우에는 SNMP 메시지)을 보낼 때 가상 인터페이스의 MAC 주소를 사용합니다. Linux 상자에 도달하면 커널은 프레임을 전달하는 방법을 모르기 때문에 이러한 프레임을 버립니다. Wireshark를 실행하면 일반적으로 인터페이스가 무차별 모드로 설정되므로 이러한 메시지가 표시됩니다.

SNMP 메시지가 가상 인터페이스에 바인딩된 SNMP 에이전트에 도달하도록 하려면 IP 패킷에 다음이 있어야 합니다.실제 인터페이스의 MAC 주소(그러면 커널이 IP 주소를 기반으로 VLAN 라우팅을 수행하는 것 같습니다...)

이를 달성하는 방법은무료 ARPLinux의 상자 실제 인터페이스에서 서버로 요청하여 새로 할당된 IP 주소(가상 인터페이스 중 하나에...)가 실제 인터페이스의 MAC 주소에 의해 "소유"된다는 것을 나타냅니다. 그러면 서버의 ARP 테이블이 올바르게 업데이트됩니다.

그런데, 이는 SNMP 트래픽이 시작되기 전에 잠시 기다리는 이유도 설명합니다. 서버의 ARP 테이블 항목이 만료되어 서버가 응답하는 ARP 요청을 보냅니다.바르게에 의해실제 인터페이스

답변2

브리지 장치를 설정해 보는 것이 어때요? brctl addbr bridge물리적 장치의 IP 및 MAC를 해당 브리지에 추가하고 IP가 없는 장치를 브리지로 이동한 다음 VIF도 브리지에 연결합니다.

관련 정보