Puncte:0

Nu se poate accesa containerul docker din afara sistemului de operare care îl rulează

drapel gb

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;"]
drapel co
De ce să nu publicăm portul? `-p 80:$containerport`
Cromm avatar
drapel gb
@BMitch Poți cheltui cu asta? Îmi pare rău, nu sunt sigur că înțeleg cum să public portul. Rețineți că portul containerului este deja mapat pe portul 80 al gazdei
drapel co
Trebuie să vedem cum rulați containerul. Includeți comanda (sau fișierul yaml) în întrebarea dvs.).
Cromm avatar
drapel gb
Am editat întrebarea pentru a adăuga fișierul docker-compose și Dockerfile folosit pentru a crea imaginea (dacă asta contează).
Puncte:1
drapel co

127.0.0.0/8 este interfața loopback, alias localhost.Pentru a publica pe toate interfețele, puteți elimina adresa IP din portul publicat:

versiune: "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:
            - „80:80”
        retele:
            - buline
            - kusama

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.