首页
/ 使用Sing-box实现Linux旁路由透明代理的完整指南

使用Sing-box实现Linux旁路由透明代理的完整指南

2025-05-09 08:03:58作者:宣利权Counsellor

前言

在现代网络环境中,透明代理作为一种无需客户端配置即可实现流量转发的技术方案,越来越受到技术爱好者和企业IT管理员的青睐。本文将详细介绍如何利用Sing-box这一新兴的网络工具,在Linux系统上搭建旁路由模式的透明代理解决方案。

什么是旁路由透明代理

旁路由透明代理是一种网络架构设计,它允许在不改变主路由器配置的情况下,通过旁路设备对所有网络流量进行代理处理。这种架构具有以下优势:

  1. 部署灵活:不影响现有网络结构
  2. 维护方便:可以独立升级或维护代理设备
  3. 性能隔离:代理流量处理不会影响主路由器的性能

准备工作

在开始配置前,需要确保具备以下条件:

  1. 一台运行Linux系统的设备(本文以Ubuntu为例)
  2. 主路由器和旁路由位于同一局域网
  3. 主路由器支持静态路由配置
  4. 已安装最新版本的Sing-box

网络拓扑规划

典型的旁路由透明代理网络拓扑如下:

互联网
  │
  ↓
主路由器(192.168.1.1)
  │
  ├─ 客户端设备(192.168.1.x)
  └─ 旁路由(192.168.1.2,运行Sing-box)

详细配置步骤

1. 系统基础配置

首先需要在旁路由设备上启用IP转发功能:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2. 主路由器设置

在主路由器上添加静态路由,将所有流量指向旁路由设备:

目标网络: 0.0.0.0
子网掩码: 0.0.0.0
网关: 192.168.1.2 (旁路由IP)

3. Sing-box配置文件

创建Sing-box的配置文件config.json,以下是一个透明代理的基本配置示例:

{
  "log": {
    "level": "info"
  },
  "dns": {
    "servers": [
      {
        "address": "8.8.8.8",
        "detour": "proxy"
      }
    ]
  },
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "interface_name": "tun0",
      "mtu": 1500,
      "stack": "system",
      "inet4_address": "172.19.0.1/30",
      "auto_route": true,
      "strict_route": true
    }
  ],
  "outbounds": [
    {
      "type": "your_proxy_type",
      "tag": "proxy",
      "server": "your_proxy_server",
      "server_port": 443
    },
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "rules": [
      {
        "inbound": ["tun-in"],
        "outbound": "proxy"
      }
    ]
  }
}

4. 防火墙规则配置

配置iptables规则实现NAT转发:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

5. 启动Sing-box服务

使用systemd管理Sing-box服务:

systemctl enable sing-box
systemctl start sing-box

常见问题排查

1. 客户端无法上网

检查步骤:

  1. 确认旁路由IP转发已启用
  2. 验证主路由静态路由配置正确
  3. 检查Sing-box日志是否有错误

2. DNS解析失败

解决方案:

  1. 确保DNS配置正确
  2. 检查防火墙是否拦截了DNS请求
  3. 测试直接使用旁路由DNS是否工作

3. 性能问题优化建议

  1. 调整MTU值以获得最佳性能
  2. 考虑使用硬件加速网卡
  3. 优化Sing-box的路由规则

高级配置选项

1. 分流策略

可以通过配置路由规则实现智能分流:

"route": {
  "rules": [
    {
      "domain_suffix": [".google.com"],
      "outbound": "proxy"
    },
    {
      "geoip": ["cn"],
      "outbound": "direct"
    }
  ]
}

2. 多WAN负载均衡

结合策略路由实现多出口负载均衡:

ip route add default scope global nexthop via WAN1 dev eth0 weight 1 \
nexthop via WAN2 dev eth1 weight 1

3. 流量监控

使用nftables实现流量统计:

nft add table ip traffic
nft add chain ip traffic output { type filter hook output priority 0 \; }
nft add rule ip traffic output counter

安全注意事项

  1. 定期更新Sing-box到最新版本
  2. 限制管理接口的访问权限
  3. 启用日志审计功能
  4. 考虑使用安全防护工具防止未授权访问

结语

通过本文的详细指导,读者应该能够成功部署基于Sing-box的旁路由透明代理解决方案。这种架构不仅适用于家庭网络环境,也可以扩展应用于企业网络场景。随着对Sing-box的深入了解,还可以实现更复杂的网络功能,如QoS策略、深度包检测等高级特性。

登录后查看全文
热门项目推荐

项目优选

收起
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
338
1.19 K
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
898
534
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
188
265
kernelkernel
deepin linux kernel
C
22
6
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
140
188
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
374
387
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.09 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
86
4
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
arkanalyzerarkanalyzer
方舟分析器:面向ArkTS语言的静态程序分析框架
TypeScript
114
45