2014-03-28 3 views
2
에 물리적 네트워크를 통해 자동으로 트래픽을 보내기

나는 듀얼 포트 이더넷 NIC를 가지고의 내가 루프에서이 개 포트를 연결하고 2 이더넷 인터페이스에 다음과 같은 IP를 할당 한 가정 해 봅시다 :우분투

  • eth2를 -> 192.168.2.1
  • eth3에 -> 192.168.3.1
  • 내가 실제 네트워크, 예를 들면 통해 다른 1 개 포트의 트래픽을 보낼

ping 192.168.3.1192.168.2.1입니다. 그러나 Linux 커널의 TCP/IP 스택은이 두 주소가 로컬임을 인식하고 대신 트래픽을 루프백 어댑터로 보내 트래픽이 물리적 네트워크에 결코 도달하지 않도록합니다.

가장 가까운 해결책은 Anastasov의 send-to-self patch입니다. 불행히도 커널 3.6부터 중단되었으므로, 우분투 13.10 (커널 3.11)에서는 작동하지 않습니다. 나는 3.11 패치를 다시 작성 찾는 시도했다, 그러나 나는 우분투 배포판에이를 찾을 수없는 것 :

  • 순 /의 IPv4/devinet.c inetdevice.h/

    • 이/리눅스 포함
    • 순 /의 IPv4/fib_frontend.c
    • 순 /의 IPv4/route.c
    • 문서/네트워킹/IP-sysctl.txt

    내가 송신 - 투 - 자기 패치를 얻을 수있는 방법이 있나요 일하기, 또는 alternativ 이자형?

  • +3

    당신이 말하는 파일은 리눅스 커널 소스 트리의 일부입니다. 우분투 패치 소스를 얻는 방법에 대한 팁은 https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel을 참조하십시오. –

    +0

    아마도 ip forwarding 매개 변수를 확인하고 사용하지 않도록 설정해야합니까? 'sysctl -a | grep forward '출력을 보냅니다. –

    답변

    0

    당신은 실행 "IP"명령에 의해, 경로 테이블을 구성하는 시도 할 수 있습니다 :

    ip route add to unicast 192.168.3.1 dev eth2 
    ip route add to unicast 192.168.2.1 dev eth3 
    

    새로운 경로가 라우팅 테이블에 추가 될 것이며, 송신 라우팅 조회가 호스트 -에 충돌하기 전에 내용을 적용 할 수 있어야한다 따라서 "192.168.3.1"과 "192.168.2.1"사이의 로컬 경로이므로 트래픽을 루프백 "lo"대신 "eth2"및 "eth3"물리적 인터페이스를 통해 보내야합니다.

    직접 시도하지 않았지만 작동해야합니다 .

    +0

    정말입니까? ip_local_deliver는 매우 일찍 확인합니다. – osgx