이 특정 IP가 필요한 애플리케이션에 대해 IP를 스푸핑하는 방법은 무엇입니까?

이 특정 IP가 필요한 애플리케이션에 대해 IP를 스푸핑하는 방법은 무엇입니까?

일반적으로 이러한 문제는 한 쌍의 네트워크 인터페이스가 본딩을 통해 하나로 결합된 시스템 RHEL 6.4 서버에서 발생합니다. 이 시스템 IP 주소: 10.7.7.1. 다음으로 10.7.7.2포트 3306에서 MySQL 서버에 연결해야 하는 애플리케이션을 실행하는 시스템에서 . 실제로 MySQL은 10.7.7.3. 응용프로그램의 연결 설정은 하드코드되어 있으므로 변경할 수 없습니다. 그건 통해 들을 수 있어iptables주소 번역을 하세요. 응용 프로그램이 시도했을 때 그렇게 만드는 방법10.7.7.2:3306 iptables가로채서 에 요청을 보내고 10.7.7.3:3306응답을 다시 받아 애플리케이션에 공급합니까?

답변1

이는 iptables의 NAT 규칙을 사용하여 수행할 수 있습니다.

MySQL 서버가 동일한 호스트에 있는 경우 REDIRECT 규칙을 사용하십시오. 10.7.7.3이 아닌 포트 3306에 대한 모든 연결을 필요한 주소로 리디렉션합니다.

MySQL 서버가 동일한 호스트에 있지 않으면 DNAT 규칙을 사용하십시오.

답변2

가정하면

  • .1, .2, .3은 서로 다른 시스템입니다.
  • .2와 .3의 IP 주소는 교환할 수 없습니다.
  • .2는 Linux를 실행 중입니다.

.2에 추가해야 할 사항은 다음과 같습니다.

-t nat -A PREROUTING  -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3
-t nat -A POSTROUTING -d 10.7.7.3 -p tcp --dport 3306 -j SNAT --to-source      10.7.7.2

하지만...

어떤 이유로 .2에서 iptables 규칙을 생성할 수 없거나 .1에서 트래픽을 가로채려는 경우 .1에서 수행해야 할 작업은 다음과 같습니다.

-t nat -A POSTROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3

관련 정보