포트 80을 8080으로 리디렉션하여 로컬 시스템에서 작동


61

내 컴퓨터에서 포트 80의 트래픽을 8080으로 리디렉션했습니다.

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

내 컴퓨터를 제외한 모든 세계에서 잘 작동합니다. 저는 개발자이며 포트 80을 8080으로 리디렉션해야합니다.

내 IP는 192.168.0.111

내 웹 서버는 포트 8080에서 실행됩니다.

서버가 실행되는 동일한 컴퓨터 http://192.168.0.111/대신 웹 사이트를 열고 싶습니다 http://192.168.0.111:8080/.


수차에 대해 실례 합니다만 포트 80을 8080으로 전달하는 목적은 무엇입니까?
ma11hew28

2
@ mattdipasquale, 일반 사용자는 포트 80에 액세스 할 수 없으므로 일반 사용자로 Python flask와 같은 웹 서비스를 실행할 수 없습니다.
Christian

웹 서버를 포트 80에 바인딩하지 않는 이유는 무엇입니까?
David Foerster

5
루트가 아닌 사용자가 포트 80/443에 바인딩 할 수없고 웹 서비스를 루트로 실행하고 싶지 않기 때문에 추측 할 수 있습니다.
Pavel K.

답변:


79

루프백 인터페이스 OUTPUT용 패킷 이 체인을 통과하지 않으므로 체인 을 사용해야합니다 . 다음은 작동해야합니다. 로 실행 :PREROUTINGroot

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

1
포트 80은 전 세계적으로 접근 가능해야합니까? 귀하의 솔루션을 시도했지만 포트 번호 8080에 액세스 할 수 있지만 80은 작동하지 않습니다. @heemayl
alper

2
이것은 작동하지 않았다, 왜 이것이 투표되었는지 확실하지 않다
diyoda_

@Diyoda_ 작동하지 않습니다 정의하십시오 .
heemayl

3
나는 이것이 우분투 18.04에서 작동하지 않음을 확인할 수 있습니다
Ahmed Hamdy

2
우분투 18.10에서 나를 위해 일하지 않았다
Christopher Bradshaw

6

간단하게 iptables를 사용하여 포트 80과 8080을 모두 허용 한 다음 80을 8080으로 리디렉션하여 올바른 nic에 할당했는지 확인하십시오. 예를 들어 eth0을 사용합니다.

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

감사! Ubuntu 19
Vladimir Ishenko

1
iptable 변경 사항을 저장하는 것이 좋을 것입니다sudo apt-get install iptables-persistent
Vladimir Ishenko

6

이것은 나를 위해 일했습니다.

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

+1은 Ubuntu 18.04 (적어도 TCP의 경우)에서 작동하며 포트 7000-> 7001을 수행했으며 포트 7001을 수신하는 서버는 포트 7000에서 들어오는 연결을 수신했습니다.)
hanshenrik

1
올바른 네트워크 인터페이스를 사용해야합니다 eth0. 모든 시스템에서 호출 되는 것은 아닙니다
hanshenrik

4

대신에 다음을 iptables시도 할 수 있습니다. sudo ssh -gL 80:127.0.0.1:8080 localhost


2
이것은 옵션이지만 포트 80에 이미 웹 서버가 있기 때문에 원하는 것이 아닙니다. iptables로 웹 서버를 사용하고 포트 80에서 웹 서버를 계속 실행하는 것을 선호합니다. 난 그냥 다른 단계 대신 규칙을 적용해야 할 것 같아요PREROUTING
Max

예-Max가 제안한대로 포트 포워딩을 듣고있는 경우 포트 충돌이 발생합니다. 위의 답변이 더 일반적인 경우입니다.
cgseller

이 솔루션을 시도 할 때 "연결이 거부되었습니다"라는 메시지가 나타납니다.
mitchus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.