UFW 0.35 – 将传入端口2121redirect到VM上的端口21(其他接口)

我张贴在这里,因为我有一个服务器,我想redirect我的主要接口(eth0)的端口2121到我的辅助接口(virbr0)的端口21。

这是我的configuration:

Physical server OS : Ubuntu Server 16.04 LTS, Firewall software : UFW v.0.35 Virtual Machine OS : Windows 7 Professional Hypervisor : OpenStack KVM (QEMU). 

服务器IPconfiguration:

  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 

服务器路由configuration:

 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 

UFWconfiguration:

 I have followed these instructions : NAT and FORWARD with Ubuntu's ufw firewall - https://gist.github.com/kimus/9315140 

虚拟机IPconfiguration:

 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 

注意:虚拟机连接到Internet,出于某种原因,我想通过端口21上安装的FTP(Typsoft)服务器进行访问。

我的服务器的端口21已被其他东西使用。 我想使用端口2121访问虚拟机上的FTP服务器。

你可以帮我吗 ?

我从来没有使用UFW为我的iptablesconfiguration。 我一直使用cmd-line 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连接,并将它们通过端口21连接到您的虚拟机。

假设您的FORWARD策略设置为DROP ,您还必须确保允许从外部通过以下方式连接到您的VM:

 iptables -A FORWARD -d 192.168.122.59 -p tcp --dport 21 -j ACCEPT 

这两个规则都是必需的,以便NAT /转发在您的scheme中正常工作(但是,如果您的FORWARD策略是ACCEPT那么FORWARD链中的第二个规则不需要)。

如果这些不起作用,那么请将iptables -vnL的输出和iptables -t nat -vnL ,我可以进一步提供帮助。

希望这可以帮助。