업데이트

업데이트

그래서 저는 실제로 사용하지 않는 예비 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, 도커 컨테이너 1에서 실행되는 nginx의 포트 80에 연결됩니다.

관련 정보