打开 SoftEther Manager,关于集线器的第一个真正决定不是勾选框,而是拓扑问题。本地桥接把那台集线器接到物理网卡上,让现有网段提供地址;而 SecureNAT 给集线器配一套自己的虚拟路由器、NAT 和 DHCP。在两者之间做选择,会改变地址从哪里来、由哪台设备应答。两个都开、指望其中一个胜出,正是让一台能用的实验环境变成求助帖的路径。

从你真正在编辑的那台集线器开始

Manager 显示服务器与集线器的树状结构,而在客户端连到另一个不同名的集线器时,配置默认集线器是很容易的事。点开那台集线器,读出它的名字,并确认下面列出的会话正是你要服务的客户端。这一项检查就能挡掉大部分事后被归咎于协议的混乱。

然后判断客户端需要远端提供什么。带广播和 LAN 服务的共享以太网行为指向桥接;到小段地址池的路由式私有访问指向 SecureNAT;而互联网出口是一个路由决策,两种做法都可能做得不好。

在点任何按钮之前先把答案写下来,因为这两项设置不能互换,而撤销比决定更费时间。两分钟的记录能省下一小时的重连。

本地桥接会怎样影响地址分配

本地桥接把集线器接到一块物理网卡上,于是这台集线器成了那个以太网段的一部分。客户端从本来就在服务该网段的设备上取得地址,网关就是该网段的路由器。从客户端看,它加入了办公 LAN,也一并继承了随之而来的全部可达性与全部暴露面。

这也意味着桥接需要一块受驱动正常支持的真实网卡,并且管理员必须有权扩展那个网段。VPN 登录证明的是身份认证,不是把主机放进生产 VLAN 的权限。核对驱动名是否与你要用的网卡一致,因为桥错了端口会很快让整个网段掉线。如果网卡列表为空,或者桥接报告失败,原因通常出在驱动或权限上,而不是加密。

当图形树说不清时,就从命令行读桥接表。输出会点名具体网卡,而树状界面并不总是这样。

vpncmd /SERVER localhost /HUB VPN /CMD BridgeList
vpncmd /SERVER localhost /HUB VPN /CMD SessionList

会话已连接、桥接列表却为空,这是一幅有用的画面:客户端在虚拟集线器内部,还没有任何东西把它扩展到某个网段。

SecureNAT 补上了什么,又藏起了什么

SecureNAT 给集线器配一套虚拟路由器、NAT 功能和 DHCP 服务,全部跑在 SoftEther 进程内部。客户端从虚拟 DHCP 范围取得地址,虚拟路由器代答默认网关,需要外出的流量被做地址转换。整个过程不涉及物理网卡,所以只有一块网卡、也不用配交换机的主机也能用。

代价是这些虚拟地址只属于集线器,不属于别的任何地方。办公 LAN 上的机器不借助额外配置就无法路由到某个客户端的 SecureNAT 地址;任何记录源地址的东西看到的都是 SoftEther 主机的转换后地址。如果你的访问规则或审计留痕依赖客户端的真实地址,那就是设计变更而不只是细节。它也决定了基于源地址的规则究竟能不能看见客户端。

它同时还是 DHCP 服务器。在已经有 DHCP 的网段上再跑一个,或者同时把那个网段桥接出去,就会出现两个应答者,租约也变得不可预测。手册之所以把这两个功能当作彼此独立的选项,原因正在这里。

在开启别的东西之前,先查清集线器现在在提供什么。每条命令打印的是当前状态,而不是预期状态。

vpncmd /SERVER localhost /HUB VPN /CMD SecureNatStatusGet
vpncmd /SERVER localhost /HUB VPN /CMD NatGet
vpncmd /SERVER localhost /HUB VPN /CMD DhcpGet

开启一个而不破坏另一个

选定方案,开启它,另一个保持关闭。桥接与 SecureNAT 同时生效的集线器,等于对同一个问题有两个可能的答案,客户端会相信先到的那个。从一种方案迁到另一种时,先停掉旧功能再重连客户端,不要假设新设置会自动作用于已有会话。

把改动排好顺序,让客户端地址池不要与 LAN 网段重叠。地址重叠的子网是隧道能连上却什么都到不了的次常见原因,而且在把两份地址规划并排比较之前,它们根本看不出来。

然后从客户端重连,读回它拿到了什么,因为集线器眼中的会话并不等于客户端眼中的自己那张网。重连是强制拿到新租约的唯一可靠办法。

在客户端核对网关与解析器

认证成功只能说明凭据有效、集线器接受了这次会话。它完全没有说明客户端能否到达任何地方,因为这取决于它拿到的地址、掩码、网关和 DNS 服务器。在再次改动服务器设置之前,先在客户端把这四个值读出来。

在 Windows 上,网卡详情会显示租约与解析器,路由表则显示隧道是否真的是默认路径。

ipconfig /all
route print -4
nslookup intranet.corp.internal

在 Linux 客户端上,同样的信息来自地址、路由和解析器文件。默认路由才是决定流量是否从隧道出去的数值。如果网关指向办公室路由器,而隧道本该承载这些流量,那么这套拓扑名义上桥接了,实践中却是断的。先修好地址来源,再重新测试应用,之后才考虑改动另一种模式。

相关文章