玩转CVM:利用iptables进行端口转发

本文将会教您如何利用iptables进行端口转发,快来学习吧!

NAT(端口转发)是什么

在网络上发送的所有数据包都是有原地址和目标地址的,NAT就是要对数据包的原地址或者目标地址(或者端口)进行修改的技术。

那为什么我们要修改IP地址呢?在互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。例如,在WIFI环境下看视频浏览网站的时候终端的IP(私有地址,手机、pad、电脑发出来的所有数据包原地址基本都是私有地址)。为了能让数据包在互联网上传送,必须要一个公网IP才行。所以进行访问互联网的时候,路由器会把所有的数据包的源地址转换成它的WLAN口的IP地址(这个就是公网ip,一般就是ISP分配的IP)。这个转换的技术就是NAT。当所访问的服务器返回数据包时,路由器会把所有数据包目标地址,由它的WLAN口的IP地址,改回内网的IP地址。这样才能上进行上网的操作。所以每天都在大量使用NAT技术。

使用iptables进行端口转发

1.启用系统转发功能

vi /etc/sysctl.conf

将 net.ipv4.ip_forward=0

修改成 net.ipv4.ip_forward=1

编辑sysctl后如果需要马上生效需要

sysctl -p

2.修改iptables命令

如果是同一个端口进行转发,可以直接键入下面两跳命令:

iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP]

iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP]

iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]

iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]

如果是不同端口进行转发,需要指定目标端口号和本地端口号:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport [本地端口] -j DNAT --to-destination [目标服务器IP]:[目标端口]

iptables -t nat -A PREROUTING -p udp -m udp --dport [本地端口] -j DNAT --to-destination [目标服务器IP]:[目标端口]

iptables -t nat -A POSTROUTING -d [目标服务器IP]/32 -p tcp -m tcp --dport [目标端口] -j SNAT --to-source [本地服务器IP]

iptables -t nat -A POSTROUTING -d [目标服务器IP]/32 -p udp -m udp --dport [目标端口] -j SNAT --to-source [本地服务器IP]

3.保存iptables并重启是配置生效

service iptables save

service iptables restart

4.查看iptables配置

iptables -t nat -L

扩展

多端口转发的方案 ( 将本地服务器的 50000~65535 转发至目标 IP 为 1.1.1.1 的 50000~65535 端口 ):

iptables -t nat -A PREROUTING -p tcp -m tcp –dport 50000:65535 -j DNAT –to-destination 1.1.1.1

iptables -t nat -A PREROUTING -p udp -m udp –dport 50000:65535 -j DNAT –to-destination 1.1.1.1

iptables -t nat -A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp –dport 50000:65535 -j SNAT –to-source [本地服务器IP]

iptables -t nat -A POSTROUTING -d 1.1.1.1/32 -p udp -m udp –dport 50000:65535 -j SNAT –to-source [本地服务器IP]

本文来自腾讯云计算社区,转载请注明出处:https://computeinit.com/archives/3298

发表评论

登录后才能评论
交流群