1. iptables를 사용하세요

1. iptables를 사용하세요

단일 NIC(eth1)에 2개의 IP가 구성된 Linux 시스템(RHEL 6.7)이 있습니다. 기본 주소(즉, 모든 트래픽이 발생하는 것으로 보이는 주소)는 10.0.0.23입니다. 다른 하나는 10.0.0.160입니다.

iptables를 사용하여 패킷의 대상 주소를 기반으로 소스 IP를 변경하는 방법을 찾고 있습니다. 일반적으로 트래픽은 10.0.0.23에서 "나가지만" 패킷의 대상이 10.0.0.1이라고 가정하면 패킷이 10.0.0.160에서 "나가기"를 원합니다.

그 이유는 네트워크의 방화벽이 내 통제하에 있지 않기 때문입니다. 10.0.0.160에서 10.0.0.1까지는 트래픽을 허용하지만 10.0.0.23에서 10.0.0.1까지는 허용하지 않는 규칙이 있습니다.

나는 모든 트래픽이 10.0.0.160에서 시작되는 것을 원하지 않고 오직 10.0.0.1로 가는 트래픽만 원합니다.

나는 nat 테이블과 사전 경로 규칙을 사용할 생각이지만 소스 주소를 변경하는 방법을 찾지 못했습니다. 도움이 된다면 eth1에 대한 별칭을 만들 수 있지만(eth1 및 eth1:0이 있게 됨) 현재 구성에 솔루션이 있는지 확인하고 싶었습니다.

어떤 조언이라도 미리 감사드립니다.

답변1

원하는 동작을 달성하는 두 가지 방법은 다음과 같습니다.

1. iptables를 사용하세요

SNAT대상을 사용하면 iptables요구 사항에 따라 소스 주소를 수정할 수 있습니다. 매뉴얼 페이지iptables 확장이런 말이 있습니다 SNAT.

이 대상은 nat 테이블, POSTROUTING 및 INPUT 체인, 그리고 이러한 체인에서만 호출되는 사용자 정의 체인에서만 유효합니다. 이는 패킷의 소스 주소를 수정해야 하고(이 연결의 향후 모든 패킷도 손상됨) 규칙 검사를 중지해야 함을 지정합니다.

귀하의 질문에 따라 다음 규칙은 다음으로 전송되는 패킷의 소스 10.0.0.1주소를 변경합니다 10.0.0.160.

$ iptables -t nat -A POSTROUTING --destination 10.0.0.1/32 -j SNAT --to-source 10.0.0.160

2. 정적 라우팅을 사용하세요

iptables또는 규칙을 사용하는 대신 다음 구문을 사용하여 대상 호스트에 대한 고정 경로를 라우팅 테이블에 추가합니다.

$ ip route add <destination>/32 via <gateway> src <alias>

귀하가 제공한 정보를 바탕으로 다음을 사용하게 됩니다.

$ ip route add 10.0.0.1/32 via <gateway> src 10.0.0.160

<gateway>질문에 이 주소가 제공되지 않았으므로 게이트웨이의 실제 IP 주소로 바꾸십시오 .

이제 목적지까지의 트래픽이 10.0.0.1에서 시작됩니다 10.0.0.160. 다른 모든 트래픽은 에서 기본 경로를 사용합니다 10.0.0.23.

관련 정보