案例
我在服务器上有一个虚拟机,需要将虚拟机(内网)的某个端口转发到公网上面。下面利用 iptables 做一下转发。
示例如下:
服务器:
公网 IP 地址:195.152.152.52
网卡出网端口:eno1
需要转发到的端口:3388
虚拟机:
内网 IP 地址:192.168.122.11
内网网关地址:192.168.122.1
需要映射到公网的端口:3389
方法
临时方法:
首先开启 ip 转发,这个在服务器上面一般是开启的,所以不用:
echo 1 > /proc/sys/net/ipv4/ip_forward
命令如下:
在服务器上执行,虚拟机无需任何改动:
- iptables –A INPUT –p tcp –m state —state NEW –m tcp —dport 3388 –j ACCEPT
- iptables –t nat –A PREROUTING –s 0/0 –d –p tcp —dport 3388 –j DNAT —to 192.168.122.11:3389
- iptables –t nat –A POSTROUTING –d 192.168.122.11 –p tcp —dport 3389 –o eno1 –j SNAT —to 192.168.122.1
这样即可完成转发。只转发 tcp 数据。
如需重启后仍然生效,可编辑 iptables 文件,保存命令即可。