그래서 실제로 사용하지 않은 예비 2코어 4GB DDR2 PC에 Ubuntu Server 18.04 LTS를 새로 설치했습니다. nginx, Grafana, Prometheus 등의 포트를 열려고 합니다. ufw를 설치하고 활성화하고 구성했는데 iptables가 올바른 것 같습니다. 하지만 저는 Linux에서 네트워킹을 처음 접했고 오랫동안 시스템 관리자였기 때문에 네트워킹을 제대로 다루지 않았습니다. 내 iptables, ufw 및 netstat -tulpen을 아래 코드 블록에 붙여넣었습니다. 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 또한 내 라우터(MikroTik, 아래 스크린샷에도 포함되어 있음)를 통해 포트를 전달했습니다. ), 하지만 나에게는 아무것도 효과가 없습니다 ...
root@server:/home/user# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
3000/tcp ALLOW IN Anywhere
3000/udp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
3000/tcp (v6) ALLOW IN Anywhere (v6)
3000/udp (v6) ALLOW IN Anywhere (v6)
root@server:/home/user# iptables --list-rules
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ufw-after-forward
-N ufw-after-input
-N ufw-after-logging-forward
-N ufw-after-logging-input
-N ufw-after-logging-output
-N ufw-after-output
-N ufw-before-forward
-N ufw-before-input
-N ufw-before-logging-forward
-N ufw-before-logging-input
-N ufw-before-logging-output
-N ufw-before-output
-N ufw-logging-allow
-N ufw-logging-deny
-N ufw-not-local
-N ufw-reject-forward
-N ufw-reject-input
-N ufw-reject-output
-N ufw-skip-to-policy-forward
-N ufw-skip-to-policy-input
-N ufw-skip-to-policy-output
-N ufw-track-forward
-N ufw-track-input
-N ufw-track-output
-N ufw-user-forward
-N ufw-user-input
-N ufw-user-limit
-N ufw-user-limit-accept
-N ufw-user-logging-forward
-N ufw-user-logging-input
-N ufw-user-logging-output
-N ufw-user-output
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 443 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 3000 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 3000 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
root@server:/home/user# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 101 14938 365/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 17390 541/sshd
tcp 0 0 127.0.0.1:42561 0.0.0.0:* LISTEN 0 18558 512/containerd
tcp6 0 0 :::22 :::* LISTEN 0 17392 541/sshd
udp 0 0 127.0.0.53:53 0.0.0.0:* 101 14937 365/systemd-resolve
udp 0 0 192.168.88.225:68 0.0.0.0:* 100 14982 288/systemd-network
root@server:/home/user#
Here's a test from my laptop running MacOS: $ nc -vzt 192.168.88.225 3000
nc: connectx to 192.168.88.225 port 3000 (tcp) failed: Connection refused
Here's my MikroTik Config currently:
[![MikroTik Config 1][1]][1] [1]: https://i.stack.imgur.com/yDHlB.png
[![MikroTik Config][2]][2] [2]: https://i.stack.imgur.com/FSFXU.png
I appreciate any help in advance :)
답변1
SSH(포트 22)만 수신하고 있는 것 같습니다. 실행 중인 다른 서버 데몬이 없는 것 같습니다.
구체적으로, 포트 3000에는 아무 것도 없으므로 해당 포트에 연결하면 "연결 거부됨"이 올바르게 반환됩니다. (방화벽으로 설정한 경우 "연결 시간 초과"라고 표시됩니다. 연결 거부됨은 응답 패킷이 반드시 필요함을 의미합니다.) 방화벽에서 포트가 열려 있다는 메시지를 받게 됩니다.)
nginx가 실행 중인지 확인하려면 "ps"를 사용하세요(아니면 실행 중이라고 말하고 싶습니다). 달리면 어떻게 될까요?
systemctl start nginx
systemctl status nginx
고쳐 쓰다
Docked nginx를 실행 중인 경우 다음 사항에 유의해야 합니다.Docker는 기본적으로 포트 전달을 수행하지 않습니다.. Docker에게 이러한 서비스를 "게시"하도록 명시적으로 지시해야 합니다. 이는 무엇보다도 동일한 호스트에 두 개 이상의 Docker 인스턴스가 있는 경우 어떤 컨테이너에 연결할지 확신할 수 없기 때문입니다. 따라서 도크 포트를 다음으로 매핑해야 합니다.다른호스트 포트, 이는 다시 수행해야 함을 의미합니다.분명히:
# Docker #1 options
-p 8001:80 # publish nginx's port 80 (default) to port 8001
# Docker #2
-p 8002:80 # publish nginx's port 80 (default) to port 8002
...and so on...
그런 다음 Mac에서 다음으로 이동할 수 있습니다.http://192.168.88.225:8001, Docker 컨테이너 1에서 실행 중인 nginx의 포트 80에 연결합니다.