我张贴在这里,因为我有一个服务器,我想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 ,我可以进一步提供帮助。
希望这可以帮助。