Score:0

กำลังพยายามส่งต่อพอร์ต SMTP บนคอนเทนเนอร์นักเทียบท่าช่องสัญญาณ IPsec ที่แข็งแกร่งหรือไม่

ธง za

ฉันตั้งค่าอุโมงค์ VPN สำเร็จแล้วด้วย หงส์ที่แข็งแกร่ง ภายในคอนเทนเนอร์นักเทียบท่าและต้องการใช้การเชื่อมต่อทันเนลนั้นเพื่อส่งต่อพอร์ตเฉพาะเช่น SMTP ไปยังโฮสต์ที่อีกด้านหนึ่งของอุโมงค์ ในกรณีของฉัน โฮสต์ 10.0.0.10.

เป้าหมายคือสามารถใช้ SMTP ในแอปของฉันได้โดยตรงโดยการเชื่อมต่อกับ Strongswan-ภาชนะ บริการกลางๆแบบนี้

(smtp-host)-[IPSec-tunnel]-(strongswan-container [แสดงพอร์ต 25 และส่งต่อทุกอย่างไปยังทันเนล smtp-host])-[some-docker-network]-(my-mail-sending-app-container [ เรียก strongswan-container:25 สำหรับ smtp])

หลังจากอ่านเอกสารเกี่ยวกับเรื่องนี้แล้ว ฉันได้ลองสิ่งเหล่านี้ iptables คำสั่งบน Strongswan-ภาชนะ แต่ไม่ประสบความสำเร็จ:

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 10.0.0.10:25
iptables -t nat -A โพสต์ -p tcp -d 10.0.0.10 --dport 25 -j MASQUERADE

บน my-mail-sending-app-container ฉันพยายามวิ่ง

telnet strongswan-คอนเทนเนอร์25

แต่จะรอการตอบกลับจนกว่าจะหมดเวลา

ปัญหาของฉันคืออะไร iptables สั่งการ?

iptables-บันทึก เอาต์พุตหลังจาก Strongswan เชื่อมต่อกับอุโมงค์แล้ว:

root@14d43f1e2f55:/# iptables-บันทึก
# สร้างโดย iptables-save v1.8.4 ในวันพฤหัสบดีที่ 22 กรกฎาคม 16:25:04 น. 2564
*กรอง
:อินพุต ยอมรับ [1:112]
:ส่งต่อ ยอมรับ [0:0]
:เอาต์พุตยอมรับ [1:112]
-A INPUT -s 10.0.0.0/16 -d 192.168.112.2/32 -i eth0 -m นโยบาย --dir ใน --pol ipsec --reqid 1 --proto esp -j ยอมรับ
-A OUTPUT -s 192.168.112.2/32 -d 10.0.0.0/16 -o นโยบาย eth0 -m --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT
ให้สัญญา
# เสร็จสิ้นเมื่อ พฤ. 22 ก.ค. 16:25:04 น. 2564
# สร้างโดย iptables-save v1.8.4 ในวันพฤหัสบดีที่ 22 กรกฎาคม 16:25:04 น. 2564
*แนท
: ยอมรับ [0:0]
:อินพุต ยอมรับ [0:0]
:เอาต์พุตยอมรับ [2:1600]
:หลังยอมรับ [2:1600]
:DOCKER_OUTPUT - [0:0]
:DOCKER_POSTROUTING - [0:0]
-A OUTPUT -d 127.0.0.11/32 -j DOCKER_OUTPUT
-A POSTROUTING -d 127.0.0.11/32 -j DOCKER_POSTROUTING
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p tcp -m tcp --dport 53 -j DNAT --to-ปลายทาง 127.0.0.11:46701
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-ปลายทาง 127.0.0.11:58024
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p tcp -m tcp --sport 46701 -j SNAT --to-source :53
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p udp -m udp --sport 58024 -j SNAT --to-source :53
ให้สัญญา
# เสร็จสิ้นเมื่อ พฤ. 22 ก.ค. 16:25:04 น. 2564

ของฉัน ipsec.conf:

การตั้งค่าคอนฟิก
     เข้มงวดcrlpolicy=ไม่
     รหัสเฉพาะ=ไม่มี

# left เป็นแบบโลคัลโดยค่าเริ่มต้น มิฉะนั้นจะตรวจพบด้านซ้ายและขวาแบบไดนามิก
คอน %default

เชื่อมต่อ "ezvpn"
    การแลกเปลี่ยนคีย์=ikev2
    ก้าวร้าว=ใช่
    ike=(ตัวเข้ารหัสบางตัว) # พารามิเตอร์ Phase1
    esp=(ตัวเข้ารหัสบางตัว) # พารามิเตอร์ Phase2
    left=192.168.112.2 # local IP ที่ใช้เชื่อมต่อกับ IOS
    leftid=12.123.123.1 # IKEID (ชื่อกลุ่ม) ใช้สำหรับ IOS
    ไฟร์วอลล์ซ้าย=ใช่
    leftauth = psk
    rightauth=psk
    การกระจายตัว = ใช่
    right=12.123.123.2 #เกตเวย์ (IOS) IP
    rightsubnet=10.0.0.0/16
    ไฟร์วอลล์ขวา=ใช่
    อัตโนมัติ=เส้นทาง
    พิมพ์=อุโมงค์
    ikelifetime=180m
    คีย์ไลฟ์=60ม
cn flag
คุณสามารถเข้าถึงโฮสต์ SMTP (`10.0.0.10`) จากคอนเทนเนอร์ strongSwan ได้หรือไม่ คอนเทนเนอร์เปิดเผยพอร์ต 25 (ผ่าน `EXPOSE` หรือ `--expose`) หรืออาจเผยแพร่หรือไม่
za flag
@ecdsa ใช่ทั้งคู่ ปัญหาไม่เกี่ยวข้องกับนักเทียบท่า เพียงกล่าวถึงเพราะการตั้งค่า iptables พิเศษ
Score:0
ธง za

ฉันแก้ไขมันด้วยการติดตั้ง เทรฟิค ของฉัน หงส์ที่แข็งแกร่ง ภาชนะแล้วใช้ การกำหนดเส้นทาง TCP ความสามารถของ เทรฟิค เพื่อเปิดช่องพอร์ตภายใน

ไฟล์นักเทียบท่า (ฉันทราบดีว่าสิ่งนี้สามารถทำได้โดยใช้ เทือกเขาแอลป์ เช่นกัน):

จากอูบุนตู


RUN apt update && apt-get install -yf wget iputils-ping telnet strongswan iptables \
    && ln -sf /conf/ipsec.conf /etc/ipsec.conf \
    && ln -sf /conf/ipsec.secrets /etc/ipsec.secrets \
    && เสียงสะท้อน "net.ipv4.ip_forward=1" >> /etc/sysctl.conf \
    && wget -O /traefik.tar.gz https://github.com/traefik/traefik/releases/download/v2.4.12/traefik_v2.4.12_linux_amd64.tar.gz \
    && tar -zxvf /traefik.tar.gz \
    && ln -s /traefik /usr/bin/traefik


คัดลอก docker-entrypoint.sh /entrypoint.sh
สำเนา /สตรองสวอน /conf
สำเนา /traefik-conf /traefik-conf

CMD ["/entrypoint.sh"]

ของฉัน entrypoint.sh:

#!/bin/sh -e

{
    # รอเพื่อให้แน่ใจว่า ipsec เริ่มต้นเมื่อขึ้นอุโมงค์
    นอน2
    ipsec อัพ ezvpn
    traefik --configfile /traefik-conf/traefik.yml
} &

exec ipsec start --nofork "$@"

traefik-conf/traefik.yml:

# https://doc.traefik.io/traefik/routing/entrypoints/
จุดเข้า:
  smtp:
    ที่อยู่: ":1025" # พอร์ตที่รับฟังภายในเครือข่ายนักเทียบท่า

บันทึกการเข้าถึง: {}

ผู้ให้บริการ:
  ไฟล์:
    ไดเรกทอรี: /traefik-conf/dynamic/
    # ฉันใช้การกำหนดค่าแบบไดนามิกสำหรับการพัฒนาในพื้นที่
    ดู: จริง

API:
  แดชบอร์ด: จริง
  ไม่ปลอดภัย: จริง

/traefik-conf/dynamic/dynamic.yml:

ทีซีพี:
  # https://doc.traefik.io/traefik/routing/routers/#rule_1
  เราเตอร์:
    smtp-เราเตอร์:
      กฎ: "HostSNI(`*`)"
      จุดเข้า:
        - smtp
      บริการ: บริการ smtp

  # https://doc.traefik.io/traefik/routing/routers/#services
  บริการ:
    บริการ smtp:
      โหลดบาลานเซอร์:
        เซิร์ฟเวอร์:
          - ที่อยู่: 10.0.0.1:25 # แทนที่ด้วย IP เป้าหมายและพอร์ตบริการของคุณ

ดู ที่นี่ สำหรับตัวอย่างแบบเต็ม

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา