한 인터페이스에서 시작된 패킷을 호스트의 다른 인터페이스를 통해 라우팅하는 방법

한 인터페이스에서 시작된 패킷을 호스트의 다른 인터페이스를 통해 라우팅하는 방법

eth0과 eth1이라는 두 개의 인터페이스가 있습니다.

내 응용 프로그램이 eth1에서 실행 중입니다.

eth0(10.43.16.249)에서 들어오는 패킷은 다음 명령을 사용하여 eth1(10.43.18.110)로 사전 라우팅됩니다.

iptables -t nat -p udp -A PREROUTING -d 10.43.16.249 -j DNAT --to-destination 10.43.18.110

들어오는 패킷

10:34:06.373083 IP 10.43.18.124.67 > 10.43.16.249.67: BOOTP/DHCP, Request from 00:a0:bc:00:00:02, length 259

이상한 점은 내 애플리케이션의 응답이 eth0의 소스 IP(10.43.16.249)로 전송되는 것으로 표시되어 클라이언트를 통해 클라이언트로 가는 경로가 없기 때문에 응답 패킷이 클라이언트 IP(10.43.18.124)에 도달할 수 없다는 것입니다. eth0.

나가는 패킷

10:34:06.375043 IP 10.43.16.249.67 > 10.43.18.124.67: BOOTP/DHCP, Reply, length 300

eth0 패킷을 eth1을 통해 라우팅할 수 있는 방법이 있습니까?

라우팅 테이블

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 eth0
10.43.16.128    0.0.0.0         255.255.255.128 U         0 0          0 eth0
10.43.18.64     0.0.0.0         255.255.255.192 U         0 0          0 eth1

POSTROUTING SNAT를 시도했지만 라우팅 규칙을 살펴본 후 POSTROUTING이 발생하기 때문에 작동하지 않는 것 같습니다(eth0의 경로가 없음).

(eth1) 요청을 처리하기 위해 중간에 Keepalived NAT 로드 밸런서가 있기 때문에 요청이 서버의 eth0에 도달할 수 있습니다.

관련 정보