原本使用realm做转发,但是没成功,不知道是不是因为我的中转机安装了宝塔,还安装了一些docker项目,还扶墙,反正乱七八糟的东西,干脆就使用iptables,为了方便,跟claude耗了两个小时搞了个小脚本~
脚本
注意:以下代码是在中转机上操作
安装依赖
apt-get update
apt-get install net-tools
apt-get install iptables-persistent
安装脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/iptables-manager.sh && chmod +x iptables-manager.sh && ./iptables-manager.sh
使用注意
最好先执行菜单3:保存当前规则,避免误操作,还有备份可以恢复
脚本执行顺序:
- 启用IP转发(仅第一次)
- 转发规则管理(添加规则或者删除规则)、
- 保存规则
如果你要转发443或者80端口,使用域名访问(http/s),记得把DNS的A记录指向中转机ip,甚至还可以开启cloudflare cdn 双重保护,让黑子找不到你的ip。
删除服务
如果不需要转发服务了,除了在脚本中删除转发规则,还可以删除服务,彻底清除
systemctl disable iptables-forward.service && rm -f /etc/systemd/system/iptables-forward.service && systemctl daemon-reload
其他功能
允许已建立的连接(提高效率)
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
删除规则
查看IPv4的NAT规则
iptables-save -t nat
查看IPv6的NAT规则
ip6tables-save -t nat
删除脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/iptables_del.sh && chmod +x iptables_del.sh && ./iptables_del.sh
严格模式(可选)
通过UFW防火墙限制80和443端口,只允许指定的中转IP访问,阻止其他所有IP的访问,从而保护源站安全。
- 在源服务器上安装ufw
sudo apt update
sudo apt install ufw
- 允许 SSH 连接
首先,添加一条允许 SSH 连接的规则:
sudo ufw allow ssh
如果您使用的是非标准 SSH 端口,请使用实际的端口号。例如,如果您的 SSH 端口是 2222:
sudo ufw allow 2222/tcp
- 查看编号
sudo ufw status numbered
删除现有的80和443端口规则(根据编号删除,注意编号请根据你的实际情况)
sudo ufw delete 25 # 删除 80/tcp 规则
sudo ufw delete 31 # 删除 443/tcp 规则
sudo ufw delete 40 # 删除 80/tcp (v6) 规则
sudo ufw delete 46 # 删除 443/tcp (v6) 规则
添加新的规则,允许3.3.3.3访问
sudo ufw allow from 3.3.3.3 to any port 80
sudo ufw allow from 3.3.3.3 to any port 443
添加新的规则,允许5.5.5.5访问
sudo ufw allow from 5.5.5.5 to any port 80
sudo ufw allow from 5.5.5.5 to any port 443
重新加载UFW规则
sudo ufw reload
检查更新后的规则
sudo ufw status numbered