Nu sunt un utilizator intens al sistemelor bazate pe Unix. Și am câteva probleme la deschiderea publicului portul unui server (80) și la redirecționarea către un container care rulează.
Deci, practic, am un container care rulează pe un server Ubuntu care rulează (IP 167.86.106.109), IP-ul containerului este 127.0.200.1 (și portul 80 este deschis).
Alergare TELNET 127.0.200.1 80
pe 167.86.106.109 și pot face un GET care returnează 200. Din afară am un timeout
Am făcut următoarele, dar încă nu pot accesa 167.86.106.109 pe portul 80 din exterior (eroare timeout):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to 127.0.200.1:80
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A OUTPUT -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to 127.0.200.1:80
iptables-save > /etc/iptables.rules
ufw permite http
Evident, am făcut ceva greșit, dar ce?
Ieșire din docker ps
:
2f7617d72299 polk-auction-ui:latest "/docker-entrypoint.â¦" Acum 52 de minute Până la 52 de minute 127.0.200.1:80->80/tcp polk-auction-ui
Acesta este pe Ubuntu 20.04 (64 de biți). Containerul este un container Docker (v 20.10.14)
Mai multe informații despre configurația mea actuală:
Sistemul de operare (IP 167.86.106.109) rulează pe un VPS, containerul docker la care vreau să ajung din exterior rulează un nginx cu următoarea configurație:
utilizator nginx;
lucrător_procese 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
evenimente {
conexiuni_muncitor 1024;
}
http {
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
log_format principal „$remote_addr - $remote_user [$time_local] „$request” '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log principal;
sendfile activat;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
#include /etc/nginx/conf.d/*.conf;
Server {
asculta 80;
Locație / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
#try_files $uri =404;
}
}
}
Rezultatul ufw status verbose
:
Stare: activ
Înregistrare: activată (scăzută)
Implicit: deny (incoming), allow (outgoing), deny (direcționat)
Profiluri noi: săriți
La Acțiune De la
-- ------ ----
22/tcp PERMITERE PENTRU Oriunde
80/tcp PERMITERE PENTRU Oriunde
30333 PERMITEȚI PENTRU Oriunde
22/tcp (v6) PERMISĂ ÎN Oriunde (v6)
80/tcp (v6) PERMITERE Oriunde (v6)
30333 (v6) PERMISĂ IN Oriunde (v6)
Ieșirea de iptables -L -v -n
: (Vin multe de la docker în sine)
INTRARE în lanț (politica DROP 37 pachete, 2168 octeți)
pkts bytes target prot opt in out source destination
32669 4524K f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
2374K 1737M ufw-before-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
2374K 1737M ufw-înainte de a introduce toate -- * * 0.0.0.0/0 0.0.0.0/0
274K 16M ufw-după-intrare toate -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-după-înregistrare-intrare toate -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-reject-input toate -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-track-input toate -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Lanț FORWARD (politica DROP 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
167M 118G DOCKER-UTILIZATOR toate -- * * 0.0.0.0/0 0.0.0.0/0
167M 118G DOCKER-ISOLATION-STAGE-1 toate -- * * 0.0.0.0/0 0.0.0.0/0
888K 166M ACCEPT pe toate -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
19186 1150K DOCKER toate -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT pe toate -- br-4c0567f529d0 !br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
19186 1150K ACCEPT pe toate -- br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
51M 59G ACCEPT pe toate -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
3433 971K DOCKER toate -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
39M 3429M ACCEPT pe toate -- br-56fce7b8bc16 !br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
3397 969K ACCEPTĂ toate -- br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
42M 53G ACCEPT pe toate -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
3397 969K DOCKER toate -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
33M 2699M ACCEPT pe toate -- br-9316082e3f65 !br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
3397 969K ACCEPT pe toate -- br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
37132 233M ACCEPT toate -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
0 0 DOCKER toate -- * docker0 0.0.0.0/0 0.0.0.0/0
13310 1453K ACCEPTĂ toate -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT toate -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
0 0 ufw-before-logging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-before-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-după-înainte toate -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-după-logging-forward toate -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-track-forward all -- * * 0.0.0.0/0 0.0.0.0/0
Ieșire în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
1835K 83M ufw-înainte-înregistrare-ieșire toate -- * * 0.0.0.0/0 0.0.0.0/0
1835K 83M ufw-înainte de ieșire toate -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-după-ieșire toate -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-după-înregistrare-ieșire toate -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-reject-output all -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-track-output toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț DOCKER (4 referințe)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- !br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 172.18.0.2 tcp dpt:8080
0 0 ACCEPT tcp -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.2 tcp dpt:8080
0 0 ACCEPT tcp -- !br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 172.20.0.2 tcp dpt:3306
0 0 ACCEPT tcp -- !br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 172.20.0.3 tcp dpt:8080
0 0 ACCEPT tcp -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.5 tcp dpt:30333
0 0 ACCEPT tcp -- !br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 172.18.0.5 tcp dpt:30333
0 0 ACCEPT tcp -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.3 tcp dpt:80
Lanț DOCKER-ISOLATION-STAGE-1 (1 referințe)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 toate -- br-4c0567f529d0 !br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
39M 3429M DOCKER-ISOLATION-STAGE-2 toate -- br-56fce7b8bc16 !br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
33M 2699M DOCKER-ISOLATION-STAGE-2 toate -- br-9316082e3f65 !br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
13310 1453K DOCKER-ISOLATION-STAGE-2 toate -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
167M 118G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț DOCKER-ISOLATION-STAGE-2 (4 referințe)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
73M 6129M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț DOCKER-USER (1 referințe)
pkts bytes target prot opt in out source destination
167M 118G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț f2b-sshd (1 referințe)
pkts bytes target prot opt in out source destination
28666 4185K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-after-forward (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-după-input (1 referințe)
pkts bytes target prot opt in out source destination
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:137
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138
81 4104 ufw-skip-to-policy-input tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
11583 599K ufw-skip-to-policy-input tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ufw-skip-to-policy-input all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE se potrivește cu DST-type BROADCAST
Lanț ufw-după-logging-forward (1 referințe)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limită: medie 3/min burst 10 semnalizatoare LOG 0 nivel 4 prefix „[UFW BLOCK]”
Lanț ufw-după-logging-input (1 referințe)
pkts bytes target prot opt in out source destination
12797 753K LOG toate -- * * 0.0.0.0/0 0.0.0.0/0 limită: medie 3/min burst 10 semnalizatoare LOG 0 nivel 4 prefix „[UFW BLOCK]”
Lanț ufw-după-logging-output (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-după-ieșire (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-before-forward (1 referințe)
pkts bytes target prot opt in out source destination
0 0 ACCEPT toate -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ufw-user-forward all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-before-input (1 referințe)
pkts bytes target prot opt in out source destination
5083 453K ACCEPT toate -- lo * 0.0.0.0/0 0.0.0.0/0
41195 5355K ACCEPT toate -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,STABLISHED
4634 827K ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
4634 827K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
4586 357K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
211K 74M ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
1823K 109M ufw-not-local all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp -- * * 0.0.0.0/0 239.255.255.250 udp dpt:1900
1823K 109M ufw-user-input toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-before-logging-forward (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-before-logging-input (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-before-logging-output (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-before-output (1 referințe)
pkts bytes target prot opt in out source destination
5089 453K ACCEPT toate -- * lo 0.0.0.0/0 0.0.0.0/0
1722K 74M ACCEPT pe toate -- * * 0.0.0.0/0 0.0.0.0/0 stare RELATED,STABLISHED
2488 227K ufw-user-output all -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-logging-allow (0 referințe)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limită: medie 3/min burst 10 semnalizatoare LOG 0 nivel 4 prefix „[UFW ALLOW]”
Lanț ufw-logging-deny (2 referințe)
pkts bytes target prot opt in out source destination
3643 763K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate Limită INVALIDĂ: medie 3/min burst 10
671 48807 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limită: medie 3/min burst 10 semnalizatoare LOG 0 nivel 4 prefix „[UFW BLOCK]”
Lanț ufw-not-local (1 referințe)
pkts bytes target prot opt in out source destination
1823K 109M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE se potrivește cu dst-type LOCAL
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE potrivește tip dst MULTICAST
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE se potrivește cu DST-type BROADCAST
0 0 ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 limită: medie 3/min burst 10
0 0 DROP toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-reject-forward (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-reject-input (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-reject-output (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-skip-to-policy-forward (0 referințe)
pkts bytes target prot opt in out source destination
0 0 DROP toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-skip-to-policy-input (7 referințe)
pkts bytes target prot opt in out source destination
11664 603K DROP toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-skip-to-policy-output (0 referințe)
pkts bytes target prot opt in out source destination
0 0 ACCEPT pe toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-track-forward (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-track-input (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-track-output (1 referințe)
pkts bytes target prot opt in out source destination
346 43729 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NOU
1599 153K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NOU
Lanț ufw-user-forward (1 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-user-input (1 referințe)
pkts bytes target prot opt in out source destination
2237 132K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2240 114K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
1663K 100M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30333
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:30333
Lanț ufw-user-limit (0 referințe)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limită: rafală medie 3/min 5 semnalizatoare LOG 0 nivel 4 prefix „[UFW LIMIT BLOCK]”
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Lanț ufw-user-limit-accept (0 referințe)
pkts bytes target prot opt in out source destination
0 0 ACCEPT pe toate -- * * 0.0.0.0/0 0.0.0.0/0
Lanț ufw-user-logging-forward (0 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-user-logging-input (0 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-user-logging-output (0 referințe)
pkts bytes target prot opt in out source destination
Lanț ufw-user-output (1 referințe)
pkts bytes target prot opt in out source destination
EDITAȚI | ×:
Docker-compose folosit:
versiunea: "3.8"
retele:
buline:
extern: adevărat
kusama:
extern: adevărat
Servicii:
polk-auction-ui:
imagine: polk-auction-ui:latest
container_name: polk-auction-ui
porturi:
- „127.0.200.1:80:80”
retele:
- buline
- kusama
imaginea este construită astfel:
# Pasul de construire
FROM nodul:14 ca build
WORKDIR /app
COPIEAZĂ pachetul.json yarn.lock ./
RUN instalarea firului
COPIE . ./
RUN yarn build:prod
# Run pasul
DE LA nginx:stabil-alpin
COPIEAZĂ nginx.conf /etc/nginx/nginx.conf
COPIEAZĂ --from=build /app/dist /usr/share/nginx/html
EXPUNEREA 80
CMD ["nginx", "-g", "daemon off;"]