Linux 포트를 자체적으로 다시 매핑

Linux 포트를 자체적으로 다시 매핑

시나리오가 있습니다. 모뎀/라우터를 통해 허용해야 하는 서버 4개와 웹 인바운드 요청 3개가 있습니다. 포트는 https(ssl)443 ssh22 및 http80입니다. 4개 서버 모두 이를 원합니다.

다음과 같이 포트 전달 및 재매핑을 사용하도록 서버를 설정했습니다.

2241->port 22 on ip 192.168.0.41
2242->port 22 on ip 192.168.0.42
2243->port 22 on ip 192.168.0.43
2244->port 22 on ip 192.168.0.44

and so on using 44341(..2..3..4) and 8041(..2..3..4)

나는 이 설정을 좋아한다. 방화벽 뒤에서는 기본 포트(이 포트를 선호함)를 사용할 수 있고 외부에서는 (필요에 따라) 콜론:in을 사용할 수 있습니다.

두 가지 일이 일어났습니다. 모뎀의 오래된 라우터가 고장나서 새 라우터(비싼)를 구입했는데 이 새로운 기술은 8개 이상의 포트를 다시 매핑하는 것을 허용하지 않습니다. 나쁜. 가짜 유리 천장. 그런 다음 고객 사무실에서 설정했습니다. > 고객에게 갔는데 포트 포워딩이 전혀 없어서 최신 모뎀 라우터(더 비싼)를 구입하고 더 많은 작업이 필요할지 걱정되었습니다. 포트가 8개보다 많아 이에 대해 걱정했습니다. 이 포트 재매핑 기능은 이제 "고급" 기능입니다. 내가 틀렸어. *심지어* 더 비싼 새 모뎀 라우터도 포트 플랫 포워딩만 허용하고 포트 재매핑을 허용하지 않습니다. 그냥 리트윗하세요.

그래서 나는 크게 빗나갑니다. 그런데 포트 재매핑을 직접 할 수 있는 방법이 있나요?

다음과 같은 것을 사용하면 도움이 될까요?

iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 2202 -j REDIRECT --to-port 22

이 사용을 피해야 할 이유가 있습니까?

답변1

라우터가 포트 매핑을 지원하지 않으므로 각 호스트 또는 하나의 호스트에서 이 작업을 수행할 수 있습니다.

포트 2241에서 들어오는 트래픽을 localhost:22로 전달하려면 다음을 사용하십시오.

iptables -t nat -A PREROUTING -p tcp --dport 2241 -j REDIRECT --to-ports 22    

192.168.0.41:2242에서 들어오는 트래픽을 192.168.0.42:22로 전달하려면 DNAT(대상 NAT)를 사용할 수 있습니다. 예를 들어 다음을 사용하여 이 작업을 수행할 수 있습니다(더 안전한 솔루션이 있을 수 있음).

echo 1 > /proc/sys/net/ipv4/ip_forward # or use /etc/sysctl.conf
iptables -t nat -A PREROUTING -p tcp --dport 2242 -j DNAT --to-destination 192.168.0.42:22 
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -d 192.168.0.42 -p 22 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

답변2

라우터를 Linux 라우터로 교체할 계획이라면 문제가 되지 않습니다. 나는 이를 위해 토마토를 사용하는 것을 좋아하지만 freesco, ddwrt 및 openwrt가 잘 작동합니다. 제품에 익숙한 웹 GUI를 제공하고, iptables를 사용하여 이를 구현하며, 저가형 하드웨어에서 고급 기능을 제공합니다.

관련 정보