id: 90c24de1e559467dac8e002ef380af7e
parent_id: 
item_type: 1
item_id: a012bf670beb491bad7d025470a8192d
item_updated_time: 1764365025041
title_diff: "[{\"diffs\":[[1,\"智能VPN - OpenWrt.io\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":18}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>智能VPN - OpenWrt.io</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"application-data:2525275\\\" content=\\\"6692893/s30/79ed4589-8a97-48bc-a94c-61175cd90313/app.yinxiang.com\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"9643\\\"></a>\\\r\\\n<h1>智能VPN - OpenWrt.io</h1>\\\r\\\n\\\r\\\n<div>\\\n<span><div>\\\n <div>\\\n  <div>\\\n   <h1>智能网络分流 smart VPN</h1>\\\n   <div>\\\n    <div></div>\\\n   </div>\\\n  </div> \\\n  <p>智能VPN的典型场景是：在家或者出差办公时，需要连接公司内网（intranet），又不想把所有流量都通过公司转发，那样上网太慢，所以如果能配置外网黑名单，默认所有请求都走外网（internet），而黑名单的IP和域名不走外网，走VPN，这样分流就互不影响了。</p> \\\n  <h2>常见的公司内网服务</h2> \\\n  <p>企鹅公司的内网网段为10.0.0.0/8，内部网站有passport.oa.com、isux.oa.com，访问之前需要先连接公司VPN。</p> \\\n  <p>喵星人公司的内网网段为10.0.0.0/8，内部DNS为10.13.x.x，内部网站有<a href=\\\"http://crm.alibaba-inc.com/\\\" shape=\\\"rect\\\" target=\\\"_blank\\\">crm.alibaba-inc.com</a>、<a href=\\\"http://work.alibaba-inc.com/\\\" shape=\\\"rect\\\" target=\\\"_blank\\\">work.alibaba-inc.com</a>、<a href=\\\"http://aliway.com/\\\" shape=\\\"rect\\\" target=\\\"_blank\\\">aliway.com</a>，访问之前需要先连接公司VPN（文档：<a href=\\\"https://alilang.alibaba-inc.com/portal/help.htm\\\" shape=\\\"rect\\\" target=\\\"_blank\\\">https://alilang.alibaba-inc.com/portal/help.htm</a>），连接之后，访问截图如下：</p> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image.png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"work.alibaba-inc.com\\\"/>\\\n  </div> \\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [1].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"aliway.com\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>熊掌公司的内网网段为10.0.0.0/8，内部网站有family.baidu.com、erp.baidu.com、icafe.baidu.com，访问之前需要先连接公司VPN（文档：<a href=\\\"https://vpn.baidu.com/\\\" shape=\\\"rect\\\" target=\\\"_blank\\\">vpn.baidu.com</a>）。</p> \\\n  <p>执行下列指令：</p> \\\n  <pre><code>nslookup passport\\\n</code></pre> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [2].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"tencent intranet nslookup\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以看到passport.oa.com无法解析，是个内网域名，要连上企鹅公司内网，使用公司内网DNS解析。</p> \\\n  <p>假设家里的网络是192.168.199.0/24，路由器IP是192.168.199.1，DNS是192.168.199.1。以企鹅公司为例，假设公司DNS为10.0.0.1，公司FTP为10.0.0.21，公司内部网站为passport.oa.com。VPN网段为172.16.0.0/12。目标：智能分流，可直接访问公司FTP和oa。先从简单的开始：在电脑上实现分流。</p> \\\n  <h2>电脑设置路由表实现IP智能分流</h2> \\\n  <p>家里电脑现在可以正常上网，网络状态和路由表如下：</p> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [3].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu default route\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以看到默认路由是 0.0.0.0 192.168.199.1 eth0，即所有网络请求都通过eth0网卡发往192.168.199.1网关。</p> \\\n  <p>现在连接公司VPN，如下图：</p> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [4].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu edit vpn\\\"/>\\\n  </div> \\\n  <div>\\\n   <img alt=\\\"ubuntu vpn route\\\" src=\\\"http://openwrt.io/docs/images/ubuntu-vpn-route.png\\\"></img>\\\n  </div> \\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [5].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu vpn nslookup intranet\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以看到建立VPN连接后，多了一个ppp0，IP为172.16.0.20，默认路由变成了ppp0，即所有网络请求都通过ppp0即VPN通道进行发送。内网域名也可以解析并访问了。</p> \\\n  <p>如何默认走外网，而不是VPN呢？忽略路由表，断开重连即可，如图：</p> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [6].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu edit vpn ignore route\\\"/>\\\n  </div> \\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [7].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu vpn ignore route\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>这时再试试解析内网域名，显然不通了，即使我们知道网站的IP，也无法访问，如图：</p> \\\n  <pre><code>nslookup passport\\\nping .\\\n</code></pre> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [8].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu vpn ignore route nslookup\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>试试下面的指令：</p> \\\n  <pre><code> 172.16.0.1\\\n</code></pre> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [9].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu vpn ignore route ping gateway\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以发现此时电脑和VPN网关是通畅的，也就是192.168.199.0/24能访问到172.16.0.0/12，但无法访问10.0.0.0/8。添加一条路由表即可：</p> \\\n  <pre><code> route add -net 10.0.0.0/ ppp0\\\n</code></pre> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [10].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu route add\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以看到IP能访问了，但公司内网域名还是无法解析，如果获得公司所有内网域名的IP，写到电脑hosts文件里，也算勉强能用了。缺点是一旦IP变化，就麻烦了，所有人都要改。所以最好能做到域名智能分流，请看下面的内容。</p> \\\n  <h2>电脑设置dnsmasq实现域名智能分流</h2> \\\n  <p>尝试解析公司内网域名，不指定DNS 和 指定公司DNS进行对比，如下图：</p> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [11].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu nslookup custom dns\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>可以发现只要告诉电脑，凡是公司的域名都走公司DNS解析即可。在Ubuntu电脑上，系统自带的dnsmasq即可实现，指令如下：</p> \\\n  <pre><code> &quot;server=/.oa.com/10.0.0.1&quot; | sudo tee  /etc/dnsmasq.d/blacklist\\\n</code></pre> \\\n  <p>不过Ubuntu重启dnsmasq比较麻烦，如下：</p> \\\n  <pre><code>sudo service network-manager restart\\\nsudo  lxc-net\\\nsudo start lxc-net\\\n</code></pre> \\\n  <p></p>\\\n  <div>\\\n   <img src=\\\"智能VPN - OpenWrt.io_files/Image [12].png\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"ubuntu dnsmasq custom server\\\"/>\\\n  </div>\\\n  <p></p> \\\n  <p>Linux电脑VPN智能分流到此完成。使用了sudo命令，也就是管理员权限。正常的Android和iOS设备没有root，没法使用此命令，而且如果是分公司办公，人人都要这样设置，维护成本会很高。有没有更好的方案？有，那就是——智能VPN路由器。</p> \\\n  <h2>打造智能VPN路由器</h2> \\\n  <p>OpenWrt路由器也是Linux，操作步骤和上面几乎一样，大家自行试验。如果做出来了，说明理解了路由表和iptables。如果有问题的话，请google找到教程，系统的学习Linux和iptables。</p> \\\n </div>\\\n</div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":5554}]"
metadata_diff: {"new":{"id":"a012bf670beb491bad7d025470a8192d","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348863643,"user_updated_time":1764345564888,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":1764365025041},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:24:54.388Z
created_time: 2025-11-28T21:24:54.388Z
type_: 13