Angular2 프로젝트를 제공하는 Fedora 24 서버가 있습니다. 서비스가 시작되면 3000
Angular2는 자동으로 포트를 엽니다. 3001
그러나 실행하면 nmap localhost
포트가 열려 있는 것으로 표시되지만 원격 시스템에서 nmap을 실행하면 포트가 닫힌 것처럼 보입니다.
iptables
어쩌면 이 포트를 공개적으로 열 수 있는 설정이 있을까요 ? 아니면 그런 것?
나는 실행하려고 :
iptables -A OUTPUT -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 3001 -j ACCEPT
그러나 이것은 도움이 되지 않습니다. 외부에서 스캔할 때 포트는 닫힌 상태로 유지되며 제공되는 내용을 볼 수 없습니다(내부 요청은 정상적으로 작동합니다).
출력 netstat --an | egrep "3000|3001"
:
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 :::3001 :::* LISTEN`
curl
서버의 "외부" IP 주소는 내부적으로는 잘 작동하지만 다른 시스템에서 실행할 때는 작동하지 않습니다.
답변1
최종 해결 방법은 다음 명령을 실행하는 것입니다.
firewall-cmd --zone=FedoraServer --add-port=3000/tcp
Linodes에 설정된 Fedora 24 또는 Fedora 24에서는 iptables에 TCP 항목이 없는 것 같습니다.
답변2
설명에 따르면 문제는 서버의 방화벽이 Angular 개발 포트로 들어오는 요청을 차단하고 있는 것 같습니다. 방화벽 구성은 매우 간단할 수도 있고 매우 복잡할 수도 있습니다. 주의를 기울여 수행 중인 작업이 무엇인지 확인하십시오.
즉, 가장 가능성 있는 해결책은 올바르게 가정한 대로 방화벽에서 포트를 여는 것입니다. 클라이언트가 이를 사용하려면 인바운드 및 아웃바운드 트래픽이 허용되어야 합니다. 아웃바운드 트래픽은 일반적으로 필터링되지 않으므로 그대로 둘 수 있습니다. 작동하도록 iptables 명령을 OUTPUT
변경하기 만 하면 됩니다 .INPUT
이것이 작동하지 않으면(또는 위의 방법을 시도하기 전에 더 좋음) 출력을 살펴보고 iptables -nvL --line-numbers
추가하려는 규칙과 유사한 규칙이 있는지 확인하십시오. 규칙을 위반할 위험을 최소화하려면 위 또는 아래에 규칙을 삽입하세요.
다음은 내가 의미하는 바의 예를 제공하기 위해 사용 중인 기계의 출력입니다.
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 5608K 815M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 3010K 621M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
3 68754 3002K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
4 14095 1083K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
5 397K 21M TCP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
6 45083 8704K UDP udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
7 128K 6265K REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
8 45085 8707K REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
9 1 52 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4647K packets, 1421M bytes)
num pkts bytes target prot opt in out source destination
Chain TCP (1 references)
num pkts bytes target prot opt in out source destination
1 56599 3172K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 54495 2814K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 158K 9164K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain UDP (1 references)
num pkts bytes target prot opt in out source destination
이는 여전히 매우 간단하지만 INPUT
체인에 새로운 규칙을 추가하는 것만으로는 도움이 되지 않습니다. 원하는 것과 유사한 규칙이 TCP
체인에 있으므로 여기에 규칙을 추가하겠습니다.
iptables -A TCP -p tcp --dport 3000 -j ACCEPT
그래도 문제가 해결되지 않으면 외부 컴퓨터가 IPv6을 사용하여 서버에 액세스하고 있는지 확인하고 그에 ip6tables
따라 사용하십시오.