通过iptables端口转发来实现代理的中转
通过iptables端口转发来实现代理的中转
home againiptables是linux服务器自带的防火墙软件,功能强大且耗用系统资源少,用来端口转发并发高速度快,可以有效解决线路的质量问题。缺点是:配置复杂……不过端口转发的设置还是挺简单的。
实现端口转发的工具有很多,Haproxy就是其中之一,但是你需要额外安装Haproxy软件,而且不支持转发udp。
安装iptables
一般linux自带iptables,但是服务商提供的系统模板各种各样,保不齐就把iptables阉割了。
CentOS
yum install iptables -y |
Ubuntu、debian
apt-get install iptables -y |
配置ipv4转发
编辑文件 /etc/sysctl.conf,将0改成1后,使用Esc键切换到命令模式,输入 :wq 以保存并退出。
vi /etc/sysctl.conf |
使转发生效
sysctl -p |
查询本机绑定的内网ip
ifconfig |
假设我们绑定的内网ip为:168.1.1.1。
配置端口转发
iptables的端口转发的一直形式如下: |
下面开始根据具体不同的情景举例说明如何配置。假设我有一台搭建了ss的服务器,ip地址为1.1.1.1,端口为10000,我要实现中转的服务器绑定的内网ip如上所示为168.1.1.1。
1、相同端口的单端口转发
相同端口,就是说中转服务器和被中转的服务器的端口一致,这里端口就都是10000了
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:10000 |
2、不同端口的但端口转发
不同端口,就是说被中转的是10000端口,中转服务器用除了10000端口以外的端口中转。如果你用的NAT服务器,这个功能就比较有用;还有个情形是sspanel中转单端口,比如其他节点都用的443单端口,我们可以选择不同的端口来中转多个节点。下面举例用30000端口中转:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 30000 -j DNAT --to-destination 1.1.1.1:10000 |
3、多端口转发
iptables支持多端口转发,比如我们要转发10000到30000的端口,命令如下:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:30000 -j DNAT --to-destination 1.1.1.1:10000-30000 |
保存iptables配置
不保存的话,iptables的配置信息都是临时的,重启后将会消失。
CentOS系统
service iptables save |
Debian/Ubuntu系统
iptables-save > /etc/iptables.up.rules |
查看NAT规则
iptables -t nat -vnL POSTROUTING |
删除NAT规则
iptables -t nat -D POSTROUTING 1 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果