라우터를 통해 루프백 트래픽 리디렉션

라우터를 통해 루프백 트래픽 리디렉션

일부 테스트 목적으로 단일 컴퓨터에서 여러 소켓 기반 응용 프로그램을 실행하고 이들 사이의 "실제" 네트워크 조건을 시뮬레이션하려고 합니다. 가장 쉬운 방법은 내 컴퓨터가 연결된 라우터를 통해 응용 프로그램 간의 모든 트래픽을 리디렉션하는 것입니다. 직관적으로 이것은 동일한 네트워크에 연결된 여러 시스템과 어느 정도 유사해야 하며 네트워크 자체는 로컬 시스템 간 소켓 연결보다는 라우터(100Mbps)의 기능에 의해 제한되어야 합니다.

내 컴퓨터(192.168.1.101)는 인터페이스를 통해 라우터(192.168.1.2)에 직접 연결됩니다 em1. IP 경로를 추가하여 이를 수행하려고 했습니다. 내 ip Route 명령의 결과는 다음과 같습니다.

default via 192.168.1.2 dev em1  proto static  metric 1024 
192.168.1.0/24 dev em1  proto kernel  scope link  src 192.168.1.101 
192.168.1.101 via 192.168.1.2 dev em1 

그러나 이것은 아무런 효과가 없는 것 같습니다. localhost를 ping하면 내 컴퓨터(192.168.1.101)에 대한 간접 ping과 거의 동일한 결과(약 0.040밀리초)가 반환되기 때문입니다. 동시에 네트워크의 다른 컴퓨터에 ping을 실행하면 ping 시간이 약 0.3-0.5밀리초가 됩니다.

나는 Traceroute를 시도했고 이것이 내가 얻은 것입니다:

$traceroute 192.168.1.200                    # my other computer
traceroute to 192.168.1.200 (192.168.1.200), 30 hops max, 60 byte packets
 1  192.168.1.200 (192.168.1.200)  1.005 ms  0.972 ms  0.954 ms

$traceroute 192.168.1.101
traceroute to 192.168.1.101 (192.168.1.101), 30 hops max, 60 byte packets
 1  localhost.localdomain (192.168.1.101)  0.051 ms  0.014 ms  0.013 ms

$traceroute 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  localhost.localdomain (127.0.0.1)  0.053 ms  0.015 ms  0.013 ms

내가 뭔가를 놓치고 있는 걸까요, 아니면 완전히 잘못된 방식으로 하고 있는 걸까요?

답변1

문제는 테이블 local에 다음과 같은 경로가 있다는 것입니다.

$ ip route show table local
[...]
local 192.168.1.101 dev eth0 scope host
[...]

[src=192.168.1.101 dst=192.168.1.101]로 패킷을 보내고 라우터가 반사를 위해 해당 패킷을 다시 보낼 것으로 예상할 때(어떤 사람들은 이런 종류의 것을 거부할 것임) 나가는 패킷이 해당 경로를 건너뛰기를 원하지만 반환된 패킷이 아닙니다.

이렇게 하려면 다음을 변경할 수 있습니다 ip rules.

local테이블 삭제 를 위한 포괄 규칙

# ip rule del from all table local

192.168.1.101->192.168.1.101 패킷에 대해 이 작업을 수행하지 않는 것으로 교체합니다.

# ip rule add not from 192.168.1.101 to 192.168.1.101 table local pref 0

그런 다음 netfilter를 사용하여 들어오는 패킷을 표시합니다.

# iptables -t mangle -I PREROUTING -s 192.168.1.101 -d 192.168.1.101 -j MARK --set-mark 1

local그리고 해당 테이블만 사용하도록 IP 규칙에 지시합니다.

# ip rule add fwmark 1 table local pref 1

(물론 ip route add to 192.168.1.101 via 192.168.1.2 책상 위에도 필요합니다 main)

답변2

다음은 *BSD 및 Linux에서 대기 시간, 패킷 재정렬 및 ​​패킷 손실을 유발할 수 있는 몇 가지 솔루션입니다.

  1. 사용웹 필터시뮬레이션패킷 손실

  2. TC 사용그리고네템지연 및 손실 초래

  3. FreeBSD에서는 다음을 사용하십시오.가상 네트워크. 이것은소개하다.

관련 정보