根据 IP 地址进行 VPN 分流(详细,亲测,通用)

根据 IP 地址进行 VPN 分流(详细,亲测,通用)

背景

不在学校的时候需要使用实验室的服务器,但是实验室的服务器只能在校园网内访问,因此在校外就需要使用学校的 VPN,但是打开 VPN 以后会默认将所有流量都走 VPN,如果学校的网络较慢或者访问不了某些网站,就很不方便了。

那么,有没有办法通过自定义规则,只在访问实验室服务器 IP 的时候通过 VPN,访问 Google 等别的网站还是用本机原有的网络呢?因此我的目标是根据 IP 地址进行 VPN 分流:实验室的服务器 IP 使用学校 VPN,其他 IP 地址不使用学校 VPN。

经过一翻摸索,只需要将 VPN 的默认网关关闭,让访问外部网站的流量不再走 VPN,然后在路由表中为实验室的服务器 IP 添加一条路由到 VPN 的特殊规则即可。

下面详细介绍操作步骤,只需要 3 步即可。

步骤

添加 VPN

第一步当然添加学校的 VPN,如果已经添加过可以直接跳过看第 2 步。

使用 windows 内置的 VPN 客户端:设置-网络和 Internet-VPN-添加 VPN。

填写 VPN 服务器地址、用户名和密码等,在 连接名称 里面给这个 VPN 起个名字,**但最好起个英文名称!**用中文名可能会有意想不到的问题,比如与系统代理共存:中文 VPN 名称/校网客户端 + 代理 = Boom?锟斤拷!

请添加图片描述

保存以后打开 VPN,此时应该可以访问学校内网的服务器了。

(这一部分可以跳过)

如果想要了解一点原理,Windows 系统在 CMD 或者 powershell 当中使用 ipconfig /all 可以查看一下本机中的所有网络接口。可以发现里面有一个 VPN 对应的适配器,其中 IPv4 地址一项是这个 VPN 适配器对应的接口地址(Interface)。

请添加图片描述

对比一下开启 VPN 前后的路由表,Windows 系统在 CMD 或者 powershell 当中查看路由表的命令是 route print

>>> route print # 开启 VPN 前
...
IPv4 路由表
===========================================================================
活动路由:网络目标           网络掩码               网关              接口   跃点数0.0.0.0          0.0.0.0         192.168.31.1    192.168.31.54   8615127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
...
===========================================================================
...>>> route print # 开启 VPN 后
...
IPv4 路由表
===========================================================================
活动路由:网络目标           网络掩码               网关              接口   跃点数0.0.0.0          0.0.0.0       192.168.31.1    192.168.31.54     128400.0.0.0          0.0.0.0            在链路上    111.186.xx.xxx     46111.186.xx.0  255.255.255.255       192.168.31.1    192.168.31.54     4281111.186.xx.xxx  255.255.255.255            在链路上    111.186.xx.xxx    301127.0.0.0        255.0.0.0            在链路上         127.0.0.1   4556127.0.0.1  255.255.255.255            在链路上         127.0.0.1   4556
...
===========================================================================
...

对比一下可以发现,开启 VPN 以后,多了目标 IP 为 0.0.0.0 的规则,默认将所有流量都路由到 VPN 适配器对应的接口。为什么不是根据原来的那条 0.0.0.0 的规则发往 192.168.31.54?因为跃点数(Metric)代表了路由的优先级,越小的优先级越高。新加的这条规则跃点数很低,优先级高,原来的规则就失效了。

活动路由:网络目标           网络掩码               网关              接口   跃点数0.0.0.0          0.0.0.0            在链路上    111.186.xx.xxx     46

关闭 VPN 的默认网关

添加好 VPN 以后,我们需要关闭 VPN 的默认网关设置,就是让访问外部网站的流量不再走 VPN,换句话说,就是删除 IPv4 路由表当中的这一条:

活动路由:网络目标           网络掩码               网关              接口   跃点数0.0.0.0          0.0.0.0            在链路上    111.186.xx.xx     46

理论上用 route delete 命令可以直接删除路由表中的表项,但是方便起见我们可以直接在控制面板里面关闭。

打开控制面板:控制面板\网络和 Internet\网络连接

选择 VPN 对应的网络连接,名称是第 1 步当中起的 VPN 名称,右键选择属性:

请添加图片描述

在属性面板选择”高级“标签页,然后选择 IPv4(Internet 协议版本 4),选择”属性“:

请添加图片描述

再选择”高级“:

请添加图片描述

看到里面有一个”在远程网络上使用默认网关“,默认应该是勾选上的,我们取消这个勾选,然后”确定“:

请添加图片描述

关闭以后重新打开 VPN,这时候所有的流量都默认不走 VPN 了,试一下学校内部的网站或者是服务器应该是无法访问的状态,其它网站应该是使用本机原本的网络能够正常访问的。

如果这个时候看一下路由表,会发现目标地址 0.0.0.0 的规则只剩下原本的那条了:

IPv4 路由表
===========================================================================
活动路由:网络目标        网络掩码                网关             接口   跃点数0.0.0.0          0.0.0.0     192.168.31.1       192.168.31.54   8615111.0.0.0        255.0.0.0            在链路上    111.186.xx.xxx     46111.186.xx.0  255.255.255.255     192.168.31.1       192.168.31.54     56111.186.xx.xxx  255.255.255.255            在链路上    111.186.xx.xxx    301111.255.255.255  255.255.255.255            在链路上    111.186.xx.xxx    301
...
===========================================================================
永久路由:无
===========================================================================

配置路由表

第三步就是向路由表中添加自定义的规则,将学校内网想要访问的 IP 地址路由给 VPN 适配器。

Windows 系统用管理员模式启动在 CMD 或者 powershell:

首先查看 VPN 适配器的网络接口号,用 route print 命令,在开头的接口列表当中,可以找到 VPN 名称对应的接口号(需要在 VPN 打开的才能找到),这里假设是 42

请添加图片描述

接着用 route 命令添加自定义规则,例如添加想要访问的 IP 地址是 123.123.123.123,IF 后面跟的是上面找到的 VPN 适配器的网络接口号是:

route add -p 123.123.123.123 MASK 255.255.255.255 0.0.0.0 IF 42

-p 参数代表永久添加,系统重启以后仍然保留,MASK 255.255.255.255 代表完全匹配这个 IP 地址,这条命令会将目标地址是 123.123.123.123 的流量发送到指定的网络接口 42,走 VPN。

请添加图片描述

如果有”操作完成!“的提示则代表添加成功。添加完成后,就可以直接访问学校内网指定的服务器了。这时候访问其他网站还是走原来的网络,没有经过 VPN。

(这一部分可以跳过)

检查路由表可以发现这时候多了一条永久路由,由于跃点数(METRIC)设置成了 1,因此这条规则的优先级是最高的:

>>> route print
...
IPv4 路由表
===========================================================================
活动路由:网络目标          网络掩码             网关               接口    跃点数0.0.0.0          0.0.0.0     192.168.31.1    192.168.31.54   8615111.0.0.0        255.0.0.0            在链路上    111.186.xx.xxx     46111.186.xx.0  255.255.255.255     192.168.31.1    192.168.31.54     56
...
===========================================================================
永久路由:网络地址           网络掩码                    网关地址    跃点数123.123.123.123  255.255.255.255            在链路上        1
===========================================================================
...

我们还可以用 tracert 工具查看某个 IP 或者网址的路由路线来确定是否走了 VPN:

tracert 123.123.123.123

比如下面这个路由路线,第一跳发往的是与上面 VPN 相关的地址 111.186.xx.xxx,说明访问这个 IP 走的是 VPN。

请添加图片描述

参考

Windows 路由表根据 IP 段进行 VPN 分流

Windows 路由表详解 - 博客园

How to Add a Static TCP/IP Route to the Windows Routing Table

How to use Tracert/Traceroute

中文 VPN 名称/校网客户端 + 代理 = Boom?锟斤拷!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/426642.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure中后台管理信息系统通用原型方案

Axure中后台管理信息系统通用原型方案中的12套模板,旨在帮助开发者与设计师快速搭建出标准且美观的中后台产品原型,提升开发效率和节省协作成本。这些模板覆盖了多样化的中后台管理系统开发需求,具有高度的灵活性和可定制性。 以下是对这些模…

技术周总结 09.09~09.15周日(C# WinForm WPF 软件架构)

文章目录 一、09.09 周一1.1) 问题01: Windows桌面开发中,WPF和WinForm的区别和联系?联系:区别: 二、09.12 周四2.1)问题01:visual studio的相关快捷键有哪些?通用快捷键编辑导航调试窗口管理 2…

论文解读《LaMP: When Large Language Models Meet Personalization》

引言:因为导师喊我围绕 “大语言模型的个性化、风格化生成” 展开研究,所以我就找相关论文,最后通过 ACL 官网找到这篇,感觉还不错,就开始解读吧! “说是解读,其实大部分都是翻译哈哈哈&#x…

基于SSM的在线家用电器销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSSMVueMySQL的在线家…

传输层协议 —— UDP协议

目录 0.前言 1.UDP协议格式 16位源端口和目的端口 16位UDP长度 16位校验和 2.UDP协议特点 无连接 不可靠 面向数据报 3.UDP的缓冲区 0.前言 首先,我们得明确一点,网络模型是分层的。自底向上分别是物理层、数据链路层、网络层、传输层、应用层…

MODIS/Landsat/Sentinel下载教程详解【常用网站及方法枚举】

⛄前言 在当今快速发展的地球观测时代,遥感技术作为获取地球表面及其环境信息的重要手段,正以前所未有的广度和深度改变着我们对自然界的认知与管理方式。MODIS(Moderate-resolution Imaging Spectroradiometer,中分辨率成像光谱…

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…

AI编程的特点及SCSAI平台在AI编程方面的一些思路

团长团 AI智造AI编程 2024年09月18日 18:25 北京 说先来看看AI编程的优缺点,然后我们再看看SCSAI在AI编程方面的一些可能选择 使用AI编程的优点 ‌AI编程的优点包括提升编程效率、降低编程门槛、优化程序结构、加强软件可靠性、促进跨领域融合,而缺点则…

JS落叶动画代码分析

秋天到了,秋高气爽的季节。我们来做一个落叶动画吧!来迎接秋天的到来 文字可以更换。 1.目录如下 在线演示:点击我在线演示 images两张照片,首先,你得要准备一个vscode编辑器。和一个chorme浏览器或edge浏览器。 …

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件,类似于这样: 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5,in…

Kubernetes Ingress

文章目录 一、为什么需要 Ingress二、什么是Ingress,Ingress Controller三、Ingress 的工作原理四、Ingress 配置资源模版五、实例1、搭建 Ingress 环境1.1、Ingress-Nginx官网地址1.2、master 节点下载 deploy.yaml1.3、所有节点提前 pull 必须的镜像1.4、修改并应用 deploy.y…

保护您的企业免受网络犯罪分子侵害的四个技巧

在这个日益数字化的时代,小型企业越来越容易受到网络犯罪的威胁。网络犯罪分子不断调整策略,并使用人工智能来推动攻击。随着技术的进步,您的敏感数据面临的风险也在增加。 风险的不断增大意味着,做好基本工作比以往任何时候都更…

JavaEE:网络编程(套接字)

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

MySQL高阶1777-每家商店的产品价格

题目 找出每种产品在各个商店中的价格。 可以以 任何顺序 输出结果。 准备数据 create database csdn; use csdn;Create table If Not Exists Products (product_id int, store ENUM(store1, store2, store3), price int); Truncate table Products; insert into Products …

运行npm install 时,卡在sill idealTree buildDeps没有反应

一直停留在sill idealTree buildDeps 解决方法 npm config set registry https://registry.npm.taobao.org 配置后用下面命令看是否配置成功 npm config get registry 如果配置还不好使 就执行下行的ssl npm set strict-ssl false 然后执行 npm install 成功执行

【Python报错已解决】 TypeError: Descriptors cannot not be created directly

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Java--stream流、方法引用

Stream流 - Stream流的好处 - 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义 - Stream流把真正的函数式编程风格引入到Java中 - 代码简洁 - Stream流的三类方法 - 获取Stream流 - 创建一条流水线,并把数据放到流水线上准备进行操作 - 中间方法 - 流水线上的操作 - 一次…

83.static关键字

目录 一.static关键字 1.1 修饰局部变量 1.2 修饰全局变量 1.3 修饰函数 二.视频教程 一.static关键字 static关键字可以修饰局部变量,全局变量和函数。 1.1 修饰局部变量 使用static关键字修饰局部变量,只在第一次进入作用域的时候初始化 。函数…

C++ | Leetcode C++题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindrome(string s) {unordered_map<char, int> count;int ans 0;for (char c : s)count[c];for (auto p : count) {int v p.second;ans v / 2 * 2;if (v % 2 1 and ans % 2 0)ans;}retur…

下拉框QComboBox

文本 // 获取和设置当前条目的索引 int currentIndex() const void setCurrentIndex(int index)// 获取和设置当前条目的文本 QString currentText() const void setCurrentText(const QString &text)// 获取和设置指定索引条目的文本 QString itemText(int index) co…