Hyper-V - Setup a gateway with OpenWRT

  • 为 OpenWRT 构建 Virtual Switch

    • 创建外网Switch(如果已存在可以忽略)

      这里假设名为External Switch,使用的是WIFI无线网卡。

    • 创建内网Switch

$ New-VMSwitch -SwitchName "OpenWRT Switch" -SwitchType Internal
$ New-NetIPAddress -IPAddress 192.168.200.1 -PrefixLength 24 -InterfaceAlias "vEthernet (OpenWRT Switch)" -AddressFamily IPv4
  • 创建 OpenWRT 虚拟机

设置两块网卡,第一块为内网网卡OpenWRT Switch,第二块为外网网卡External Switch

  • 启动虚拟机,配置网络
$ vim /etc/config/network
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.200.3'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth1'
        option proto 'dhcp'
  • 应用网络设置
$ /etc/init.d/network restart
  • 现在的网络结构

OpenWRT Network

此时,OpenWRT可以通过第二块网卡连接外网连接路由器上网,而PC主机通过`External Switch`连接路由器上网,我们现在需要做的事情是让PC主机通过OpenWRT虚拟主机去访问网络,因为只有这样才能透明的使用OpenWRT的代理服务。
  • 配置PC上的网卡OpenWRT Switch的网关的DNS均指向OpenWRT Linux主机。
Ethernet adapter vEthernet (OpenWRT Switch):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #6
   Physical Address. . . . . . . . . : 00-15-5D-8E-D5-1F
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.200.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.200.3
   DNS Servers . . . . . . . . . . . : 192.168.200.3
   NetBIOS over Tcpip. . . . . . . . : Enabled
  • 禁用掉PC上的External Switch,无需修改路由,如此PC将无法通过该网卡上网,转而使用OpenWRT Switch网卡上网。
$ tracert baidu.com                                                                     
Tracing route to baidu.com [39.156.69.79]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  OPENWRT [192.168.200.3]
  2     2 ms     7 ms     2 ms  192.168.1.1
  3     5 ms     7 ms     5 ms  10.89.0.1
  4     *        *        5 ms  221.131.242.137
  5     *        *        *     Request timed out.
  6     *        *        6 ms  221.183.47.165
  7    29 ms    29 ms    28 ms  221.183.37.161
  • 我们随时可以重新启用External Switch,系统将重新采用该网卡作为上网网卡而不再经过OpenWRT。
tracert baidu.com                                                                     
Tracing route to baidu.com [220.181.38.148]
over a maximum of 30 hops:

  1     2 ms     1 ms     1 ms  192.168.1.1
  2    20 ms     5 ms     5 ms  10.89.0.1
  3     *        *        *     Request timed out.
  4     *        *        *     Request timed out.
  5     4 ms     7 ms     4 ms  211.140.0.50
  6     *        *        *     Request timed out.
  7     *        *        *     Request timed out.
  8    36 ms    29 ms    28 ms  221.183.22.109
观察上面的两次路由跟踪我们会发现,同样是访问`baidu.com`经过路由和不经过所解析的目标地址并不相同。
  • 至此,网关配置完成,在PC上的软件包括WSL中不需要其他网络配置,可以透明通过网关访问网络。