ฉันมีเซิร์ฟเวอร์ที่ใช้งาน Wireguard (จึงต้องใช้ สวมหน้ากาก
) และคอนเทนเนอร์ที่ทำงานบนพอร์ต 2525
ฉันมีดังต่อไปนี้ iptables
กฎ:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 172.18.0.1:2525
iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE
เมื่อเชื่อมต่อกับ เซิร์ฟเวอร์:2525
คอนเทนเนอร์ Docker สามารถดูที่อยู่ IP จริงของฉันได้โดยตรง (1.2.3.4
). เมื่อเชื่อมต่อกับพอร์ต เซิร์ฟเวอร์:25
คอนเทนเนอร์ Docker มองเห็น IP ภายในเครื่องที่ให้บริการโดย เครือข่ายนักเทียบท่า
:
07 เม.ย. 12:45:46 mx postfix/smtpd[87]: ขาดการเชื่อมต่อหลังจาก CONNECT จากที่ไม่รู้จัก [172.18.0.1]
07 เม.ย. 12:45:46 mx postfix/smtpd[87]: ตัดการเชื่อมต่อจากคำสั่งที่ไม่รู้จัก [172.18.0.1] = 0/0
ฉันจะแน่ใจได้อย่างไรว่าคอนเทนเนอร์ Docker เห็นที่อยู่ IP สาธารณะอย่างถูกต้องขณะเชื่อมต่อกับพอร์ต 25 (และไม่ใช่เฉพาะเมื่อเชื่อมต่อกับพอร์ต 2525)
ขอบคุณ
# iptables -L -n -v -t แนท
CHAIN PREROUTING (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
52300 3131K DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 ถึง:172.18.0.1:2525
150K 8524K DOCKER ทั้งหมด -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE ตรงกับ dst-type LOCAL
Chain INPUT (นโยบายยอมรับ 0 แพ็กเก็ต, 0 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain OUTPUT (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
2 120 DOCKER ทั้งหมด -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE ตรงกับ dst-type LOCAL
Chain POSTROUTING (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
3385 256K MASQUERADE ทั้งหมด -- * !docker0 172.17.0.0/16 0.0.0.0/0
1733K 104M สวมหน้ากากทั้งหมด -- * !br-b147ffdbc9f3 172.18.0.0/16 0.0.0.0/0
0 0 สวมหน้ากาก tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:53
0 0 สวมหน้ากาก udp -- * * 172.17.0.2 172.17.0.2 udp dpt:53
0 0 สวมหน้ากาก tcp -- * * 172.18.0.2 172.18.0.2 tcp dpt:25
Chain DOCKER (ข้อมูลอ้างอิง 2 รายการ)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
12 1419 ส่งคืนทั้งหมด -- นักเทียบท่า0 * 0.0.0.0/0 0.0.0.0/0
0 0 คืนทั้งหมด -- 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 ถึง:172.17.0.2:53
0 0 DNAT udp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:5354 ถึง:172.17.0.2:53
107 6020 DNAT tcp -- !br-b147ffdbc9f3 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2525 ถึง:172.18.0.2:25
#ไอพีแอดเดรส
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 ขอบเขตโฮสต์ lo
valid_lft ตลอดไป reserved_lft ตลอดไป
inet6 :: โฮสต์ขอบเขต 1/128
valid_lft ตลอดไป reserved_lft ตลอดไป
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 32:d0:56:15:0a:64 brd ff:ff:ff:ff:ff:ff
ชื่อสำรอง enp0s3
ชื่อสำรอง ens3
inet 159.223.80.86/20 brd 159.223.95.255 ขอบเขต global eth0
valid_lft ตลอดไป reserved_lft ตลอดไป
inet 10.15.0.19/16 brd 10.15.255.255 ขอบเขต global eth0:1
valid_lft ตลอดไป reserved_lft ตลอดไป
inet6 2400:6180:0:d0::f57:6001/64 ขอบเขตทั่วโลก
valid_lft ตลอดไป reserved_lft ตลอดไป
ลิงค์ขอบเขต inet6 fe80::30d0:56ff:fe15:a64/64
valid_lft ตลอดไป reserved_lft ตลอดไป
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP กลุ่มเริ่มต้น qlen 1,000
ลิงค์/อีเธอร์ 32:dc:4a:e4:27:be brd ff:ff:ff:ff:ff:ff
ชื่ออื่น enp0s4
ชื่อสำรอง ens4
inet 10.130.244.15/16 brd 10.130.255.255 ขอบเขต global eth1
valid_lft ตลอดไป reserved_lft ตลอดไป
ลิงค์ขอบเขต inet6 fe80::30dc:4aff:fee4:27be/64
valid_lft ตลอดไป reserved_lft ตลอดไป
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1000
ลิงค์/ไม่มี
inet 10.200.200.52/24 ขอบเขต global wg0
valid_lft ตลอดไป reserved_lft ตลอดไป
5: wg1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
ลิงค์/ไม่มี
inet 10.222.111.1/24 ขอบเขต global wg1
valid_lft ตลอดไป reserved_lft ตลอดไป
6: br-b147ffdbc9f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state ค่าเริ่มต้นของกลุ่ม
ลิงค์/อีเธอร์ 02:42:46:21:70:c0 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 ขอบเขตทั่วโลก br-b147ffdbc9f3
valid_lft ตลอดไป reserved_lft ตลอดไป
ลิงค์ขอบเขต inet6 fe80::42:46ff:fe21:70c0/64
valid_lft ตลอดไป reserved_lft ตลอดไป
7: นักเทียบท่า 0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state ค่าเริ่มต้นของกลุ่ม
ลิงค์/อีเธอร์ 02:42:66:22:41:91 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 ขอบเขต global docker0
valid_lft ตลอดไป reserved_lft ตลอดไป
inet6 fe80::42:66ff:fe22:4191/64 ลิงค์ขอบเขต
valid_lft ตลอดไป reserved_lft ตลอดไป
9: veth31eff9d@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 สถานะเริ่มต้นของกลุ่ม UP
ลิงค์/อีเธอร์ e6:fb:80:5d:c7:a3 brd ff:ff:ff:ff:ff:ff ลิงค์-netnsid 0
ลิงค์ขอบเขต inet6 fe80::e4fb:80ff:fe5d:c7a3/64
valid_lft ตลอดไป reserved_lft ตลอดไป
19: veth01269f5@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b147ffdbc9f3 สถานะเริ่มต้นของกลุ่ม UP
ลิงค์/อีเธอร์ 36:f4:e7:43:5f:da brd ff:ff:ff:ff:ff:ff ลิงค์-netnsid 2
ลิงค์ขอบเขต inet6 fe80::34f4:e7ff:fe43:5fda/64
valid_lft ตลอดไป reserved_lft ตลอดไป