面对世界
面对未来

Iptables 端口(流量)转发 教程

闲的没事干,不如水一篇文章来的舒服,首先声明,教程源自互联网,本教程只是缝合!

安装环境

  1. 一台可以访问互联网的 VPS ,能与被转发的端口互相通信
  2. 机器系统为 Linux 发行版 Debian、Redhat 系列,教程使用系统为 Debian 10 和 CentOS 8
  3. 系统镜像采用公有云(Ucloud)的公共镜像
  4. 关闭系统 SELinux

教程开始

Redhat (CentOS 8)系列

关闭并禁用系统默认的 Firewalld 防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

安装并启用 Iptables

dnf install iptables iptables-services -y
systemctl start iptables.service
systemctl enable iptables.service

CentOS 7 安装并启用 Iptables

yum install iptables iptables-services -y
systemctl start iptables.service
systemctl enable iptables.service

清空 Iptables 默认规则并保存

iptables -F
iptables -X
iptables -Z
service iptables save

开启系统内核转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

设置转发规则

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

service iptables save
service iptables restart

Debian (Debian 10)系列

Debian 系列发行版系统默认都是使用的 Iptables 顾不需要再次安装

清空 Iptables 默认规则并保存

iptables -F
iptables -X
iptables -Z
iptables-save > /etc/iptables.up.rules

开启系统内核转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

设置转发规则

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

iptables-save > /etc/iptables.up.rules
iptables-restore < /etc/iptables.up.rules

至此简单的使用 Iptables 转发端口(流量)的教程就到此结束,一下是进阶教程

进阶教程

多端口转发方案

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] -p tcp -m tcp --dport [目标端口段开始:目标端口段结束] -j SNAT --to-source [本机主网卡IP]
iptables -t nat -A POSTROUTING -d [目标IP] -p udp -m udp --dport [目标端口段开始:目标端口段结束] -j SNAT --to-source [本机主网卡IP]

查看目前 Iptables 规则

iptables -nL --line-number

查看目前 Iptables 的 NAT(转发)规则

iptables -t nat -vnL

删除指定 NAT(转发)规则

通过查看 NAT 规则找到规则对应的列号(一条规则就是一列,初始号为 1)

iptables -t nat -D POSTROUTING [规则列号]
iptables -t nat -D PREROUTING [规则列号]

总结

使用系统防火墙如 Iptables 等来转发流量是最稳定、资源开销最低的一种方式,同时可以看到转发后从使用者本地通过转发端到被转发端的具体延迟,而不是像其他第三方工具转发出来只会显示使用者本地到转发端的延迟,同时资源开销也很大,两者各有优劣;下一篇教程可能是使用 Firewalld 转发端口(流量)的教程,或者是如 Nginx、Brook、Gost、Socat 等第三方工具来实现端口(流量)转发;最后还是那句话,如有问题,欢迎评论留言,如果有被帮助到,请点一个赞,或者分享这篇文章,十分感谢!咕咕咕….

赞(8)
未经允许不得转载:FaceTheWorld's Blog » Iptables 端口(流量)转发 教程
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    爱国敬业诚信友善……哈哈哈哈哈哈~一定是一个幽默的博主

    略略略2年前 (2022-11-29)回复

分享源于热爱