我在这里发帖是因为我有一台服务器,并且我想将主接口(eth0)的端口 2121 重定向到辅助接口(virbr0)的端口 21。
这是我的配置:
Physical server OS : Ubuntu Server 16.04 LTS,
Firewall software : UFW v.0.35
Virtual Machine OS : Windows 7 Professional
Hypervisor : OpenStack KVM (QEMU).
服务器IP配置:
eth0
address 91.121.XXX.XXX
netmask 255.255.255.0
network 91.121.XXX.0
broadcast 91.121.XXX.255
gateway 91.121.XXX.254
virbr0
address 192.168.122.1
gateway 192.168.122.1
服务器路由配置:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 91.121.XXX.254 0.0.0.0 UG 0 0 0 eth0
91.121.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
UFW 配置:
I have followed these instructions :
NAT and FORWARD with Ubuntu’s ufw firewall - https://gist.github.com/kimus/9315140
虚拟机 IP 配置:
IP address : 192.168.122.59
GATEWAY : 192.168.122.1
这就是我想要做的:
redirect 91.121.XXX.XXX:2121 to 192.168.122.59:21 (VM).
eth0:2121 -> virbr0:21
注意:虚拟机已连接到互联网,由于某些原因,我想访问安装在其端口 21 上的 FTP(Typsoft)服务器。
我的服务器的端口 21 已被其他设备使用。我想使用端口 2121 访问虚拟机上的 ftp 服务器。
你能帮助我吗 ?
答案1
我从未使用 UFW 进行 iptables 配置。我一直使用命令行 iptables/bash 脚本来完成防火墙。所以我的答案将采用这种格式。
这条规则是为了完成你想要的NAT:
iptables -t nat -A PREROUTING -d 91.121.XXX.XXX -p tcp --dport 2121 -j DNAT --to 192.168.122.59:21
它的作用是接受 IP 91.121.XXX.XXX:2121 上的 TCP 连接,并将它们 NAT 到端口 21 上的 VM。
假设您的FORWARD
策略设置为DROP
,您还必须确保允许通过以下方式从外部连接到您的虚拟机:
iptables -A FORWARD -d 192.168.122.59 -p tcp --dport 21 -j ACCEPT
为了在您的场景中 NAT/转发正常工作,这两条规则都是必需的(但是,如果您的FORWARD
策略是ACCEPT
,那么链中的第二条规则FORWARD
是不需要的)。
如果这些不起作用,那么请发布iptables -vnL
以及的输出iptables -t nat -vnL
,我可以提供进一步的帮助。
希望这可以帮助。