Centos
如何將流量從 CentOS Docker 容器中的 VM 重定向到主機埠?
我有這種情況:
- 安裝了 ufw 的執行 Debian 的主機。
- 一個 CentOS docker 容器,它有一個在特定 IP 上工作的 VM。
- 此 VM 有一個在容器上執行的應用程序呼叫
https://app.domain
將條目放入hosts
文件 ( APP_IP )。我想呼叫
localhost:7000
我的主機並使用容器中的 VM 應用程序。我已經在使用
-p 7000:7000
.我閱讀
iptables
並嘗試重定向容器上的流量,但沒有成功!
iptables
如果這是這種方式…任何人都可以舉一個我應該執行的命令範例嗎?**編輯:**在此之後我嘗試了:
IP_CONTAINER=xxx.xxx.xxx.xxx APP_IP=xxx.xxx.xxx.xxx echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING --protocol tcp --destination $APP_IP --dport 80 --source $IP_CONTAINER --jump DNAT --to-destination $APP_IP iptables -t nat -A POSTROUTING -j MASQUERADE
但仍然沒有成功!
我能夠****使用在 CentOS 容器中正確配置的代理從主機連接到 CentOS Docker 容器內的 VM 內的應用程序,該代理將流量從容器的公開 IP 轉發到 VM ip 和應用程序埠!
所以方法是……容器內的代理!
我將HAProxy與此配置一起用於
haproxy.conf
:global log 127.0.0.1 local0 debug defaults log global mode http timeout connect 5000 timeout check 5000 timeout client 30000 timeout server 30000 frontend apps bind CONTAINER_IP:80 bind CONTAINER_IP:443 option tcplog mode tcp default_backend apps backend apps mode tcp balance roundrobin option ssl-hello-chk server webserver1 APP_IP:APP_PORT check frontend api bind CONTAINER_IP:6443 option tcplog mode tcp default_backend api backend api mode tcp balance roundrobin option ssl-hello-chk server webserver1 APP_IP:APP_PORT check
我已經為容器啟用了轉發:
$ sysctl net.ipv4.conf.all.forwarding=1 $ sudo iptables -P FORWARD ACCEPT