背景:我正在 KVM-VM 内运行 Openshift 安装,我可以从 KVM-Host 访问 VM。我需要从另一台机器访问 Openshift。KVM 是通过使用 NAT 的虚拟网络设置的。
- KVM主机:192.168.33.26(eth0)
- KVM-Guest:192.168.100.246(virbr0 和 vnet0)
- 访问自:192.168.33.50
我的第一个想法是在 KVM 主机上使用 iptables 进行端口转发。
# taken from https://aboullaite.me/kvm-qemo-forward-ports-with-iptables/
# connections from outside
iptables -I FORWARD -o virbr0 -d 192.168.100.246 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 8443 -j DNAT --to 192.168.100.246:8443
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.246 --dport 8443 -j SNAT --to-source 192.168.33.26
# Masquerade local subnet
iptables -I FORWARD -o virbr0 -d 192.168.100.246 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -A FORWARD -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i virbr0 -o eth0 -j ACCEPT
iptables -A FORWARD -i virbr0 -o lo -j ACCEPT
这些规则似乎有效(Openshift 正在回答),但重定向到登录页面不受 iptables 的影响
https://192.168.33.26:8443/控制台-> 重定向至https://192.168.100.246:8443/oauth/授权而它应该是https://192.168.33.26:8443/oauth/授权
正如@week 指出的那样,重定向在应用程序层进行管理,我需要一个反向代理或一些路由。
有人可以提供 nginx 的配置吗 (我读到过它可以用作反向代理)?或者还有什么其他方法可以访问虚拟网络?