bugfix
This commit is contained in:
parent
d72f781b5a
commit
645deadad4
120
README.md
120
README.md
@ -1,8 +1,126 @@
|
||||
# softroute
|
||||
|
||||
## 物理机软路由环境
|
||||
|
||||
### 实现的能力:
|
||||
|
||||
完整软路由功能: 将一台物理机完全转变为家庭或小型办公室网络的路由器。
|
||||
|
||||
内外网隔离: 通过物理双网卡区分内外网,隔离内网与公网。
|
||||
|
||||
NAT (网络地址转换): 内网主机共享网关的公网 IP 访问外部网络。
|
||||
|
||||
IP 转发: 允许数据包在内外网接口之间路由。
|
||||
|
||||
DHCP 服务器: 自动为内网主机分配 IP 地址、网关和 DNS,实现即插即用,内网主机无需手动配置。
|
||||
|
||||
智能 DNS 转发 (Dnsmasq + GFWList): 根据域名类型(国内/国外)进行分流解析,国内域名直连,国外域名通过代理解析。
|
||||
|
||||
透明 SOCKS5 代理 (Redsocks2 + IPTables + IPSet): 自动识别并重定向所有端口的国外流量到 SOCKS5 代理,实现“国内直连,国外走代理”的无感访问。
|
||||
|
||||
SOCKS5 代理客户端 (SSH -D): 通过 SSH 连接到远程服务器,建立一个本地 SOCKS5 代理。
|
||||
|
||||
防火墙 (IPTables): 完全取代 UFW,通过精细的 iptables 规则实现网络过滤和流量控制。
|
||||
|
||||
规则持久化: 配置在重启后依然生效。
|
||||
|
||||
### 主要操作:
|
||||
|
||||
硬件准备: 一台至少双网卡的物理机作为网关主机。
|
||||
|
||||
网卡连接:
|
||||
|
||||
WAN_INTERFACE 连接到外网 (光猫/上一级路由器)。
|
||||
|
||||
LAN_INTERFACE 连接到内网交换机,内网主机连接到此交换机。
|
||||
|
||||
网关主机运行脚本:
|
||||
|
||||
修改 render_configs.py 中的 WAN_INTERFACE, LAN_INTERFACE, gateway_lan_ip, dhcp_start_ip, dhcp_end_ip 以及 REMOTE_SSH_USER, REMOTE_SSH_IP 等定制化参数。
|
||||
|
||||
运行 python3 render_configs.py 生成 gateway_config.sh。
|
||||
|
||||
在网关主机上执行 sudo ./gateway_config.sh。
|
||||
|
||||
内网主机操作:
|
||||
|
||||
无需脚本。 确保内网主机的网卡配置为 DHCP 客户端模式 (Ubuntu 默认),并连接到内网交换机。它们将自动获取 IP、网关和 DNS (指向网关主机的内网 IP)。
|
||||
|
||||
测试验证: 在内网主机上检查 IP、网关、DNS 是否正确,并测试内外网访问。
|
||||
|
||||
## 云服务器软路由环境
|
||||
|
||||
### 实现的能力:
|
||||
|
||||
云环境下的软路由功能: 在云主机上实现路由和代理功能。
|
||||
|
||||
单网卡路由 (或多网卡私有网关): 通常在单块网卡上同时处理公网和内网流量,或者通过私有网络接口充当内网网关。
|
||||
|
||||
NAT (网络地址转换): 内网云主机通过网关云主机的公网 IP 访问外部网络。
|
||||
|
||||
IP 转发: 允许数据包在云主机的不同网络之间(或通过同一接口)路由。
|
||||
|
||||
不提供 DHCP 服务器 (依赖云平台): 避免与云平台自带的 DHCP 冲突,内网云主机从云平台获取 IP 和默认网关。
|
||||
|
||||
智能 DNS 转发 (Dnsmasq + GFWList): 同物理机环境,根据域名类型分流解析,监听网关云主机的内网 IP。
|
||||
|
||||
透明 SOCKS5 代理 (Redsocks2 + IPTables + IPSet): 同物理机环境,自动识别并重定向所有端口的国外流量到 SOCKS5 代理。
|
||||
|
||||
SOCKS5 代理客户端 (SSH -D): 同物理机环境。
|
||||
|
||||
防火墙 (IPTables): 完全取代 UFW,通过精细的 iptables 规则进行流量控制和透明代理。
|
||||
|
||||
规则持久化: 配置在重启后依然生效。
|
||||
|
||||
### 主要操作:
|
||||
|
||||
云主机准备:
|
||||
|
||||
一台带有公网 IP 的云主机作为网关云主机。
|
||||
|
||||
若干只有内网 IP 的云主机作为内网云主机,它们都位于同一个云平台私有网络 (VPC/VNet) 中,确保可以与网关云主机内网互通。
|
||||
|
||||
网卡配置:
|
||||
|
||||
网关云主机的主网卡 (gateway_main_interface) 保持云平台默认的 DHCP 模式。
|
||||
|
||||
内网云主机的主网卡 (client_main_interface) 也保持云平台默认的 DHCP 模式。
|
||||
|
||||
网关云主机运行脚本:
|
||||
|
||||
修改 render_configs.py 中的 gateway_main_interface, internal_network_range (云平台私有网络 IP 范围) 以及 REMOTE_SSH_USER, REMOTE_SSH_IP 等定制化参数。
|
||||
|
||||
运行 python3 render_configs.py 生成 gateway_config.sh。
|
||||
|
||||
在网关云主机上执行 sudo ./gateway_config.sh。
|
||||
|
||||
内网云主机操作 (手动 DNS 配置):
|
||||
|
||||
无需脚本。 关键是将内网云主机的 DNS 服务器设置为网关云主机的内网 IP。
|
||||
|
||||
这可以通过云平台控制台(如果支持)或在内网云主机上手动修改 Netplan 配置文件来实现。
|
||||
|
||||
测试验证: 在内网云主机上检查 IP、网关是否正确(由云平台 DHCP 提供),DNS 是否指向网关云主机,并测试内外网访问。
|
||||
|
||||
云平台安全组/防火墙配置: 确保安全组或防火墙规则允许内网主机到网关主机的流量,以及网关主机到境外代理服务器的 SSH 流量。
|
||||
|
||||
## 核心差异总结:
|
||||
特性 物理机软路由环境 云服务器软路由环境
|
||||
网卡数量/类型 至少双网卡 (一外网,一内网) 通常是单网卡(同时承载内外网 IP)
|
||||
DHCP 服务器 网关主机提供 DHCP 服务 云平台提供 DHCP 服务,网关主机不运行 DHCP
|
||||
内网主机 IP 从网关主机 DHCP 获取 从云平台 DHCP 获取
|
||||
内网主机 DNS 从网关主机 DHCP 获取 (指向网关内网 IP) 需手动/云平台配置为网关云主机的内网 IP
|
||||
IP 地址规划 完全自定义 (192.168.10.x) 依赖云平台的私有网络 IP 范围 (10.0.0.x 等)
|
||||
物理隔离 有 (物理网线区分内外网) 无 (单网卡逻辑区分) 或通过云平台虚拟网络功能实现隔离
|
||||
外部防火墙 iptables 完全控制 iptables + 云平台安全组/防火墙 共同控制
|
||||
|
||||
两种方案都实现了你所需的强大智能分流代理功能,但在部署细节和网络环境适配上有所不同。选择哪种取决于你的实际基础设施。
|
||||
|
||||
如果我是云服务器,一个配置了外网IP,其他主机只有内网ip,上述脚本要怎么修改
|
||||
|
||||
好的,这是一个非常常见的云服务器场景。在这种情况下,你需要对脚本做一些关键的调整,因为云环境的网络接口和 IP 分配方式与物理机有所不同。
|
||||
## 云主机技术说明
|
||||
|
||||
这是一个非常常见的云服务器场景。在这种情况下,你需要对脚本做一些关键的调整,因为云环境的网络接口和 IP 分配方式与物理机有所不同。
|
||||
|
||||
核心区别:
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user