NAT VPS即基于NAT的虚拟服务器,是在虚拟服务器(VPS)的基础上,通过共享IP的方式,为这个IP下的服务器提供外网访问能力。通常仅提供有限数量的端口,因此相较独立ip的VPS价格更为低廉。在使用NAT VPS过程中,有许多人都有流量中转的需求,本文将介绍常见的几种中转方式。
一、直接使用iptables进行端口转发对于静态ip的NAT VPS,最直接的方式即使用iptables
进行转发。
由于Centos7+默认开启了firewall
,因此我们需要先关闭firewall
并安装iptables
。
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
当显示Active: inactive (dead)
时,即表示成功关闭了firewall
。
接着安装iptables
yum install -y iptables-services iptables-devel.x86_64 iptables.x86_64 systemctl enable iptables systemctl start iptables systemctl status iptables
当显示Active:active (exited)
时,表示iptables
成功开启。
以下参考OLVPS的教程:
需要购买中转机型的可以前往以下地址:中转购买
在使用iptables
转发流量之前请执行如下命令:
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf sysctl -p 然后我们清除下所有默认的iptables表:
iptables -F iptables -t nat -F service iptables save 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 --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] 执行完毕后,必须进行保存:
service iptables save 以下是一个实例(这里我们的应用端口为50020~50029,我们使用520022测试转发另外一个IP的6053端口,我们的主IP为:192.168.5.2,转发服务器IP为:1.1.1.1):
iptables -t nat -A PREROUTING -p tcp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A PREROUTING -p udp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A POSTROUTING -p tcp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 service iptables save 同样的,我们需要先关闭firewall
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh 该脚本会自动下载iptables,请选择1.安装iptables,后面会自动完成配置 接着使用脚本:
./iptables-pf.sh
选择4.添加 iptables
端口转发 后,会提示你依次输入 欲转发IP、欲转发端口、本地监听端口、本地IP、转发类型 确认之后即可完成中转设置。
下载并运行一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/socat.sh && chmod +x socat.sh && bash socat.sh
运行脚本:./socat.sh
选择3. 新增 SoCat
后,会提示你依次输入 本地监听端口、欲转发IP、欲转发端口、转发类型 确认之后即可完成中转设置。
安装HaProxy:
Debian/Ubuntu系统:apt-get -y install haproxy
Centos系统:yum -y install haproxy
打开 /etc/haproxy/haproxy.cfg
vi /etc/haproxy/haproxy.cfg
如未安装vim,请依据下列代码安装:
Debian/Ubuntu系统:
apt-get -y install vim
Centos系统:
yum -y install vim
按Insert按键将里面的内容替换为: global defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend ss-in bind *:[端口eg 6666]/[端口段eg 10000-30000] default_backend ss-out backend ss-out server server1 [被中转的远程VPS的IP] maxconn 20480 之后按ESC
键,并输入:wq
并回车
五、通过Brook完成中继 下载并安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/brook-pf.sh && chmod +x brook-pf.sh && bash brook-pf.sh 运行脚本:
bash brook-pf.sh 输入7. 设置 Brook 端口转发
并回车,再输入1. 添加 端口转发
,
根据提示输入Brook 本地监听端口(即中转NAT端口,不能重复)
,被转发的
IP
( 远程服务器ip), 被转发的端口
(远程服务器端口)。
确认之后即完成中转。
安装rinetd:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c
mkdir /usr/man/
make && make install
编辑转发规则:
vi /etc/rinetd.conf
格式命令为:
绑定的地址 绑定的端口 连接的地址 连接的端口 (eg:将所有发往本机9191端口的请求,转发到192.168.0.1的9191端口 就设置为0.0.0.0 9191 192.168.0.1 9191)
或 源地址 源端口 目的地址 目的端口 (eg:将所有发往本机2525端口的请求,转发到www.supervpschoice.xyz的25端口 就设置为 0.0.0.0 2525 www.supervpschoice.xyz 25)
之后按ESC
键,并输入:wq
并回车
启动规则:
rinetd -c /etc/rinetd.conf
查看状态:
netstat -antup
停止转发:
pkill rinetd
设置开机自动启动转发规则:
vi /etc/rc.local
rinetd -c /etc/rinetd.conf
无法无法联通可能是端口未打开,打开iptables
端口:
iptables -A INPUT -p tcp -m tcp --dport [中转端口] -j ACCEPT
NAT VPS即基于NAT的虚拟服务器,是在虚拟服务器(VPS)的基础上,通过共享IP的方式,为这个IP下的服务器提供外网访问能力。通常仅提供有限数量的端口,因此相较独立ip的VPS价格更为低廉。在使用NAT VPS过程中,有许多人都有流量中转的需求,本文将介绍常见的几种中转方式。
一、直接使用iptables进行端口转发对于静态ip的NAT VPS,最直接的方式即使用iptables
进行转发。
由于Centos7+默认开启了firewall
,因此我们需要先关闭firewall
并安装iptables
。
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
当显示Active: inactive (dead)
时,即表示成功关闭了firewall
。
接着安装iptables
yum install -y iptables-services iptables-devel.x86_64 iptables.x86_64 systemctl enable iptables systemctl start iptables systemctl status iptables
当显示Active:active (exited)
时,表示iptables
成功开启。
以下参考OLVPS的教程:
需要购买中转机型的可以前往以下地址:中转购买
在使用iptables
转发流量之前请执行如下命令:
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf sysctl -p 然后我们清除下所有默认的iptables表:
iptables -F iptables -t nat -F service iptables save 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 --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] 执行完毕后,必须进行保存:
service iptables save 以下是一个实例(这里我们的应用端口为50020~50029,我们使用520022测试转发另外一个IP的6053端口,我们的主IP为:192.168.5.2,转发服务器IP为:1.1.1.1):
iptables -t nat -A PREROUTING -p tcp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A PREROUTING -p udp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A POSTROUTING -p tcp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 service iptables save 同样的,我们需要先关闭firewall
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh 该脚本会自动下载iptables,请选择1.安装iptables,后面会自动完成配置 接着使用脚本:
./iptables-pf.sh
选择4.添加 iptables
端口转发 后,会提示你依次输入 欲转发IP、欲转发端口、本地监听端口、本地IP、转发类型 确认之后即可完成中转设置。
下载并运行一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/socat.sh && chmod +x socat.sh && bash socat.sh
运行脚本:./socat.sh
选择3. 新增 SoCat
后,会提示你依次输入 本地监听端口、欲转发IP、欲转发端口、转发类型 确认之后即可完成中转设置。
安装HaProxy:
Debian/Ubuntu系统:apt-get -y install haproxy
Centos系统:yum -y install haproxy
打开 /etc/haproxy/haproxy.cfg
vi /etc/haproxy/haproxy.cfg
如未安装vim,请依据下列代码安装:
Debian/Ubuntu系统:
apt-get -y install vim
Centos系统:
yum -y install vim
按Insert按键将里面的内容替换为: global defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend ss-in bind *:[端口eg 6666]/[端口段eg 10000-30000] default_backend ss-out backend ss-out server server1 [被中转的远程VPS的IP] maxconn 20480 之后按ESC
键,并输入:wq
并回车
五、通过Brook完成中继 下载并安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/brook-pf.sh && chmod +x brook-pf.sh && bash brook-pf.sh 运行脚本:
bash brook-pf.sh 输入7. 设置 Brook 端口转发
并回车,再输入1. 添加 端口转发
,
根据提示输入Brook 本地监听端口(即中转NAT端口,不能重复)
,被转发的
IP
( 远程服务器ip), 被转发的端口
(远程服务器端口)。
确认之后即完成中转。
安装rinetd:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c
mkdir /usr/man/
make && make install
编辑转发规则:
vi /etc/rinetd.conf
格式命令为:
绑定的地址 绑定的端口 连接的地址 连接的端口 (eg:将所有发往本机9191端口的请求,转发到192.168.0.1的9191端口 就设置为0.0.0.0 9191 192.168.0.1 9191)
或 源地址 源端口 目的地址 目的端口 (eg:将所有发往本机2525端口的请求,转发到www.supervpschoice.xyz的25端口 就设置为 0.0.0.0 2525 www.supervpschoice.xyz 25)
之后按ESC
键,并输入:wq
并回车
启动规则:
rinetd -c /etc/rinetd.conf
查看状态:
netstat -antup
停止转发:
pkill rinetd
设置开机自动启动转发规则:
vi /etc/rc.local
rinetd -c /etc/rinetd.conf
无法无法联通可能是端口未打开,打开iptables
端口:
iptables -A INPUT -p tcp -m tcp --dport [中转端口] -j ACCEPT
NAT VPS即基于NAT的虚拟服务器,是在虚拟服务器(VPS)的基础上,通过共享IP的方式,为这个IP下的服务器提供外网访问能力。通常仅提供有限数量的端口,因此相较独立ip的VPS价格更为低廉。在使用NAT VPS过程中,有许多人都有流量中转的需求,本文将介绍常见的几种中转方式。
一、直接使用iptables进行端口转发对于静态ip的NAT VPS,最直接的方式即使用iptables
进行转发。
由于Centos7+默认开启了firewall
,因此我们需要先关闭firewall
并安装iptables
。
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
当显示Active: inactive (dead)
时,即表示成功关闭了firewall
。
接着安装iptables
yum install -y iptables-services iptables-devel.x86_64 iptables.x86_64 systemctl enable iptables systemctl start iptables systemctl status iptables
当显示Active:active (exited)
时,表示iptables
成功开启。
以下参考OLVPS的教程:
需要购买中转机型的可以前往以下地址:中转购买
在使用iptables
转发流量之前请执行如下命令:
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf sysctl -p 然后我们清除下所有默认的iptables表:
iptables -F iptables -t nat -F service iptables save 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 --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] 执行完毕后,必须进行保存:
service iptables save 以下是一个实例(这里我们的应用端口为50020~50029,我们使用520022测试转发另外一个IP的6053端口,我们的主IP为:192.168.5.2,转发服务器IP为:1.1.1.1):
iptables -t nat -A PREROUTING -p tcp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A PREROUTING -p udp --dport 50022 -j DNAT --to-destination 1.1.1.1:6053 iptables -t nat -A POSTROUTING -p tcp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 6053 -j SNAT --to-source 192.168.5.2 service iptables save 同样的,我们需要先关闭firewall
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh 该脚本会自动下载iptables,请选择1.安装iptables,后面会自动完成配置 接着使用脚本:
./iptables-pf.sh
选择4.添加 iptables
端口转发 后,会提示你依次输入 欲转发IP、欲转发端口、本地监听端口、本地IP、转发类型 确认之后即可完成中转设置。
下载并运行一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/socat.sh && chmod +x socat.sh && bash socat.sh
运行脚本:./socat.sh
选择3. 新增 SoCat
后,会提示你依次输入 本地监听端口、欲转发IP、欲转发端口、转发类型 确认之后即可完成中转设置。
安装HaProxy:
Debian/Ubuntu系统:apt-get -y install haproxy
Centos系统:yum -y install haproxy
打开 /etc/haproxy/haproxy.cfg
vi /etc/haproxy/haproxy.cfg
如未安装vim,请依据下列代码安装:
Debian/Ubuntu系统:
apt-get -y install vim
Centos系统:
yum -y install vim
按Insert按键将里面的内容替换为: global defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend ss-in bind *:[端口eg 6666]/[端口段eg 10000-30000] default_backend ss-out backend ss-out server server1 [被中转的远程VPS的IP] maxconn 20480 之后按ESC
键,并输入:wq
并回车
五、通过Brook完成中继 下载并安装一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/brook-pf.sh && chmod +x brook-pf.sh && bash brook-pf.sh 运行脚本:
bash brook-pf.sh 输入7. 设置 Brook 端口转发
并回车,再输入1. 添加 端口转发
,
根据提示输入Brook 本地监听端口(即中转NAT端口,不能重复)
,被转发的
IP
( 远程服务器ip), 被转发的端口
(远程服务器端口)。
确认之后即完成中转。
安装rinetd:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c
mkdir /usr/man/
make && make install
编辑转发规则:
vi /etc/rinetd.conf
格式命令为:
绑定的地址 绑定的端口 连接的地址 连接的端口 (eg:将所有发往本机9191端口的请求,转发到192.168.0.1的9191端口 就设置为0.0.0.0 9191 192.168.0.1 9191)
或 源地址 源端口 目的地址 目的端口 (eg:将所有发往本机2525端口的请求,转发到www.supervpschoice.xyz的25端口 就设置为 0.0.0.0 2525 www.supervpschoice.xyz 25)
之后按ESC
键,并输入:wq
并回车
启动规则:
rinetd -c /etc/rinetd.conf
查看状态:
netstat -antup
停止转发:
pkill rinetd
设置开机自动启动转发规则:
vi /etc/rc.local
rinetd -c /etc/rinetd.conf
无法无法联通可能是端口未打开,打开iptables
端口:
iptables -A INPUT -p tcp -m tcp --dport [中转端口] -j ACCEPT