需求说明
需求收集
- 所有设备都想访问Samba共享
- 部分设备需要完全科学网络
- 机顶盒原生
- 数据安全考量(仅供参考)
- 强制数据流走向
- 部分应用只需要socks/http代理
- SmartTubeNg支持第三方YouTube,仅需socks代理即可
- chrome浏览器用Proxy SwitchyOmega上网
- 科学节点数量有限
- 分享出去可以突破
- 分享到广域网也可以。注意安全
科学方法及规划
这里不讨论分流问题,分流自己用浏览器插件控制
- 插入特定物理网口完全科学
- 设置指定网关即可完全科学
- 指定socks代理可以自定义流量规则
- 默认网络不科学,不干扰日常流量
整理需要实现:
- 可以运行任何一款科学软件
- 在全局提供socks代理
- 提供一个完全科学的物理网口
- 提供手动完全可以的网关,并嵌入原始局域网网段
整体网络结构
graph TB
PhyIface>实体硬件网口]
VmBridge>虚拟网桥]
VmMachine>虚拟机]
classDef CssGreen fill:#9f6,stroke:#333,stroke-width:2px;
classDef CssOrange fill:#f96,stroke:#333,stroke-width:4px;
classDef CssRed fill:#ff0,stroke:#333,stroke-width:4px;
classDef CssReal fill:#666,stroke:#333,stroke-width:4px;
class PhyIface CssOrange
class VmBridge CssRed
class VmMachine CssGreen
graph TB
BrDial(虚拟网桥/光猫拨号网络/分配物理网口ens0p0)
BrHome(虚拟网桥/普通家庭网络/分配物理网口ens1p0)
BrGfwPhy(一体机物理网口ens2p0/即插即纯科学)
BrDialPhy(一体机物理网口ens0p0)
BrHomePhy(一体机物理网口ens1p0)
Modem(光猫)
SwitchPoe(交换机/选配POE)
subgraph VmSubDial[Vm拨号主路由]
DialRouter[拨号, 流控, AC管理器]
DiagWan0[Wan0] --> DialRouter
DialRouter --> DialLan0[Lan0
192.168.1.1]
end
BrDialPhy --> BrDial
BrDial --> DiagWan0
subgraph SubPhyRouter[实体拨号主路由]
SubPhyRouterWan[Wan0]
SubPhyRouterWan --> SubPhyRouterOp[物理拨号路由]
SubPhyRouterOp --> SubPhyRouterOpLan0[Lan0
192.168.1.1]
end
subgraph SubVmService[虚拟服务节点]
LXC -.-> Media(多媒体服务)
Media -.-> Emby
Media -.-> NasTools
Media -.-> Dsm
Media -.-> Alist
Media -.-> Qb[Qb/Tr下载]
LXC -.-> HA
LXC -.-> Frp
end
subgraph SubGfwService[科学服务]
GfwClash[各种科学软件
Clash/SSR/熊猫]
GfwProxy[代理服务
socks:1090
http:1091]
GfwPhyIface[完全科学网口
192.168.2.x/dhcp/dns]
end
BrHome === BrHomePhy
BrHomePhy === SwitchPoe
subgraph SubRealDevice[实体物理设备]
SwitchPoe --> APx(AP0/AP1/APx)
SwitchPoe --> IPTV(IPTV)
SwitchPoe --> TV(电视/台式机)
APx --> Mobile(手机)
APx --> Tablet(平板)
APx --> Laptio(笔记本)
APx --> Device(智能家居)
end
BrHome --> LXC(家用服务Vm/Docker/LXC)
BrHome === SubGfwService
SubRealDevice -.-> SubGfwService
SubVmService -.-> SubGfwService
Modem -->|使用虚拟路由拨号| BrDialPhy
DialLan0 -->|使用虚拟路由拨号| BrHome
Modem -.->|使用物理路由拨号| SubPhyRouterWan
SubPhyRouterOpLan0 -.->|使用物理路由拨号| BrHomePhy
classDef CssGreen fill:#9f6,stroke:#333,stroke-width:2px;
classDef CssOrange fill:#f96,stroke:#333,stroke-width:4px;
classDef CssRed fill:#ff0,stroke:#333,stroke-width:4px;
classDef CssReal fill:#666,stroke:#333,stroke-width:4px;
classDef CssGfw fill:#AAAAAA,stroke:#333,stroke-width:4px;
class BrDial,BrHome,BrGfw CssOrange
class VmSubDial,SubVmService CssGreen
class SubVmService CssGreen
class BrGfwPhy,BrHomePhy,BrDialPhy CssRed
class SubRealDevice CssReal
class SubPhyRouter CssReal
class Modem CssReal
class SubGfwService CssGreen
科学部分
graph TB
BrHome(虚拟网桥/普通家庭网络/分配物理网口ens1p0)
BrGfw(虚拟网桥/Gfw科学网络/分配物理网口ens2p0)
BrHomePhy(一体机物理网口ens1p0)
BrGfwPhy(一体机物理网口ens2p0/即插即纯科学)
DialLan0[主网关192.168.1.1]
DialLan0 ==> BrHome
subgraph SubVmWin0[Vm科学机/Win7]
SubVmWin0Eth(网卡/静态
192.168.1.112)
GfwSw(科学软件
Clash/SSR/熊猫)
GfwProxy(代理服务socks/http
socks:1090
http:1091)
GfwVpn(对内VPN)
SubVmWin0Eth --> GfwSw
GfwSw --> GfwProxy
GfwSw -.-> GfwVpn
end
subgraph SubVmOp1[Vm路由1
]
SubVmOp1OpWan[Wan0
192.168.1.x] --> SubVmOp1Op
SubVmOp1Op[全局子网流量转代理
LAN->Proxy
Clash/SSR/PassWall]
SubVmOp1Op --> SubVmOp1OpLan[Lan0
192.168.2.242]
end
subgraph SubVmOp2[Vm路由2/旁路由网关]
SubVmOp2OpWan[Wan0
192.168.2.x] --> SubVmOp2Op
SubVmOp2Op[旁路由器/关闭DHCP]
SubVmOp2Op --> SubVmOp2OpLan[Lan0
192.168.1.242]
end
BrHome --> SubVmWin0Eth
GfwProxy --> BrHome
BrHome === BrHomePhy
BrHome --> SubVmOp1OpWan
SubVmOp1Op -.-> GfwProxy
SubVmOp1OpLan --> BrGfw
BrGfw --> SubVmOp2OpWan
BrGfw --> BrGfwPhy
SubVmOp2OpLan --> BrHome
classDef CssGreen fill:#9f6,stroke:#333,stroke-width:2px;
classDef CssOrange fill:#f96,stroke:#333,stroke-width:4px;
classDef CssRed fill:#ff0,stroke:#333,stroke-width:4px;
classDef CssReal fill:#666,stroke:#333,stroke-width:4px;
class BrDial,BrHome,BrGfw CssOrange
class SubVmWin0,SubVmOp1,SubVmOp2,VmSubDial,SubVmService CssGreen
class SubVmService CssGreen
class BrGfwPhy,BrHomePhy,BrDialPhy CssRed
class SubRealDevice CssReal
class SubPhyRouter CssReal
测试点预期流量
graph TB
BrHome(虚拟网桥/普通家庭网络/分配物理网口ens1p0)
BrGfw(虚拟网桥/Gfw科学网络/分配物理网口ens2p0)
BrHomePhy(一体机物理网口ens1p0)
BrGfwPhy(一体机物理网口ens2p0/即插即纯科学)
DialLan0[主网关192.168.1.1]
DialLan0 ==> BrHome
subgraph SubVmWin0[Vm科学机/Win7]
SubVmWin0Eth(网卡/静态
192.168.1.112)
GfwSw(科学软件
Clash/SSR/熊猫)
GfwProxy(代理服务socks/http
socks:1090
http:1091)
GfwVpn(对内VPN)
SubVmWin0Eth --> GfwSw
GfwSw --> GfwProxy
GfwSw -.-> GfwVpn
end
subgraph SubVmOp1[Vm路由1]
SubVmOp1OpWan[Wan0
192.168.1.x] --> SubVmOp1Op
SubVmOp1Op[全局子网流量转代理
LAN->Proxy
Clash/SSR/PassWall]
SubVmOp1Op --> SubVmOp1OpLan[Lan0
192.168.2.242]
end
subgraph SubVmOp2[Vm路由2/旁路由网关]
SubVmOp2OpWan[Wan0
192.168.2.x] --> SubVmOp2Op
SubVmOp2Op[旁路由器/关闭DHCP]
SubVmOp2Op --> SubVmOp2OpLan[Lan0
192.168.1.242]
end
BrHome --> SubVmWin0Eth
GfwProxy --> BrHome
BrHome === BrHomePhy
BrHome --> SubVmOp1OpWan
SubVmOp1Op -.-> GfwProxy
SubVmOp1OpLan --> BrGfw
BrGfw --> SubVmOp2OpWan
BrGfw --> BrGfwPhy
SubVmOp2OpLan --> BrHome
TestPoint0[测试点0
网关192.168.1.1] --> BrHome
TestPoint1[测试点1
网关192.168.1.242] --> BrHome
TestPoint2[测试点2
网关192.168.2.244] --> BrGfw
TestPoint0 -.->|预期流量1| DialLan0
TestPoint0 -.->|预期流量2| GfwProxy
TestPoint1 -.->|预期流量| SubVmOp2OpLan
TestPoint2 -.->|预期流量| SubVmOp1OpLan
classDef CssGreen fill:#9f6,stroke:#333,stroke-width:2px;
classDef CssOrange fill:#f96,stroke:#333,stroke-width:4px;
classDef CssRed fill:#ff0,stroke:#333,stroke-width:4px;
classDef CssReal fill:#666,stroke:#333,stroke-width:4px;
class BrDial,BrHome,BrGfw CssOrange
class SubVmWin0,SubVmOp1,SubVmOp2,VmSubDial,SubVmService CssGreen
class SubVmService CssGreen
class BrGfwPhy,BrHomePhy,BrDialPhy CssRed
class SubRealDevice CssReal
class SubPhyRouter CssReal
旁路由有简化版本
如果你不需要一个可以即插即用的物理科学网口,可以做一些简化,去掉VM路由1部分
graph TB
BrHome(虚拟网桥/普通家庭网络/分配物理网口ens1p0)
BrHomePhy(一体机物理网口ens1p0)
DialLan0[主网关192.168.1.1]
DialLan0 ==> BrHome
subgraph SubVmWin0[Vm科学机/Win7]
SubVmWin0Eth(网卡/静态
192.168.1.112)
GfwSw(科学软件
Clash/SSR/熊猫)
GfwProxy(代理服务socks/http
socks:1090
http:1091)
GfwVpn(对内VPN)
SubVmWin0Eth --> GfwSw
GfwSw --> GfwProxy
GfwSw -.-> GfwVpn
end
subgraph SubVmOp2[Vm路由2/旁路由网关]
SubVmOp2OpWan[Wan0
192.168.2.x
非必须设置
网卡都可以不需要] -.-> SubVmOp2Op
SubVmOp2Op[旁路由器/关闭DHCP
流量转代理
LAN->Proxy
Clash/SSR/PassWall]
SubVmOp2Op --- SubVmOp2OpLan[Lan0
192.168.1.242]
end
BrHome --> SubVmWin0Eth
GfwProxy --> BrHome
BrHome === BrHomePhy
SubVmOp2Op -.->|预期科学流量| GfwProxy
SubVmOp2Op -.->|预期普通流量| BrHome
SubVmOp2OpLan --- BrHome
classDef CssGreen fill:#9f6,stroke:#333,stroke-width:2px;
classDef CssOrange fill:#f96,stroke:#333,stroke-width:4px;
classDef CssRed fill:#ff0,stroke:#333,stroke-width:4px;
classDef CssReal fill:#666,stroke:#333,stroke-width:4px;
class BrDial,BrHome,BrGfw CssOrange
class SubVmWin0,SubVmOp1,SubVmOp2,VmSubDial,SubVmService CssGreen
class SubVmService CssGreen
class BrGfwPhy,BrHomePhy,BrDialPhy CssRed
class SubRealDevice CssReal
class SubPhyRouter CssReal
PVE配置
这里仅仅是基于PVE测试,同样适用于unraid,Exsi等
网络配置
主机后边有两个网口,一个 标记为入(后续描述为网口1),一个标记为出(后续描述为网口2),请直接使用网线连接网口1到家庭的网络。
网络主机分配
这里有如下几种主机
| 主机名字 | IP地址 | 主机号 | 网桥 | 备注 |
|---|---|---|---|---|
| PVE服务器 | 192.168.1.240(网口1) 192.168.1.241(网口2) |
br0 br1 br2 |
一般使用240就可以了,使用浏览器访问:https://192.168.1.240:8006 | |
| 代理机 | 192.168.1.242 | 110 | br0 | win7,可以安装熊猫或者clash,提供代理服务 ( socks5端口号1090, https代理1091) |
| 网关机1 | 192.168.2.244 | 104 | br1 br2 |
OP,任何接入网口出的设备,都能自动科学 |
| 网关机2 | 192.168.1.243 | 101 | br0 br1 |
OP,所有数据流量走网口入,需要手动指定IP地址和网关地址192.168.1.243 |
| 测试机0 | 106 | br0 | 测试网口入的家庭网络,不科学 | |
| 测试机1 | 107 | br0 | 测试网口入手动设置网关的科学网络 | |
| 测试机2 | 105 | br2 | 测试网口出的自动科学网络 | |
| nps穿透机 | 103 | br0 | 用来远程接入网络,远程调试使用 | |
| win测试机 | auto | 109 | 切换后需要重启 | 调试网络,用来动态接入不同网络进行测试 |

使用方法
通过网线连接网口入后,开机就可以使用任何一个浏览器访问PVE的web控制页面, 任何想要科学的主机,可以使用如下任意一种方法开启科学模式
模式一
客户机接入到与网口1同级网络,192.168.1.X,并且确保可以访问PVE的web页面,然后手动指定网关到网关机2(192.168.1.243),DNS设置为192.168.1.243或者8.8.8.8
模式二
该模式需要将客户机连接到网络2同级网络(端口不够,可以使用交换机对网络2进行扩展),上网模式设置自动获取
打开任意主机的控制台
这里理解为显示器
win控制台
linux控制台
诊断方法
这里提供了三个测试机,接入不同的网络进行测试
默认网络测试命令:
1 | curl http://ifconfig.io/all |
代理网络测试命令:
1 | proxychain4 curl http://ifconfig.io/all |
该命令会反馈出不同的结果,可以观察结果中的IP和国家信息来判断是否已经科学。

测试机网络归属
| 测试机名字 | 网桥 | 网关 | 科学 | |
|---|---|---|---|---|
| test-gateway-0 | br0 | 192.168.1.1 | 否,仅测试网络 | |
| test-gateway-0+proxychain4 | br0 | 192.168.1.1 | 科学,使用win7 socks代理上网 | |
| test-gateway-1 | br0 | 192.168.1.242 | 是 | |
| test-gateway-2 | br2 | 192.168.2.244 | 是 |
快照功能
任何一台虚拟机,都可以使用快照功能记录当前虚拟机的设置信息。如果出现问题,可以随时使用快照回滚的功能进行恢复。
创建快照
选择主机-> Snapshots->Take Snapshot
回滚快照
选择主机-> Snapshots->选择回滚的版本-> Rollback
关于备份
主机用了蜗牛的机箱(手边没有其他的。。),所有只有两个最下边的硬盘槽位可以用来引导系统 ,在任意一个槽位插入硬盘,上电确保亮灯应该就可以启动系统。
随机有两个系统盘,内容完全一样,用来作为备份引导盘救急,所以平时只需要插入一个硬盘就可以,另一个硬盘拆下来收藏起来即可(插入槽位就会上电,会影响硬盘寿命)
重置密码
服务器密码重置
- Boot into grub, select single user but do not press enter.
- Press e to go into edit mode.
- Scroll down to the kernel line you will boot from, it starts with “linux /boot/vmlinuz-…….”
- Scroll to the end of that line and press space key once and type init=/bin/bash
- Press Ctrl X to boot
1
2
3
4
5
6
7# Remount / as Read/Write
mount -rw -o remount /
# Change the root account password with
passwd
# Change any other account password with
passwd username
# type new password, confirm and hit enter and then reboot.