Iptables
使用我的 IPSec strongswan 隧道將特定埠上的傳入流量鏡像到另一個 IP
我想使用
strongswan
. 我strongswan
在 docker 容器中執行。為此,我希望我的內部伺服器
192.168.0.12
監聽其 25 埠並將流量轉發到同一埠上的隧道伺服器10.0.0.10:25
。到目前為止,我嘗試使用 iptables,但沒有成功。
net.ipv4.ip_forward
在主機和 docker 容器上都啟用了!我
iptables-save
在192.168.0.12
strongswan 連接到隧道後打開:(是的,我可以從 192.168.0.12 ping 10.0.0.10)# Generated by iptables-save v1.8.4 on Fri Jul 23 09:55:05 2021 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -s 10.0.0.0/16 -d 192.168.0.10/32 -i eth0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT -A OUTPUT -s 192.168.0.10/32 -d 10.0.0.0/16 -o eth0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT COMMIT # Completed on Fri Jul 23 09:55:05 2021 # Generated by iptables-save v1.8.4 on Fri Jul 23 09:55:05 2021 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [2:1600] :POSTROUTING ACCEPT [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-destination 127.0.0.11:45165 -A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.11:53306 -A DOCKER_POSTROUTING -s 127.0.0.11/32 -p tcp -m tcp --sport 45165 -j SNAT --to-source :53 -A DOCKER_POSTROUTING -s 127.0.0.11/32 -p udp -m udp --sport 53306 -j SNAT --to-source :53 COMMIT
命令
ip r
輸出:default via 192.168.16.1 dev eth0 192.168.16.0/20 dev eth0 proto kernel scope link src 192.168.16.10 # this is a docker internal network for my services 192.168.0.10/30 dev eth1 proto kernel scope link src 192.168.0.12
我嘗試了以下各種命令:
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 SNAT --to-source 192.168.0.12
但沒有成功。
我無法提供有關
ip r
主機或iptables-save
.我究竟做錯了什麼?
我使用
traefik
.
192.168.0.12
我在主機 ( )上安裝了 traefik,strongswan tunnel
並使用 aTCP router
將所有流量轉發到隧道。
traefik
安裝: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
traefik.yaml
:entryPoints: smtp: address: ":1025" accessLog: {} providers: file: directory: /traefik-conf/dynamic/ watch: true api: dashboard: true insecure: true
我的
/traefik-conf/dynamic/dynamic.yaml
:tcp: routers: smtp-router: rule: "HostSNI(`*`)" entryPoints: - smtp service: smtp-service services: smtp-service: loadBalancer: servers: - address: 10.0.0.10:25
執行
traefik
(我不知道如何正確地將其作為後台守護程序執行):traefik --configfile /traefik-conf/traefik.yml &
現在我可以
smtp server
使用192.168.0.12:1025
.我在 github 上使用 docker 創建了一個範例