主题
Windows 笔记本共享 VPN 给局域网服务器
本文记录一次已实际验证成功的网络配置:让局域网 Linux 小服务器通过 Windows 11 笔记本的锐捷 SSLVPN 访问公司内网服务。
安全提示:这会让服务器借用公司 VPN 访问内网。使用前应确认符合公司的网络安全规定,不要把不必要的服务器服务暴露到公司网络。
一、最终拓扑
text
Linux 小服务器
192.168.0.100
│ 静态路由:公司网段 via 192.168.0.4
▼
Windows 笔记本 WLAN 2
192.168.0.4
│ WinNAT
▼
锐捷 SSLVPN 虚拟网卡
172.16.10.179
│ VPN 下一跳:172.16.10.1
▼
公司内网服务
172.16.3.6:8589二、已验证的设备信息
| 项目 | 值 |
|---|---|
| Windows 版本 | Windows 11 专业版,Build 26200 |
| 笔记本局域网接口 | WLAN 2 |
| 笔记本局域网地址 | 192.168.0.4/24 |
| 普通路由器 | 192.168.0.1 |
| VPN 接口 | 本地连接* 1 |
| VPN 驱动 | RuiJie SSLVPN Virtual Network Card |
| VPN 地址 | 172.16.10.179 |
| VPN 下一跳 | 172.16.10.1 |
| Linux 服务器 | 192.168.0.100 |
| Linux 服务器无线接口 | wlx6c1ff72adc37 |
| 公司测试服务 | http://172.16.3.6:8589/ |
已验证公司服务在 Windows 笔记本本机可访问,并返回 HTTP 200 OK。
三、Windows 配置
以下命令需要在管理员 PowerShell中执行。
1. 开启两个接口的 IPv4 转发
powershell
Set-NetIPInterface `
-InterfaceAlias "WLAN 2" `
-AddressFamily IPv4 `
-Forwarding Enabled
Set-NetIPInterface `
-InterfaceAlias "本地连接* 1" `
-AddressFamily IPv4 `
-Forwarding Enabled检查:
powershell
Get-NetIPInterface `
-InterfaceAlias "WLAN 2","本地连接* 1" `
-AddressFamily IPv4 |
Select-Object InterfaceAlias,InterfaceIndex,Forwarding,ConnectionState两个接口都应为:
text
Forwarding : Enabled2. 创建 WinNAT
本次最终验证使用的是局域网前缀 /24,不是最初尝试的 /32:
powershell
# 如果存在旧的测试 NAT,先删除;确认名称后再执行
Remove-NetNat -Name "CorpVpnNat" -Confirm:$false -ErrorAction SilentlyContinue
New-NetNat `
-Name "CorpVpnNat" `
-InternalIPInterfaceAddressPrefix "192.168.0.0/24"检查:
powershell
Get-NetNat |
Select-Object Name,InternalIPInterfaceAddressPrefix,ExternalIPInterfaceAddressPrefix,Active成功状态:
text
Name : CorpVpnNat
Prefix : 192.168.0.0/24
Active : True虽然 NAT 前缀是 /24,但服务器是否经过笔记本由服务器的静态路由决定;其他局域网设备仍使用自己的默认网关 192.168.0.1。
四、Linux 服务器路由
服务器默认网关保持普通路由器,不要改成笔记本:
bash
sudo ip route replace default via 192.168.0.1添加公司网段路由:
bash
sudo ip route replace 10.0.0.0/8 via 192.168.0.4
sudo ip route replace 172.16.0.0/16 via 192.168.0.4
sudo ip route replace 192.168.0.0/16 via 192.168.0.4当前服务器实际路由如下:
text
default via 192.168.0.1 dev wlx6c1ff72adc37 proto static metric 600
10.0.0.0/8 via 192.168.0.4 dev wlx6c1ff72adc37
172.16.0.0/16 via 192.168.0.4 dev wlx6c1ff72adc37
192.168.0.0/24 dev wlx6c1ff72adc37 proto kernel scope link src 192.168.0.100 metric 600
192.168.0.0/16 via 192.168.0.4 dev wlx6c1ff72adc37其中本地直连路由 192.168.0.0/24 比公司范围路由 192.168.0.0/16 更具体,因此局域网内地址仍直接访问。
检查目标路由:
bash
ip route get 172.16.3.6应包含:
text
172.16.3.6 via 192.168.0.4 dev wlx6c1ff72adc37 src 192.168.0.100五、功能验证
1. TCP 端口
bash
nc -vz -w 10 172.16.3.6 8589成功输出:
text
Connection to 172.16.3.6 8589 port [tcp/*] succeeded!2. HTTP 页面
bash
curl -v --connect-timeout 10 http://172.16.3.6:8589/本次真实验证结果:
text
Established connection to 172.16.3.6 (172.16.3.6 port 8589)
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-83. Windows 侧观察 NAT 会话
在服务器发起 curl 时,管理员 PowerShell 执行:
powershell
Get-NetNatSession |
Where-Object {
$_.InternalSourceAddress -eq "192.168.0.100"
} |
Select-Object `
InternalSourceAddress,
InternalSourcePort,
InternalDestinationAddress,
InternalDestinationPort,
ExternalSourceAddress,
ExternalSourcePort,
ExternalDestinationAddress,
ExternalDestinationPort,
Protocol本次真实会话显示:
text
InternalSourceAddress 192.168.0.100
InternalDestinationAddress 172.16.3.6
ExternalSourceAddress 172.16.10.179
ExternalDestinationAddress 172.16.3.6
Protocol 6 (TCP)这证明服务器流量已经经过 Windows NAT,并以 VPN 地址进入公司网络。
六、故障排查
路由正确但连接超时
先在 Windows 本机确认:
powershell
Test-NetConnection 172.16.3.6 -Port 8589 -InformationLevel Detailed本机应显示:
text
InterfaceAlias : 本地连接* 1
SourceAddress : 172.16.10.179
TcpTestSucceeded : True再检查:
powershell
Get-NetNat
Get-NetNatSession
Get-NetIPInterface -AddressFamily IPv4 |
Where-Object {
$_.InterfaceAlias -in @("WLAN 2","本地连接* 1")
} |
Select-Object InterfaceAlias,Forwarding,ConnectionState如果 NAT 会话中出现:
text
192.168.0.100 → 172.16.3.6
外部源地址 → 172.16.10.179说明转发已经成功。
小包能通、大流量卡住
VPN 接口 MTU 实测为 1344。可临时降低 Linux 无线接口 MTU:
bash
sudo ip link set dev wlx6c1ff72adc37 mtu 1300确认 MTU 问题后,再按服务器网络管理方式持久化设置。
VPN 重连后访问失败
检查锐捷接口是否仍开启转发:
powershell
Get-NetIPInterface `
-InterfaceAlias "本地连接* 1" `
-AddressFamily IPv4 |
Select-Object InterfaceAlias,Forwarding,ConnectionState如果变回 Disabled:
powershell
Set-NetIPInterface `
-InterfaceAlias "本地连接* 1" `
-AddressFamily IPv4 `
-Forwarding Enabled七、配置持久化
Ubuntu/Netplan
把路由合并到现有网卡配置,不要覆盖原有地址和网关。例如:
yaml
network:
version: 2
ethernets:
<实际网卡名>:
routes:
- to: 10.0.0.0/8
via: 192.168.0.4
- to: 172.16.0.0/16
via: 192.168.0.4
- to: 192.168.0.0/16
via: 192.168.0.4应用前:
bash
sudo netplan try确认没有断网后:
bash
sudo netplan applyWindows NAT 和接口转发也应在 Windows 重启、锐捷 VPN 重连后重新检查。
八、回滚
Windows
管理员 PowerShell:
powershell
Remove-NetNat -Name "CorpVpnNat" -Confirm:$false
Set-NetIPInterface `
-InterfaceAlias "WLAN 2" `
-AddressFamily IPv4 `
-Forwarding Disabled
Set-NetIPInterface `
-InterfaceAlias "本地连接* 1" `
-AddressFamily IPv4 `
-Forwarding DisabledLinux
bash
sudo ip route del 10.0.0.0/8 via 192.168.0.4
sudo ip route del 172.16.0.0/16 via 192.168.0.4
sudo ip route del 192.168.0.0/16 via 192.168.0.4
sudo ip route replace default via 192.168.0.1九、最小日常检查清单
- 笔记本已连接锐捷 SSLVPN。
- Windows 本机能打开
http://172.16.3.6:8589/。 WLAN 2和本地连接* 1的 Forwarding 为 Enabled。CorpVpnNat为 Active。- 服务器
ip route get 172.16.3.6显示下一跳192.168.0.4。 - 服务器执行
curl --connect-timeout 10 http://172.16.3.6:8589/返回HTTP 200。