如何同时连内网和WIFI

背景

同时连接了网线和WIFI。
网线使用内网,WIFI使用外网。
然而网线的网络几乎只提供内网(外网很多地址打不开),在连接网线后,DNS服务器被设为内网的DNS服务器,因此几乎不能访问外网。WIFI成了摆设。(因为WIFI的DNS没生效)
因此我们作出如下操作:

  1. 访问所有网络时,使用WIFI的路由(DNS)
  2. 访问内网时,使用网线提供的路由

正文

以下是windows上的命令

route delete 0.0.0.0 mask 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 172.16.15.1
route add 172.1.0.0 mask 255.255.0.0 172.1.11.254

三行代码的含义如下

  1. 删除默认路由规则。(0.0.0.0)

  2. 添加默认路由规则,第一个0.0.0.0在ip中,意味着所有的地址;第二个0.0.0.0跟在mask后面,是子网掩码,0.0.0.0意味着所有的ip都在同一个局域网下。那么很显然,这个意思就是外网(以及内网)。
    0.0.0.0可以被认为是ip中的通配符。
    172.16.15.1是WIFI的路由地址,一般来说,这个地址就是路由器的地址,也作为DNS服务器。
    第二行一整行的含义就是,访问任意网络时,使用WIFI的路由(DNS)。
    image

  3. 添加内网路由规则
    172.1.0.0是我们内网的网络号,255.255.0.0掩码则意味着该网络号中所有ip处于同一个子网。
    因此意思就是,对于内网的任意ip,我们都使用172.1.11.254作为DNS路由。

默认行为

当网络发生变动时,windows会自动调整通配的路由(也就是上面写的0.0.0.0)。这也就意味着,用命令或者什么方式设置0.0.0.0的路由后,当网络发生变动,0.0.0.0的路由规则会被覆盖。
因此在上面的三行代码中,前两行在重新连接WIFI后,都应当重新执行。
上面的前两行可以被以下命令替换

route change 0.0.0.0 mask 0.0.0.0 172.16.15.1

powershell

# 使用以下命令查看路由规则
Get-NetRoute
# 添加路由 route add 172.1.0.0 mask 255.255.0.0 172.1.11.254
New-NetRoute -DestinationPrefix "172.1.0.0/16" -NextHop "172.1.11.254"
posted @ 2025-03-16 10:51  魂祈梦  阅读(340)  评论(0)    收藏  举报