태그 보관물: iptables

iptables

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

이제 내가 가진 문제는 네트워크 내부 에서이 포트를 어떻게 리디렉션 할 수 있습니까? 내 도메인 이름 mywebsite.com은 내부 (10.32.25.1)에서 내 라우터 (내 Linux 서버)를 가리 키지 만 내부에서 1080.25.2의 포트 8080을 포트 80으로 리디렉션하고 싶습니다.

실마리?

편집 # 1

이 질문을 쉽게하기 위해이 다이어그램을 정리했습니다. 찾고있는 것이 잘못되었거나 잘못 표시되면 언제든지 업데이트하십시오.

                                 iptables
                                     |                   .---------------.
    .-,(  ),-.                       v               port 80             |
 .-(          )-.        port 8080________               |               |
(    internet    )------------>[_...__...°]------------->|      NAS      |
 '-(          ).-'     10.32.25.2    ^   10.32.25.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


답변

또한 대상 NAT를 수행 할 수 있도록 패키지 전달이 활성화되어 있어야합니다. 기본적으로 해제되어 있으므로 iptables 규칙이 작동하지 않습니다. 다음을 발행하여 사용할 수 있습니다.

echo 1 > /proc/sys/net/ipv4/ip_forward


답변

먼저 전달을 허용

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


답변

먼저 전달이 활성화되었는지 확인해야합니다.

cat /proc/sys/net/ipv4/ip_forward

그렇지 않으면 1을 실행 echo 1 > /proc/sys/net/ipv4/ip_forward합니다.

포트 80 및 443에서 10.32.25.1에 도달하는 트래픽을 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


답변