라우팅

라우팅

인터페이스에서 수신된 모든 트래픽을 루프백하고 싶습니다. 이는 회선/시설 루프백과 동일합니다. 하나를 따르다유제, 나는 이걸했다:

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD --in-interface eth0 -j ACCEPT

하지만 보낸 사람은 아무런 메시지도 받지 못했습니다. 패킷은 수신 인터페이스에서 삭제됩니다. 광산에는 net.ipv4.ip_forward = 1전선이 없습니다 /etc/sysctl.conf.

답변1

라우팅

커널 패킷이 어디로 가는지 결정하는 기본 방법은 방화벽 규칙( , ) ip route이 아니라 라우팅 테이블(및 친구) 입니다 . IP 전달을 활성화하면 커널은 라우팅 테이블을 통해 들어오는 패킷을 처리하고 다시 보냅니다. 따라서 10.0.0.2의 트래픽이 어디서 왔는지에 관계없이 eth0을 통과하도록 하려면 다음을 수행하십시오.iptablesnftablesnet.ipv4.ip_forward = 1

ip route add 10.0.0.2/32 dev eth0

이제 기본적으로 커널은 트래픽이 eth0으로 들어갔다가 즉시 돌아오는 것을 확인하면 ICMP 리디렉션을 보내 소스 머신에 "이건 비효율적입니다. 직접 보내세요! 꺼야 합니다( net.ipv4.conf.eth0.send_redirects = 0). " 또한 소스 주소를 확인하여 예상 위치에서 오는지 확인합니다. 이 기능을 끌 수도 있습니다( net.ipv4.conf.eth0.rp_filter = 0).

이는 커널 라우팅 메커니즘을 거치기 때문에 IP TTL을 줄이는 등 필요한 작업이 수행됩니다. 그러나 소스 및 대상 IP 주소와 같은 사항은 변경되지 않습니다.

라우팅+NAT

소스 또는 대상 IP 주소도 변경해야 하는 경우 상단에 NAT를 추가할 수 있습니다. 예를 들어 소스 IP 주소가 로컬이어야 하는 경우 다음을 추가할 수 있습니다.

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE

기본값을 변경하지 않는 한 FORWARD는 이미 승인되어야 합니다. 그렇지 않은 경우 규칙을 추가하거나 기본 규칙을 변경할 수 있습니다.

네트워크 주소 변환 + 라우팅

패킷이 들어올 때 대상 IP 주소를 변경할 수도 있습니다. 이렇게 하면 라우팅 방법이 변경됩니다(이 변경은 라우팅이 확인하기 전에 수행되기 때문입니다). 이것은 다음과 같습니다:

iptables -t nat -A PREROUTING -s 10.0.0.1 -j DNAT --to-dest 10.0.0.2

--out-interface출력 인터페이스는 라우팅 후에만 알려지기 때문에 여기서는 이것을 사용할 수 없습니다 . --in-interface하지만 당신은 그것을 사용할 수 있습니다.

기존 도구

여러분도 꼭 살펴보세요iperf3그리고패킷 생성기.

관련 정보