新闻中心
如何利用iptables实现端口tcp udp gre 三种转发?
2022-12-08
阅读()
来源:互联数据

如何利用iptables实现端口转发?最近买了一个VPS,并在上面搭了DOCKER,然后再DOCKER中安装Mysql。但只要将网络端口映射到宿主机上,那么外部网络就可以直接访问该数据。属实吓人。在Linux中通过设置Iptables实现端口转发,采用Ubuntu系统,Iptables可以实现多种三层网络协议的转发,本次主要用于记录tcp udp gre 三种转发。


一、iptables是啥


iptables是一个linux下的防火墙工具,它能帮助我们基于规则进行网络流量控制。它可以做到,但不限于以下功能:

? 允许/拒绝某种协议的链接建立,比如TCP,UDP

? 允许/拒绝 来自某个ip的访问

? 允许/拒绝某个端口被访问

利用iptables实现tcp udp gre 三种转发


二、如何利用iptables实现端口转发?


1、首先安装iptables:sudo apt-get install iptables


2、开启系统内核转发功能:vim /etc/sysctl.conf

删除 #net.ipv4.ip_forward=1 前的#号,开启ipv4 forward

sudo sysctl –p 若运行后显示 net.ipv4.ip_forward = 1,表示修改生效了


3、开启系统nat模块:iptables -t nat -A POSTROUTING -j MASQUERADE

到这一步我们就可以开始设置 tcp与udp的转发了,如下示例:

将对127.0.0.1的53端口的TCP与UDP访问转发到对应的119.29.29.29:53端口(127.0.0.1在这里只是一个示例,实际操作中建议修改为网卡的IP)

iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 53 -j DNAT --to-destination 119.29.29.29:53

iptables -t nat -A PREROUTING -d 127.0.0.1 -p udp --dport 53 -j DNAT --to-destination 119.29.29.29:53


4、接下来我们进行GRE协议的转发,GRE协议一般用在PPTP的VPN中,GRE是与TCP UDP一样的平级协议,处于网络中的第三层

首先加载 ip_nat_pptp,命令如下:modprobe ip_nat_pptp

卸载这个模块的命令为 modprobe -r ip_nat_pptp

然后就可以进行GRE协议端口的转发了,PPTP使用的是GRE 47端口,执行如下命令:

iptables -t nat -I PREROUTING -p 47 -j DNAT --to 119.28.82.203


如果想要查看当前 iptables中的nat规则可以使用如下命令:iptables -t nat -nL

iptables的规则默认重启就失效了所以需要保存在配置文件中,然后再网卡中加载,方法如下:

sudo iptables-save > /etc/iptables-rules

vim /etc/network/interfaces


找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:

pre-up iptables-restore < /etc/iptables-rules

这样当系统重启后则会自动加载我们设置好的转发规则


同样的 ip_nat_pptp 这个模块我们也需要配置开机自动加载,/etc/modules 这个文件用于设置在系统启动时自动加载的模块,系统在启动时会按照行数依次加载

vim /etc/modules

添加一行,输入 ip_nat_pptp 保存退出即可。


相关阅读