Am un server care rulează Wireguard (deci are nevoie mascaradă
) și un container care rulează pe portul 2525.
Am urmatoarele iptables
reguli:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 172.18.0.1:2525
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Când vă conectați la server:2525
direct, containerul Docker poate vedea adresa mea IP reală (1.2.3.4
). La conectarea la port server:25
, containerul Docker vede IP-ul local furnizat de rețeaua docker
:
Apr 07 12:45:46 mx postfix/smtpd[87]: conexiune pierdută după CONECTARE de la necunoscut[172.18.0.1]
Apr 07 12:45:46 mx postfix/smtpd[87]: deconectare de la comenzi necunoscute[172.18.0.1]=0/0
Cum mă asigur că containerul Docker vede corect adresa IP publică în timp ce mă conectez la portul 25 (și nu numai când mă conectez la portul 2525).
Mulțumiri
# iptables -L -n -v -t nat
PRERUTARE în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
52300 3131K DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 la:172.18.0.1:2525
150K 8524K DOCKER toate -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE se potrivește cu dst-type LOCAL
INTRARE în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
Ieșire în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
2 120 DOCKER toate -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE se potrivește cu dst-type LOCAL
POSTROUTING în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
3385 256K MASQUERADE toate -- * !docker0 172.17.0.0/16 0.0.0.0/0
1733K 104M MASQUERADE toate -- * !br-b147ffdbc9f3 172.18.0.0/16 0.0.0.0/0
0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:53
0 0 MASQUERADE udp -- * * 172.17.0.2 172.17.0.2 udp dpt:53
0 0 MASQUERADE tcp -- * * 172.18.0.2 172.18.0.2 tcp dpt:25
Lanț DOCKER (2 referințe)
pkts bytes target prot opt in out source destination
12 1419 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- br-b147ffdbc9f3 * 0.0.0.0/0 0.0.0.0/0
56 3192 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5354 la:172.17.0.2:53
0 0 DNAT udp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:5354 la:172.17.0.2:53
107 6020 DNAT tcp -- !br-b147ffdbc9f3 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2525 to:172.18.0.2:25
# adresă ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 ::1/128 scope host
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 32:d0:56:15:0a:64 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 159.223.80.86/20 brd 159.223.95.255 scope global eth0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet 10.15.0.19/16 brd 10.15.255.255 scope global eth0:1
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 2400:6180:0:d0::f57:6001/64 domeniu global
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::30d0:56ff:fe15:a64/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 32:dc:4a:e4:27:be brd ff:ff:ff:ff:ff:ff
altname enp0s4
altname ens4
inet 10.130.244.15/16 brd 10.130.255.255 scope global eth1
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::30dc:4aff:fee4:27be/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/niciuna
inet 10.200.200.52/24 scope global wg0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
5: wg1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/niciuna
inet 10.222.111.1/24 scope global wg1
valid_lft pentru totdeauna preferred_lft pentru totdeauna
6: br-b147ffdbc9f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP grup implicit
link/ether 02:42:46:21:70:c0 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-b147ffdbc9f3
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::42:46ff:fe21:70c0/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
7: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP grup implicit
link/ether 02:42:66:22:41:91 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::42:66ff:fe22:4191/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
9: veth31eff9d@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 stare UP grup implicit
link/ether e6:fb:80:5d:c7:a3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::e4fb:80ff:fe5d:c7a3/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
19: veth01269f5@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b147ffdbc9f3 stare UP grup implicit
link/ether 36:f4:e7:43:5f:da brd ff:ff:ff:ff:ff:ff link-netnsid 2
inet6 fe80::34f4:e7ff:fe43:5fda/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna