iptables를 사용하여 포트 80 및 443을 8080 및 8443으로 리디렉션하는 방법은 무엇입니까?

iptables를 사용하여 포트 80 및 443을 8080 및 8443으로 리디렉션하는 방법은 무엇입니까?

DSpace라는 Tomcat 6 웹 애플리케이션에 대한 문서, 특히 실행에 대한 문서를 보고 있습니다.표준 포트(http://의 경우 80, https://의 경우 443)에서 DSpace를 실행합니다.

iptables를 사용하여 포트 80 및 443에서 8080 및 8443으로 트래픽을 리디렉션하여 :8080.

다음은 설명서에서 제공하는 명령입니다.

/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT -p tcp -d _[server_ip_address|server_ip_address]_ --dport 80 -j  REDIRECT --to-port 8080
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443

두 번째 줄, 특히 그 부분을 변경해야 할 부분이 있다고 생각합니다. -d _[server_ip_address|server_ip_address]_하지만 무엇인지는 잘 모르겠습니다. 해당 man페이지를 읽었 iptables지만 운이 없었습니다.

나는 -d _[server_ip_address|server_ip_address]_다음과 같이 변경해 보았습니다.

-d _[127.0.0.1|127.0.0.1]_ 

그리고:

-d _[54.224.121.116|54.224.121.116]_

그리고:

-d _[ec2-54-224-112-116.compute-1.amazonaws.com|ec2-54-224-112-116.compute-1.amazonaws.com]_

내가 겪은 오류는 Bad argument 'REDIRECT'다음과 같습니다.

host/network '_127.0.0.1' not found

누구든지 내가 뭘 잘못하고 있는지 발견하도록 도와줄 수 있나요?

고쳐 쓰다:두 번째 줄이 없어도 리디렉션이 작동한다고 생각하지만 아직 그 의도가 무엇인지 잘 모르겠습니다...

답변1

이 페이지의 잘못된 구두점으로 인해 혼란스러워하신 것 같습니다. 문법의 일부가 아닌 특정 토큰의 잔재 _입니다 . 또한, 이 문자는 IP를 구분하는 문자로 사용될 수 없으며 반드시 사용(쉼표)되어야 합니다 .[iptables|,

/sbin/iptables -t nat -A OUTPUT -p tcp -d 54.224.121.116,54.224.121.116 --dport 80 -j  REDIRECT --to-port 8080

답변2

fwiw 나는 실제로 일반 Apache에서 mod_proxy_ajp 사용을 고려할 것입니다. 사람들이 URL의 서버 이름 끝에 :8080 및 :8443을 입력/참조하지 않아도 되도록 하려는 것 같습니다. mod_proxy_ajp는 일반적으로 원하는 작업에 더 쉽고, 나중에 비용을 높이고 일부 로드 밸런싱을 수행하기로 결정한 경우 이미 mod_proxy_ajp 설정을 사용하고 있다면 그렇게 하는 것이 간단합니다. 이것은 내 프로덕션 서버 중 하나의 설정입니다.

<Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass         /   ajp://fqdn.for.server:8009/
ProxyPassReverse  /   ajp://fqdn.for.server:8009/

ProxyPass를 VirtualHost 구성에 넣을 수 있으며 다른 호스트를 구성하는 것과 거의 비슷합니다. 즉, 포트 443에 SSL을 구성하고 포트 80에 일반 텍스트를 구성할 수 있습니다.전체 거래에 대한 더 깊은 이해를 얻으려면.

Apache+mod_proxy가 이 작업을 수행하는 유일한 방법은 아니지만 제가 가장 많이 경험한 방법이고 여러분이 하려는 것(포트 전달을 위해 방화벽을 사용하는 것)보다 작업이 조금 덜한 것 같습니다. ).

답변3

내가 이해하는 바에 따르면, 두 번째 규칙은 서버에서 아웃바운드로 서버에 연결하려고 하면 (따라서 -d) 80로 리디렉션되도록 8080지정합니다. 로컬에서 생성된 패키지는 PREROUTING(from)에서 처리 되지 않기 때문입니다.http://www.docum.org/docum.org/kptd/및 "업데이트")

참고: 나는 일반적으로 해안 벽을 방화벽으로 사용하므로 내 대답이 방수 또는 무지개 맛이라고 생각하지 않습니다.

관련 정보