iptables端口转发脚本-实现VPS中转网络加速

  • A+
所属分类:软件
摘要

中继、端口转发的模型:A是你自己,B是中继的VPS,C是需要被中继的VPS,A要通过B来加速对C的访问。本文通过iptables端口转发实现此功能。

中继、端口转发的模型:A、B、C

A是你自己,B是中继的VPS,C是需要被中继的VPS(A要通过B来加速对C的访问,所以配置都是在B上面,配置完成后A连接B,B将流量转发给C,C再转回给B,B最后才转回给A。这就是整个过程。)

iptables配置中转教程

通过使用Xshell工具连接上VPS服务器后,需要先卸载或关闭默认的firewall防火墙,推荐使用Debian/Ubuntu系统,可以省略这一步;

yum -y install firewall*  ##安装firewall命令
yum -y remove firewall*   ##卸载firewall命令
systemctl start firewalld.service  ##打开firewall命令
systemctl stop firewalld.service   ##关闭firewall命令

单端口转发

同端口转发

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 -[目标IP] --dport [目标端口] -j SNAT --to-source [本地服务器主网卡绑定IP]iptables -t nat -A POSTROUTING -p udp -[目标IP] --dport [目标端口] -j SNAT --to-source [本地服务器主网卡绑定IP]

以下示例,假设你的国外服务器(被中转服务器)是 1.1.1.1 ,你的SS端口是 10000 ,而你这台正在操作的VPS的主网卡绑定IP(中转服务器)是 2.2.2.2 。

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:10000iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 1.1.1.1:10000iptables -t nat -A POSTROUTING -1.1.1.1 -p tcp -m tcp --dport 10000 -j SNAT --to-source 2.2.2.2iptables -t nat -A POSTROUTING -1.1.1.1 -p udp -m udp --dport 10000 -j SNAT --to-source 2.2.2.2

这个时候你V2rayN客户端填写节点信息的时候,账号配置和端口填写都不变,只需要修改IP为中转服务器IP即可 。

不同端口转发

将本地服务器(中转服务器 2.2.2.2 )的 10000 端口转发至目标IP(被中转服务器)为 1.1.1.1 的 30000 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000iptables -t nat -A POSTROUTING -1.1.1.1 -p tcp -m tcp --dport 30000 -j SNAT --to-source 2.2.2.2iptables -t nat -A POSTROUTING -1.1.1.1 -p udp -m udp --dport 30000 -j SNAT --to-source 2.2.2.2

这个时候你v2rayn客户端填写节点信息的时候,端口应该填 10000 而不是 30000 。

多端口转发

同端口转发

将本地服务器(中转服务器 2.2.2.2 )的 10000~30000 端口转发至目标IP(被中转服务器)为 1.1.1.1 的 10000~30000 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:30000 -j DNAT --to-destination 1.1.1.1:10000-30000iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:30000 -j DNAT --to-destination 1.1.1.1:10000-30000iptables -t nat -A POSTROUTING -1.1.1.1 -p tcp -m tcp --dport 10000:30000 -j SNAT --to-source 2.2.2.2iptables -t nat -A POSTROUTING -1.1.1.1 -p udp -m udp --dport 10000:30000 -j SNAT --to-source 2.2.2.2

这个时候你v2rayn客户端填写节点信息的时候,账号配置和端口填写都不变,只需要修改IP为中转服务器IP即可 。

不同端口转发

将本地服务器(中转服务器 2.2.2.2 )的 10000~20000 端口转发至目标IP(被中转服务器)为 1.1.1.1 的 30000~40000 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000iptables -t nat -A POSTROUTING -1.1.1.1 -p tcp -m tcp --dport 30000:40000 -j SNAT --to-source 2.2.2.2iptables -t nat -A POSTROUTING -1.1.1.1 -p udp -m udp --dport 30000:40000 -j SNAT --to-source 2.2.2.2

这个时候你v2rayn客户端填写节点信息的时候,端口应该填 10000~2000 而不是 30000~40000 。

一键脚本

安装wget和下载脚本并赋予权限:

yum install -y wget && wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh

回车确定后进入到脚本安装界面,输入数字 1 后程序自动安装,并会检测是否安装 iptables 同时也会进行 iptables 防火墙开机启动加载等配置,至此程序安装完毕。

iptables脚本使用
1、假设我们需要通过国内服务器进行中转,访问国外服务器,这里国内服务器是默认的外网IP(如果转发失败,请检查自己的网卡IP),国外服务器的IP假设为88.88.88.88 。

2、在服务器命令行输入执行: ./iptables-pf.sh

3、输入数字4添加端口转发,输入国外服务器的端口或端口段然后回车,再输入国外服务器的IP,后面的根据你的需求,可以一路回车就行,最后会让你看下配置是否有误,没错的话按任意键继续。

保存iptables配置

CentOS 系统:

service iptables save

Debian/Ubuntu 系统:

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

查看NAT规则

iptables -t nat -vnL POSTROUTING
iptables -t nat -vnL PREROUTING

删除NAT规则

通过上面的查看规则命令,查看规则后,确定你要删除的规则的顺序,下面的命令是删除 第一个 规则。

iptables -t nat -D POSTROUTING 1iptables -t nat -D PREROUTING 1

配置iptables开机加载

CentOS 系统:

service iptables save
chkconfig --level 2345 iptables on

Debian/Ubuntu 系统:

iptables-save > /etc/iptables.up.rules
echo -'#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +/etc/network/if-pre-up.d/iptables

			

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: