使用 iptables 公开 minikube 服务

使用 iptables 公开 minikube 服务

我在基于 kvm 的 minikube 节点上运行 minikube 负载均衡器服务。我有以下网络路由,

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    14     0        0 br0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker_gwbridge
172.30.32.0     0.0.0.0         255.255.254.0   U     0      0        0 hassio
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.39.0    0.0.0.0         255.255.255.0   U     0      0        0 virbr0

我可以使用地址从浏览器访问网络服务http://192.168.39.12:32737/

我需要此服务可供我的本地网络访问。我尝试使用 iptables 将 IP 地址为 192.168.0.11 的主机的所有流量映射到端口 32737 上的 192.168.39.12:32737,使用以下 iptables 规则,

$ sudo iptables -I FORWARD -o virbr0 -d  192.168.39.12 -j ACCEPT
$ sudo iptables -t nat -I PREROUTING -p tcp --dport 32737 -j DNAT --to 192.168.39.12:32737
$ sudo iptables -I FORWARD -o virbr0 -d 192.168.0.11 -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -s 192.168.39.0/24 -j MASQUERADE
sunils@sunils-pc ~ $ sudo iptables -A FORWARD -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i virbr0 -o br0 -j ACCEPT
$ sudo iptables -A FORWARD -i virbr0 -o lo -j ACCEPT

但我仍然无法从我的主机 IP 地址访问我的服务

$ curl http://192.168.0.11:32737/
curl: (7) Failed to connect to 192.168.0.11 port 32737: Connection refused

有人能帮我如何使用 iptables 公开 minikube 服务吗

答案1

只使用 socat 怎么样?它也是多平台的


nohup socat TCP-LISTEN:443,fork TCP:<ingress address>:443 &
nohup socat TCP-LISTEN:80,fork TCP:<ingress address>:80 &

相关内容