win10通过route配置实现多网卡选择上内外网

简介

场景

笔记本通过无线网接入内网,台式机有线网未入域,通过访客模式访问网络,无法访问内网资源。如果台式机直接通过已经入域的笔记本的 wifi 热点上网,可以访问内网,但是会因为 NAT 导致外网无法访问台式机的服务。

解决思路

  • 目的:通过配置 route 实现访客模式同时具有内网权限。
  • 思路:
    • 台式机通过有线网获得内网 IP,提供给局域网访问;
    • 台式机通过无线网卡连接笔记本热点,访问内网资源。
  • 解决:
    • 台式机上需要外网访问的服务放置在虚拟机中,虚拟机使用有线网卡;
    • 台式机上需要访问内网资源的服务直接运行,并通过配置 route 路由表通过无线网卡访问资源,而局域网内其他机器仍可以通过未 NAT 的有线网 IP 找到该台式机。
    • 未经过 NAT 的 IP 需要手动配置,传给 eureka(status-page-urlinstance-id

VMWare 配置

管理员打开虚拟网络编辑器,建立两个桥接网络配置,分别对应无线网络与有线网卡。在虚拟机设置中选择网络配置,自定义配置,选择自己的配置项目。

双网卡

route 表配置

参考:window route命令解释(适合双网卡多网段访问)

1
2
3
4
5
# 让 10 开头的 ip 走无线网卡网关
route add 10.0.0.0 mask 255.0.0.0 192.168.137.1

# 删除
route delete 10.0.0.0

WEB 服务部署问题

改变 router 表后,启动 IDEA 的 tomcat 服务报错,控制台输出空白的 error 信息。原因:

1
2
3
4
# 错误示范!
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.137.1
# route add 0.0.0.0 mask 0.0.0.0 10.200.67.254

这样配置虽然不影响上网,却影响 java 部署到 0.0.0.0 服务。

eureka网关504问题:使用 nginx 代理

2020-5-13 更新

  • 504 原因:只有笔记本所在域网才能连通 eureka服务器,所以会报出 504 网关错误。
  • 解决思路:在笔记本中运行 nginx 代理,代理台式机的服务,台式机起微服务时,配置文件将服务 IP 定向到笔记本。

nginx 配置

nginx下载安装:nginx 官网

解压 zip 后双击 exe 文件即可运行,在任务管理器中可以查看。关键 server 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 8080 端口代理微服务
server {
listen 80;
server_name _;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
proxy_pass http://<微服务所在 IP>:8080;

#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

eureka 配置

其中 IP 导向笔记本 IP

1
2
3
4
5
6
7
8
9
10
11
eureka:
client:
serviceUrl:
defaultZone: http://10.24.20.66:8761/eureka
instance:
preferIpAddress: true
ip-address: 10.72.101.17 #不进行配置时会使用默认值
# status-page-url: http://${spring.cloud.client.ipAddress}:${server.port}/swagger-ui.html
status-page-url: http://10.72.101.17:8080/swagger-ui.html
# instance-id: ${spring.cloud.client.ipAddress}:${server.port}
instance-id: 10.72.101.17:8080

账号登录次序问题

2020-5-15 新增

  1. 台式机连接网线,申请访客并登陆
  2. 笔记本打开热点,台式机连到热点
  3. 配置 route 表的内网路由走笔记本,公网仍走网线

如果 1、2 步颠倒,可能导致台式机正常上公网时走笔记本,使网关检查入域情况时发现流量没入域,再次要求验证身份(原来是笔记本的入域身份),验证后就会把网关上原来入域的笔记本的账号顶掉,导致仍旧不能访问内网。