我有一台运行 KVM 虚拟化的专用服务器,它有 n 个公共 IP 地址,专用于 n-1 个面向 Web 的虚拟机。现在我想设置一些面向 Web 的虚拟机,这些虚拟机没有专用地址,而是从主机为它们转发 2 或 3 个端口。
桥梁配置为:
brctl show
假设我想转发
- 178.126.193.153:201 至 192.168.1.101:22
- 178.126.193.153:801 至 192.168.1.101:80
首先,我通过取消注释 # net.ipv4.ip_forward=1 在主机上启用了端口转发/etc/sysctl.conf
,然后我执行了 sysctl -p /etc/sysctl.conf service network restart 然后,类似于这个问题,我做到了:
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 201 -j DNAT --to-destination 192.168.1.101:22
iptables -A FORWARD -p tcp -d 192.168.1.101 --dport 201 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 801 -j DNAT --to-destination 192.168.1.101:80
iptables -A FORWARD -p tcp -d 192.168.1.101 --dport 801 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
我ifconfig
在客户机上运行并检查其接口 eth0 确实具有 IP 地址 192.168.1.101。虚拟机内部的接口称为eth0
,对吗?
但它不起作用:
nmap 178.126.193.153
没有显示开放端口 201 或 801,并且ssh -l root -p 201 178.126.193.153
让我
ssh: connect to host 178.162.193.153 port 201: Connection refused
ip route
在主机上返回 178.126.193.128/26 dev br0 proto kernel scope link src 178.162.193.153 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 169.254.0.0/16 dev br0 scope link metric 1004 default via 178.126.193.190 dev br0
我究竟做错了什么?