현재 포트 80에서 실행되는 NAS 상자가 있습니다. 외부에서 NAS에 접속하기 위해 다음과 같이 포트 8080을 NAS의 포트 80에 매핑했습니다.
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
이것은 매력처럼 작동합니다. 그러나 이는 네트워크 외부(직장, 다른 집 등)에서 사이트에 액세스하는 경우에만 작동합니다. 따라서 를 입력하면 mywebsite.com:8080
IPTables가 올바르게 작동하고 모든 것이 잘 작동합니다.
이제 문제는 네트워크 내부에서 이 포트를 어떻게 리디렉션할 수 있느냐는 것입니다. 내 도메인 이름은 mywebsite.com
내부(10.32.25.1)에서 내 라우터(Linux 서버)를 가리키지만 포트 8080을 내부에서 10.32.25.2의 포트 80으로 리디렉션하고 싶습니다.
어떤 단서가 있나요?
편집 #1
이를 돕기 위해 이 다이어그램을 구성했습니다. 귀하가 찾고 있는 내용이 정확하지 않거나 잘못 표현된 경우 언제든지 업데이트하시기 바랍니다.
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 8080________ | |
( internet )------------>[_...__...°]------------->| NAS |
'-( ).-' 10.32.25.2 ^ 10.32.25.1 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
답변1
마침내 방법을 찾았습니다. 먼저 "외부" 규칙을 추가해야 합니다 -i eth1
(eth1은 WAN 연결입니다). 두 가지 규칙을 더 추가해야 합니다. 결국 내가 얻은 것 :
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.32.25.2 --dport 80 -j MASQUERADE
답변2
또한 대상 NAT를 수행하려면 패킷 전달이 활성화되어야 한다는 점을 언급하는 것을 잊었습니다. 기본적으로 일반적으로 꺼져 있으므로 iptables 규칙은 적용되지 않습니다. 다음 명령을 실행하여 활성화할 수 있습니다.
echo 1 > /proc/sys/net/ipv4/ip_forward
답변3
먼저 전달 허용
echo 1 > /proc/sys/net/ipv4/ip_forward
그런 다음 iptable 규칙을 설정하십시오.
IF=eth1
PORT_FROM=8080
PORT_TO=80
DEST=10.32.25.2
iptables -t nat -A PREROUTING -i $IF -p tcp --dport $PORT_FROM -j DNAT --to $DEST:$PORT_TO
iptables -t nat -A POSTROUTING -p tcp -d $DEST --dport $PORT_TO -j MASQUERADE
예를 들어 다음 줄을 넣을 수 있습니다 /etc/rc.local
. 참고: Debian jessie가 이를 실행 가능하게 만들고 다음을 통해 rc.local 서비스를 활성화했기 때문에
systemctl enable rc-local.service
답변4
먼저 전달을 활성화했는지 확인해야 합니다.
cat /proc/sys/net/ipv4/ip_forward
그렇지 않은 경우 1
실행하십시오 echo 1 > /proc/sys/net/ipv4/ip_forward
.
10.32.25.1의 포트 80 및 443에 도착하는 트래픽을 10.32.25.2의 포트 80으로 전달하려면 다음 규칙을 사용해야 합니다.
iptables -t nat -A PREROUTING -d 10.32.25.1 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.32.25.2:80