IPTables - 다른 IP로의 포트 및 포트(내부에서)

IPTables - 다른 IP로의 포트 및 포트(내부에서)

현재 포트 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:8080IPTables가 올바르게 작동하고 모든 것이 잘 작동합니다.

이제 문제는 네트워크 내부에서 이 포트를 어떻게 리디렉션할 수 있느냐는 것입니다. 내 도메인 이름은 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

관련 정보