전체 / 24 서브 네트워크의 Linux iptables NAT


7

내 목적은 모든 포트와 프로토콜에서 eth0에 도달하는 모든 IP 주소를 다음과 같은 방식으로 NAT (번역)하는 것입니다. ). 예를 들어 x = 20과 같이 한 줄의 행당 하나의 호스트에 대해이 작업을 수행 할 수 있습니다.

iptables -t nat -A PREROUTING -i eth0 -d 192.168.55.20 -j DNAT --to 192.168.42.20
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.20 -j SNAT --to 192.168.55.20

그러나 253 개의 가능한 모든 호스트를 번역 할 방법을 찾을 수 없습니다. 나는 이것을 시도했다 :

iptables -t nat -A PREROUTING -i eth0 -d 192.168.55.0/24 -j DNAT --to 192.168.42.0-192.168.42.255
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.20/24 -j SNAT --to 192.168.55.0-192-168.55.255

이로 인해 임의의 호스트 변환이 발생합니다. 로드 밸런싱에 유용합니다. 그러나 일대일로 일반 번역을하는 방법은 무엇입니까?

고맙습니다.


설정 파일에서 for 루프를 사용할 수 있습니다 ... 아마 포트에 제안 된 것과 비슷합니다 : here .
0range

답변:


10

보낸 사람 man iptables-extensions:

NETMAP
이 대상을 사용하면 전체 주소 네트워크를 다른 주소 네트워크에 정적으로 매핑 할 수 있습니다. nat 테이블의 규칙에서만 사용할 수 있습니다.

따라서 하나의 규칙 만 필요합니다.

iptables -t nat -A PREROUTING -d 192.168.55.0/24 -i eth0 -j NETMAP --to 192.168.42.0/24

"42"네트에서 처음 시작된 연결이 올바르게 표시되도록하려면 다음 두 번째 규칙을 완료하십시오.

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j NETMAP --to 192.168.55.0/24

고맙습니다! 잘 작동합니다. 아직도, 나는 이것을 어떻게 알지 못했는지 모른다. 몇 주가 지났고 기억이 나지 않습니다. NETMAP 이 언급되지 않은 안내서 만 읽으십시오 . 나는 iptables 매뉴얼 페이지 만 감추었다 . 이 소중한 항목에 감사드립니다!
Djee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.