Điểm:0

Đang cố gắng chuyển tiếp cổng SMTP trên bộ chứa docker có đường hầm Strongswan IPsec?

lá cờ za

Tôi đã thiết lập thành công một đường hầm vpn với thiên nga mạnh mẽ trong bộ chứa docker và muốn sử dụng kết nối được tạo đường hầm đó để chuyển tiếp các cổng cụ thể như SMTP tới máy chủ ở phía bên kia của đường hầm, trong trường hợp của tôi máy chủ 10.0.0.10.

Mục tiêu là có thể sử dụng trực tiếp SMTP trong ứng dụng của tôi bằng cách kết nối với Strongswan-container dịch vụ ở giữa như thế này

(smtp-host)-[IPSec-tunnel]-(strongswan-container [hiển thị cổng 25 và chuyển tiếp mọi thứ tới smtp-host được tạo đường hầm])-[some-docker-network]-(my-mail-sending-app-container [ gọi Strongswan-container:25 cho smtp])

sau khi đọc một số tài liệu về điều này, tôi đã thử những iptables lệnh trên Strongswan-container nhưng không thành công:

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 10.0.0.10:25
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.10 --dport 25 -j MASQUERADE

trên my-mail-gửi-app-container tôi đã thử chạy

telnet Strongswan-container 25

nhưng nó sẽ chỉ đợi phản hồi cho đến khi hết thời gian chờ.

vấn đề với tôi là gì iptables chỉ huy?

iptables-save đầu ra sau khi Strongswan đã kết nối với đường hầm:

root@14d43f1e2f55:/# iptables-save
# Được tạo bởi iptables-save v1.8.4 vào Thứ Năm ngày 22 tháng 7 16:25:04 năm 2021
*lọc
:INPUT CHẤP NHẬN [1:112]
:CHẤP NHẬN VỀ PHÍA TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [1:112]
-A INPUT -s 10.0.0.0/16 -d 192.168.112.2/32 -i eth0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
-A OUTPUT -s 192.168.112.2/32 -d 10.0.0.0/16 -o eth0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT
LÀM
# Hoàn thành vào Thứ Năm 22/07 16:25:04 2021
# Được tạo bởi iptables-save v1.8.4 vào Thứ Năm ngày 22 tháng 7 16:25:04 năm 2021
* tự nhiên
:CHẤP NHẬN TRƯỚC [0:0]
:INPUT CHẤP NHẬN [0:0]
:CHẤP NHẬN ĐẦU RA [2:1600]
:CHẤP NHẬN SAU ĐÓ [2:1600]
:DOCKER_OUTPUT - [0:0]
:DOCKER_POSTROUTING - [0:0]
-A ĐẦU RA -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-destination 127.0.0.11:46701
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-destination 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
LÀM
# Hoàn thành vào Thứ Năm 22/07 16:25:04 2021

của tôi ipsec.conf:

thiết lập cấu hình
     nghiêm ngặtcrlpolicy=không
     uniqueids=no

# trái là cục bộ theo mặc định, trái và phải được phát hiện động nếu không
kết nối %default

kết nối "ezvpn"
    keyexchange=ikev2
    tích cực = có
    ike=(some-ciphers) # Thông số giai đoạn 1
    esp=(some-ciphers) # Thông số phase2
    left=192.168.112.2 # local IP dùng để kết nối với IOS
    leftid=12.123.123.1 # IKEID (tên nhóm) dùng cho IOS
    tường lửa trái = có
    leftauth=psk
    rightauth=psk
    phân mảnh = có
    right=12.123.123.2 #gateway (IOS) IP
    rightsubnet=10.0.0.0/16
    tường lửa bên phải=có
    auto=lộ trình
    loại = đường hầm
    ikelifetime=180m
    tuổi thọ phím = 60m
lá cờ cn
Bạn thực sự có thể truy cập máy chủ SMTP (`10.0.0.10`) từ bộ chứa StrongSwan không? Bộ chứa có hiển thị cổng 25 (thông qua `EXPOSE` hoặc `--expose`) hoặc thậm chí có thể xuất bản nó không?
lá cờ za
@ecdsa có cho cả hai, vấn đề không liên quan đến docker, chỉ đề cập đến nó vì cài đặt iptables bổ sung
Điểm:0
lá cờ za

Tôi đã giải quyết nó bằng cách cài đặt traefik trong tôi thiên nga mạnh mẽ thùng chứa và sau đó sử dụng định tuyến TCP khả năng của traefik để lộ cổng đường hầm bên trong.

Dockerfile (Tôi hoàn toàn nhận thức được rằng điều này có thể đạt được bằng cách sử dụng núi cao cũng):

TỪ ubuntu


CHẠY 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 \
    && echo "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


SAO CHÉP docker-entrypoint.sh /entrypoint.sh
SAO CHÉP /strongswan /conf
SAO CHÉP /traefik-conf /traefik-conf

CMD ["/entrypoint.sh"]

Của tôi điểm vào.sh:

#!/bin/sh -e

{
    # đợi để đảm bảo ipsec được bắt đầu khi nâng cấp đường hầm
    ngủ 2
    ipsec lên ezvpn
    traefik --configfile /traefik-conf/traefik.yml
} &

exec ipsec start --nofork "$@"

traefik-conf/traefik.yml:

# https://doc.traefik.io/traefik/routing/entrypoints/
các điểm nhập cảnh:
  smtp:
    địa chỉ: ":1025" # cổng lắng nghe trong mạng docker

Nhật ký truy cập: {}

nhà cung cấp:
  tập tin:
    thư mục: /traefik-conf/dynamic/
    # Tôi sử dụng cấu hình động để phát triển cục bộ
    xem: đúng

API:
  bảng điều khiển: đúng
  không an toàn: đúng

/traefik-conf/dynamic/dynamic.yml:

tcp:
  # https://doc.traefik.io/traefik/routing/routers/#rule_1
  bộ định tuyến:
    smtp-bộ định tuyến:
      quy tắc: "HostSNI(`*`)"
      các điểm nhập cảnh:
        - smtp
      dịch vụ: smtp-dịch vụ

  # https://doc.traefik.io/traefik/routing/routers/#services
  dịch vụ:
    dịch vụ smtp:
      cân bằng tải:
        may chủ:
          - địa chỉ: 10.0.0.1:25 # thay thế bằng cổng dịch vụ & IP mục tiêu của bạn

Nhìn thấy đây cho ví dụ đầy đủ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.