【KKIX内测版】策略路由+SNAT脚本配置教程

由于某些原因,前面那些教程的大部分图片都被删除了。

于是我决定今天重新做一个完整的脚本,把最新版的脚本使用方案带来给大家


先看测试环境IP

IX:
机器内网IP:192.168.80.21
机器外网IP:165.101.x.x

HK:
机器内网IP:192.168.80.20
机器外网IP:143.14.x.x

我们先看配置前的IX端路由和ping情况:

不通

接下来我们开始配置


我们登录HK端,运行配置脚本

项目源地址: Lorry-San/haloix-ipt: Halocloud IX(KKIX) 双端传输配置脚本

wget -O ixsnat https://raw.githubusercontent.com/Lorry-San/haloix-ipt/refs/heads/main/ixsnat && chmod +x ixsnat && ./ixsnat

我们输入IX端的ens20 IP,并输入IX端机器的密码,随后回车

确认信息无误后回车

=========================================
  开始执行配置
=========================================


[STEP] 【阶段 1/2】配置本地 SNAT...

[STEP] 初始化 SNAT 配置...
[DEBUG] 网卡 ens20 检查通过
[DEBUG] 网卡 ens18 检查通过
[INFO] 内网网段: 192.168.80.20/24
[INFO] 内网IP (ens20): 192.168.80.20
[INFO] 外网IP (ens18): 143.14.x.x
[DEBUG] 启用IP转发...
[DEBUG] 设置默认策略...
[DEBUG] 配置允许转发的IP...
[DEBUG] 配置拒绝其他IP的转发...
[DEBUG] 配置 SNAT 规则...
[DEBUG] 保存 iptables 规则...
[DEBUG] 规则已保存
[INFO] ✅ SNAT 配置完成
[DEBUG] 保存 iptables 规则...
[DEBUG] 规则已保存

=========================================
  SNAT 配置摘要
=========================================

内网接口: ens20
  • IP: 192.168.80.20
  • 网段: 192.168.80.20/24
外网接口: ens18 (143.14.x.x)
允许转发的IP:
  • 192.168.80.21


[STEP] 【阶段 2/2】配置远程策略路由...


=========================================
  远程策略路由配置
=========================================

[INFO] 目标服务器: 192.168.80.21
[INFO] ens20 网关将设置为: 192.168.80.20 (本机 ens20)
[STEP] 测试 SSH 连接...
SSH 连接成功
[INFO] ✅ SSH 连接测试通过
[STEP] 生成策略路由配置脚本...
[STEP] 执行远程策略路由配置...

==========================================
  开始配置策略路由
==========================================

【步骤1】检查网卡...
   ✅ ens18 存在
   ✅ ens20 存在
   ✅ ens19 存在

【步骤2】读取 ens18 (IX) 配置...
   ✅ IX IP: 165.101.x.x
   ✅ 检测到网关: 165.101.x.1
   ✅ IX 网段: 165.101.x.x/24

【步骤3】读取 ens20 配置...
   ✅ ens20 IP: 192.168.80.21
   ✅ ens20 网段: 192.168.80.21/24
   ✅ ens20 Gateway: 192.168.80.20 (SNAT 服务器)

【步骤4】读取 ens19 配置...
   ✅ ens19 IP: 10.0.0.10
   ✅ ens19 网段: 10.0.0.10/24

【步骤5】创建路由表...
   ℹ️  路由表 ix_return 已存在

【步骤6】清理现有路由配置...
Error: ipv4: FIB table does not exist.
Flush terminated
   ✅ 旧配置已清理

【步骤7】配置新路由...
   ✅ 默认路由: ens20 -> 192.168.80.20
   ✅ IX 回程默认路由: ens18 -> 165.101.x.1
   ✅ 添加路由: 165.101.x.x/24 via ens18
   ✅ 添加路由: 192.168.80.21/24 via ens20
Error: Invalid prefix for given prefix length.
Error: Invalid prefix for given prefix length.
Error: Invalid prefix for given prefix length.
   ✅ 添加路由: 10.0.0.10/24 via ens19

【步骤8】添加策略路由规则...
   ✅ 规则: from 165.101.x.x use table ix_return (priority 100)
   ✅ 规则: fwmark 100 use table ix_return (priority 99)

【步骤9】配置 iptables 连接跟踪...
   ✅ 连接跟踪已配置

【步骤10】调整系统参数...
   ✅ rp_filter 已设置为宽松模式(2)
   ✅ 路由缓存已刷新

【步骤11】保存配置...
   ✅ iptables 规则已保存

==========================================
  策略路由配置完成!
==========================================

 网卡配置:
   • ens18 (IX): 165.101.x.x / 165.101.x.x/24 -> 165.101.x.1
   • ens20: 192.168.80.21 / 192.168.80.21/24 -> 192.168.80.20 (SNAT服务器)
   • ens19: 10.0.0.10 / 10.0.0.10/24

 路由策略:
   • 默认出站: ens20 -> 192.168.80.20 (通过SNAT服务器)
   • IX 回程: ens18 -> 165.101.x.1

 重要提示:
   • ens20 的网关指向 SNAT 服务器 (192.168.80.20)
   • 所有主动发起的连接会通过 SNAT 服务器转发
   • IX 流量会从 ens18 原路返回


[INFO] ✅ 远程策略路由配置成功!

=========================================
   全部配置完成!
=========================================


 本地 SNAT 配置成功
 远程策略路由配置成功

配置详情:
  • 本机 ens20 IP: 192.168.80.20
  • 允许转发的 IP 数量: 1
  • 远程 IX 服务器: 192.168.80.21
  • IX ens20 网关: 192.168.80.20 (指向本机)

流量路径:
  \033[1;33m主动出站:\033[0m IX Server -> 本机 ens20 (192.168.80.20) -> SNAT -> 公网 (ens18)
  \033[1;33mIX 回程:\033[0m 公网 -> IX Server ens18 -> 原路返回

注意事项:
  • 所有配置已自动保存并持久化
  • IX 端 ens20 网关指向本机: 192.168.80.20
  • 如需添加更多 IP,请使用: ./ixsnat add <IP>

root@ECS212:~#

随后HK端配置完成,我们回到IX端修改DNS并测试路由情况

cat >/etc/resolv.conf<<EOF
nameserver 1.1.1.1
nameserver 8.8.8.8
EOF

ping -c 3 1.1.1.1

curl ipinfo.io

通了,公网路由也有了

直接收工

1 个赞