![동일한 인터페이스에서 들어오는 패킷의 소스 IP를 변경하고 이를 보는 방법은 무엇입니까?](https://linux55.com/image/176366/%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%97%90%EC%84%9C%20%EB%93%A4%EC%96%B4%EC%98%A4%EB%8A%94%20%ED%8C%A8%ED%82%B7%EC%9D%98%20%EC%86%8C%EC%8A%A4%20IP%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%98%EA%B3%A0%20%EC%9D%B4%EB%A5%BC%20%EB%B3%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
서버 B에서 eth0을 수신하는 애플리케이션을 서버 B에서 실행하고 있습니다.
서버 A의 GTP 패킷이 있는데 소스 주소를 변경하고 싶습니다. 패킷의 GTP 계층에는 공용 IP(예: xxxx)가 있습니다. 소스 IP를 xxxx로 변경하고 싶습니다.
애플리케이션은 xxxx 시리즈를 예상하지만 헤더에 10.xxx가 있으므로 패킷을 삭제하고 연결 설정에 실패합니다.
10.xxx(소스)---->xxxx(대상)
포털에 몇 가지 해결책이 있다는 것을 알고 있지만 내 문제는 나가는 인터페이스가 없고 애플리케이션이 변경된 IP(예: eth0의 xxxx)만 수신하고 응답한다는 것입니다. 패킷을 어떻게 볼 수 있나요? 그리고 tcpdump
?
나는 인터넷에서 다음과 같은 예제 규칙을 사용했습니다.
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to x.x.x.x
하지만 그건 내 목적에 부합하지 않습니다.
기본적으로 패킷은 gtp이며 지정된 인터페이스에서 나옵니다. 패킷은 gtp 계층의 공용 IP로 구성됩니다. 애플리케이션은 연결 요청 시 패킷 내에 존재하는 공용 IP를 찾기 때문에 지정된 소스 IP를 삭제합니다. 공용 IP를 src IP(연결 가능)로 할당할 수 있으면 연결이 설정되고 나가는 트래픽도 수정된 src IP를 응답으로 통과할 수 있으며 결국 연결이 설정됩니다.
패킷이 eth0에 도착하면 내 src IP를 GTP 계층에 존재하는 공용 IP로 변경하는 iptable 규칙을 가질 수 있습니까?