问题
异地一台远程计算机,有线连接,固定IP,使用easytie
r或者zerotier
都能远程连接,能ping
通内网(网关),也能ping
通外网(如www.baidu.com
),系统代理均已关闭,但无法上网。
思路
能ping通外网,但不能上网,首先想到的是可能存在IP地址冲突,于是打算将另一台电脑挤下去,把ip地址“抢回来”。
方法
绑定IP地址和MAC
以管理员身份打开Powershell
,运行:
$ arp -s 192.168.2.42 E8-6A-64-3C-A0-66
紧接着输入命令arp -a
查询绑定是否成功。
$ arp -a
接口: 192.168.2.42 --- 0x2
Internet 地址 物理地址 类型
192.168.2.101 94-c6-91-d2-a7-43 动态
192.168.2.243 bc-31-e2-58-af-b4 动态
192.168.2.247 50-da-00-97-93-f9 动态
192.168.2.253 3c-8c-40-bd-d9-d1 动态
192.168.2.254 a8-49-4d-88-68-76 动态
192.168.2.42 E8-6A-64-3C-A0-66 静态 # 表示绑定成功
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
IP和MAC绑定成功后,其他计算机之后再上网时如果抢用192.168.2.42
地址时,就会出现无法上网的故障现象。
但到这里,只是解决了防止被“抢”IP的问题,接下来就是要把其他计算机挤下去。
重启网络连接,“抢回”IP地址
最简单的重启网络连接方法是,在控制面板-网络和Internet-网络连接
中,右键点击有线网卡禁用
,然后再点击启用
。但由于是通过远程桌面连接的计算机,所以如果直接点击禁用
,结果就是断网,远程连接自然也就断了。因此,只能使用命令行+批处理来实现重启网络。
查看网卡名称
命令行模式下运行:
$ ipconfig
以太网适配器 以太网 2: # "以太网 2"即为有线网卡名称
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::56e3:b392:fe18:bd83%2
IPv4 地址 . . . . . . . . . . . . : 192.168.2.42
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.2.254
创建批处理文件
新建一个.bat
批处理文件,内容如下:
netsh interface set interface "以太网 2" admin=disable # 这里网卡名称应为Wired,下同
netsh interface set interface "以太网 2" admin=enable
保存后,以管理员模式运行.bat
文件。
我这里不出意外出意外了,运行批处理文件后有线网卡毫无反应,多次尝试依然如此。为了找到问题所在,于是在批处理文件最后加一个pause
,如下:
netsh interface set interface "以太网 2" admin=disable
netsh interface set interface "以太网 2" admin=enable
pause
运行批处理文件后,返回如下:
C:\Windows\System32>netsh interface set interface "浠ュお缃?2" admin=disable
没有可用的数据了。
C:\Windows\System32>netsh interface set interface "浠ュお缃?2" admin=enable
没有可用的数据了。
C:\Windows\System32>pause
请按任意键继续. . .
返回里出现了乱码,而且明显就是网卡名称部分,我第一反应就是网卡名称是中文的原因。于是,接下来尝试将网卡名称改为纯英文。
首先尝试了直接在控制面板-网络和Internet-网络连接
中,右键点击网卡然后点击重命名
,结果毫无反应,多次尝试依然如此。因此,还是要通过命令行来实现。
修改网卡名称
以管理员身份打开命令行,运行下列命令:
$ netsh interface set name "以太网 2" "Wired" # 第一个双引号里是旧网卡名称,第二个是新网卡名称
该命令无需重启网络,直接就能重命名。
运行ipconfig
查看网卡是否重命名成功:
$ ipconfig
以太网适配器 Wired: #这里显示新网卡的名称,说明已经重命名成功
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::56e3:b392:fe18:bd83%2
IPv4 地址 . . . . . . . . . . . . : 192.168.2.42
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.2.254
然后修改批处理文件中的网卡名称,保存后以管理员身份运行:
C:\Windows\System32>netsh interface set interface "Wired" admin=disable
C:\Windows\System32>netsh interface set interface "Wired" admin=enable
C:\Windows\System32>pause
请按任意键继续. . .
在这个过程中,远程桌面会断开连接,重新连接即可。
新问题
远程重启网络连接后,尝试用浏览器打开网页,发现依然上不了网,网页显示ERR_CONNECTION_FAILED
,查找了很多资料,终于找到了解决办法。
原因
因为系统缓冲区空间不足,或是伫列已满造成 ERR_CONNECTION_FAILED 问题。
解决方案
查看系统端口占用情况
打开Powershell
,运行以下命令,
$ Get-NetTCPConnection | Group-Object -Property State, OwningProcess | Select -Property Count, Name, @{Name="ProcessName";Expression={(Get-Process -PID ($_.Name.Split(',')[-1].Trim(' '))).Name}}, Group | Sort Count -Descending
该命令主要是检查目前系统端口占用情况,并根据单个进程占用的端口数量降序排列。返回结果如下:
Count Name ProcessName Group
----- ---- ----------- -----
16366 Bound, 4904 PublicWiFiService {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??65535??0.0.0.0??0"), MSFT_...
12 Listen, 4 System {MSFT_NetTCPConnection (InstanceID = "::??43568??::??0"), MSFT_NetTCPConn...
3 Listen, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "::??11010??::??0"), MSFT_NetTCPConn...
3 Established, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??49758??127.0.0.1??27000"...
2 Listen, 5392 vmware-authd {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??912??0.0.0.0??0"), MSFT_Ne...
2 Listen, 1716 svchost {MSFT_NetTCPConnection (InstanceID = "::??3389??::??0"), MSFT_NetTCPConne...
2 Listen, 1364 svchost {MSFT_NetTCPConnection (InstanceID = "::??135??::??0"), MSFT_NetTCPConnec...
2 Established, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??49673??127.0.0.1??49672"...
2 TimeWait, 0 Idle {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??50214??40.126.35.87??...
2 Bound, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49758??0.0.0.0??0"), MSFT_...
2 Listen, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "::??9993??::??0"), MSFT_NetTCPConne...
2 Listen, 3388 svchost {MSFT_NetTCPConnection (InstanceID = "::??49668??::??0"), MSFT_NetTCPConn...
2 Listen, 3180 svchost {MSFT_NetTCPConnection (InstanceID = "::??49667??::??0"), MSFT_NetTCPConn...
2 Listen, 4116 spoolsv {MSFT_NetTCPConnection (InstanceID = "::??49669??::??0"), MSFT_NetTCPConn...
2 Listen, 1052 services {MSFT_NetTCPConnection (InstanceID = "::??49674??::??0"), MSFT_NetTCPConn...
2 Listen, 1096 svchost {MSFT_NetTCPConnection (InstanceID = "::??49666??::??0"), MSFT_NetTCPConn...
2 Listen, 500 wininit {MSFT_NetTCPConnection (InstanceID = "::??49665??::??0"), MSFT_NetTCPConn...
2 Listen, 1060 lsass {MSFT_NetTCPConnection (InstanceID = "::??49664??::??0"), MSFT_NetTCPConn...
1 Established, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??49698??117.72.51.14??...
1 Listen, 10832 listary-core {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??50098??0.0.0.0??0")}
1 Listen, 4864 jhi_service {MSFT_NetTCPConnection (InstanceID = "::1??49671??::??0")}
1 Listen, 5348 svchost {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??5040??0.0.0.0??0")}
1 Established, 1716 svchost {MSFT_NetTCPConnection (InstanceID = "2.2.2.2??3389??2.2.2.3??4605")}
1 Established, 2300 lmgrd {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??27000??127.0.0.1??49758")}
1 Listen, 2300 lmgrd {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??27000??0.0.0.0??0")}
1 Listen, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49754??0.0.0.0??0")}
1 Bound, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??49698??0.0.0.0??0")}
1 Bound, 4276 Listary {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??50093??0.0.0.0??0")}
1 Bound, 5776 msedge {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??50076??0.0.0.0??0")}
1 Bound, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49673??0.0.0.0??0")}
1 Listen, 6824 explorer {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??50059??0.0.0.0??0")}
1 Established, 5776 msedge {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??50076??150.171.28.11?...
1 Listen, 13904 HipsDaemon {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??58140??0.0.0.0??0")}
可以看到,PublicWiFiService这一进程竟然绑定了16366个端口!PublicWiFiService是MyPbulicwifi软件的进程,目前并无需要运行,因此在任务管理器中结束该进程即可。
结束进程
结束该进程后,重新查看系统端口占用情况:
Count Name ProcessName Group
----- ---- ----------- -----
12 Listen, 4 System {MSFT_NetTCPConnection (InstanceID = "::??43568??::??0"), MSFT_NetTCPConne...
10 TimeWait, 0 Idle {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??50231??127.0.0.1??9993"),...
7 Bound, 5096 vmnat {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??50229??0.0.0.0??0"), MSFT_N...
6 Established, 5096 vmnat {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??50229??192.168.2.42??1...
3 Listen, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "::??11010??::??0"), MSFT_NetTCPConne...
3 Established, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??49758??127.0.0.1??27000")...
2 Listen, 1364 svchost {MSFT_NetTCPConnection (InstanceID = "::??135??::??0"), MSFT_NetTCPConnect...
2 Established, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??49698??117.72.51.14??1...
2 Established, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??49673??127.0.0.1??49672")...
2 Bound, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49758??0.0.0.0??0"), MSFT_N...
2 Listen, 5392 vmware-authd {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??912??0.0.0.0??0"), MSFT_Net...
2 Listen, 1716 svchost {MSFT_NetTCPConnection (InstanceID = "::??3389??::??0"), MSFT_NetTCPConnec...
2 Listen, 4116 spoolsv {MSFT_NetTCPConnection (InstanceID = "::??49669??::??0"), MSFT_NetTCPConne...
2 Listen, 1096 svchost {MSFT_NetTCPConnection (InstanceID = "::??49666??::??0"), MSFT_NetTCPConne...
2 Listen, 3180 svchost {MSFT_NetTCPConnection (InstanceID = "::??49667??::??0"), MSFT_NetTCPConne...
2 Listen, 1052 services {MSFT_NetTCPConnection (InstanceID = "::??49674??::??0"), MSFT_NetTCPConne...
2 Listen, 3388 svchost {MSFT_NetTCPConnection (InstanceID = "::??49668??::??0"), MSFT_NetTCPConne...
2 Listen, 1060 lsass {MSFT_NetTCPConnection (InstanceID = "::??49664??::??0"), MSFT_NetTCPConne...
2 Listen, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "::??9993??::??0"), MSFT_NetTCPConnec...
2 Listen, 500 wininit {MSFT_NetTCPConnection (InstanceID = "::??49665??::??0"), MSFT_NetTCPConne...
1 Listen, 2300 lmgrd {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??27000??0.0.0.0??0")}
1 Listen, 4864 jhi_service {MSFT_NetTCPConnection (InstanceID = "::1??49671??::??0")}
1 Listen, 2704 ARCGIS {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49754??0.0.0.0??0")}
1 Bound, 11952 easytier-gui {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??49698??0.0.0.0??0")}
1 Established, 1716 svchost {MSFT_NetTCPConnection (InstanceID = "2.2.2.2??3389??2.2.2.3??4605")}
1 Established, 2300 lmgrd {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??27000??127.0.0.1??49758")}
1 Listen, 5348 svchost {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??5040??0.0.0.0??0")}
1 Bound, 5088 zerotier-one_x64 {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??49673??0.0.0.0??0")}
1 Listen, 13904 HipsDaemon {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??58140??0.0.0.0??0")}
1 Bound, 4276 Listary {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??50093??0.0.0.0??0")}
1 Bound, 5776 msedge {MSFT_NetTCPConnection (InstanceID = "0.0.0.0??50076??0.0.0.0??0")}
1 Established, 5776 msedge {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??50076??150.171.28.11??...
1 Listen, 6824 explorer {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??50059??0.0.0.0??0")}
1 SynSent, 5096 vmnat {MSFT_NetTCPConnection (InstanceID = "192.168.2.42??50228??220.191.222.35?...
1 Listen, 10832 listary-core {MSFT_NetTCPConnection (InstanceID = "127.0.0.1??50098??0.0.0.0??0")}
然后打开浏览器输入网址,终于可以上网了。
总结
虽然最后解决了无法上网的问题,但解决过程有些曲折,走了很多弯路。比如,重启网络连接其实根本就不是必要的动作,但在这个过程中,确实学到了在远程计算机上,如何通过命令重启网络连接的方法。