解决 PPTP 连接 VPN 后本地电脑无法访问互联网,以及本地电脑做代理服务器使远程服务器访问互联网。
1. 本地电脑访问互联网
解决 PPTP 连接 VPN 后本地电脑无法访问互联网。
1.1 查看远程服务器网段
连接 VPN,远程服务器上执行 ipconfig
,根据自己远程服务器的 ip 找网段。
如我远程桌面时填写的 ip 是 10.10.10.155,则在远程服务器中找到网段为如下图红框所示:
则网关为 10.10.10.0,子网掩码为 255.255.255.0,下面添加路由时需要使用。
1.2 更改网关
- 断开 VPN,在 windows 网络配适器中找到 vpn 的配适器,右击“属性” -> “网络” -> 左击“Internet协议版本4” -> “属性” -> “高级” -> “ip 设置” -> 取消勾选“在远程网络上使用默认网关”;
-
重新连接 VPN,本地电脑执行
ipconfig
得到 VPN 给本地分配的 ip,如下图:
本次我的本地电脑 ip 为 192.168.8.146。
-
管理员打开命令行,根据上步中得到的远程网段添加路由:
route add [remotenet] mask [remotemask] localIP
,对于本文来说为:route add 10.10.10.0 mask 255.255.255.0 192.168.8.146
这样本地就既可以远程 VPN 上的服务器,又可以访问互联网。
这里贴出对于 VPN 配适器名为 PPP 的 ip 提取以及路由添加代码(powershell),存为 ps1 文件,放到 PATH 中可一键调用:
$a = ipconfig | grep -azio 'ppp.*' | grep -ai 'v4' -m 1 | awk '{print $NF}';route add 10.10.10.0 mask 255.255.255.0 $a;
2. 远程服务器访问互联网
本地电脑做代理服务器使远程服务器访问互联网,以便项目环境配置。
2.1 本地电脑做代理
此处用的 Python 开发的 http/https 代理工具,作者 repo: qwj/python-proxy,详细文档见作者 repo。此处贴出 http 代理简单用法:
安装:
pip3 install pproxy
http 代理:
pproxy -vv # 默认端口 8080,-vv: 显示日志
打开代理后,可能还需要在系统防火墙中开启对应端口的入方向。
Windows 下 asyncio 事件循环无法被键盘中断,故此程序运行无法使用 ctrl + c 终止,解决办法是在其 server.py
(位置: pathTo\site-packages\pproxy\server.py
)中加入(参考: Why does the asyncio’s event loop suppress the KeyboardInterrupt on Windows?):
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
2.2 远程服务器使用代理
对于上面的代理,本地连接 VPN 后 ip 为: 192.168.8.146
,则远程服务器使用为:
npm 使用代理:
# 设置代理
npm config set proxy http://192.168.8.146:8080
# 删除代理
#npm config delete proxy
pip 使用代理:
pip --proxy 192.168.8.146:8080 install packageName