포트가 열려야 하는 문제를 해결하는 방법은 무엇입니까?

포트가 열려야 하는 문제를 해결하는 방법은 무엇입니까?

iptables를 사용하여 데비안 컴퓨터에서 포트를 성공적으로 열었습니다. 여기에 이미지 설명을 입력하세요.

포트 12345에서 연결을 수신하는 go로 작성된 웹 서버를 시작했습니다. 오늘 아침까지 잘 작동했습니다. 이제 연결이 시간 초과로 만료되고 근본 원인을 찾는 방법을 모르겠습니다. 다음은 lsof 출력입니다(이제 시험해 보기 위해 12333으로 변경했습니다).

여기에 이미지 설명을 입력하세요.

netstat -tlpan 및 uname:

여기에 이미지 설명을 입력하세요.

tcpv4 이후에 netstat를 수신하도록 웹 서버를 구성합니다. 여기에 이미지 설명을 입력하세요.

코드 입력:

여기에 이미지 설명을 입력하세요.

IP테이블:

여기에 이미지 설명을 입력하세요.

답변1

일반적으로 다음과 같은 iptables 규칙이 있습니다.

# define standard chains and default behaviour (here ACCEPT, could be DROP)
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# everything as a continuation is OK, This will be the bulk => 1st rule
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# drop garbage packages
-A INPUT -m conntrack --ctstate INVALID -j DROP

# server services including your new web server
-A INPUT -p tcp -m tcp --dport 12345 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2103 -m conntrack --ctstate NEW -j ACCEPT

# (perhaps some more, do include SSH!)

# allow incoming ping (good for testing)
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

# rest / default: DROP!
-A INPUT -j DROP

# Again, everything related is allowed
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# allow DNS, both UDP and TCP
-A OUTPUT -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

# allow access to time servers (NTP)
-A OUTPUT -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT

# Allow anything else you need, e.g. for OS update servers
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 80,443 -j ACCEPT

# Allow outgoing ping
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# disallow the rest!
-A OUTPUT -j DROP

# Forward usually not needed except for routing and NAT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

RELATED 상태가 누락되었습니다.

위와 같은 규칙은 일반적으로 파일에 기록됩니다.

# /etc/sysconfig/iptables

명령을 통해 저장할 수 있습니다.

# iptables-save > /etc/sysconfig/iptables

해당 파일에서 복구

# iptables-restore < /etc/sysconfig/iptables

iptables.service시작 시 이 파일에서 테이블을 복원할 수 있는 시스템 서비스가 있습니다 . 시스템에 따라 이 서비스가 있을 수도 있고 없을 수도 있으며 비활성화될 수도 있습니다( systemctl status iptables).

서비스가 있는 경우( yum install iptables-servicesCentOS에) iptables 규칙을 테스트한 후 한 번 저장합니다.

# iptables-save > /etc/sysconfig/iptables

그런 다음 서비스를 활성화하십시오.

# systemctl enable iptables
# systemctl start iptables

다음 부팅 후 다음을 실행하여 현재 항목을 확인하여 이것이 작동하는지 테스트하십시오(여기의 모든 명령과 마찬가지로 루트로).

# iptables -L -nv

관련 정보