记一次 macOS 路由以及 VPN 调整

需求

由于公司距离母公司较远, 公司网络重新配置, 现在莫名其妙个别服务无法直接访问, 需要通过 vpn 才能访问北京的, 由此有以下需求:

  1. macOS 配置了 L2TP VPN 连接家里的网络, 公司的 VPN 也同时开启, 导致家里的 192.168.110.0/24 段的网络无法访问, 被公司 VPN 覆盖了路由表配置
  2. 公司 VPN 长期登录在打包机上, 局域网通过 Clash 的 socks 服务访问打包机, 需要电脑兼容机场订阅和特定域名访问局域网内的公司 VPN

修改路由表以解决需求 1

通过网络查询可以知道 L2TP 的网卡是 ppp0

首先,点开 VPN 高级选项,把通过 VPN 连接发送所有流量去掉。 接着 sudo vim /etc/ppp/ip-up, 添加如下内容:

#!/bin/sh
/sbin/route add -net 192.168.110.0/24 -interface ppp0

保存退出, 给权限:

sudo chmod 0755 /etc/ppp/ip-up

查询路由表 netstat -nr:

配置 Clash 达到需求

基础使用

  1. 在打包机上登录 VPN, 然后下载 ClashX 或者 Clash for Windows, 启用允许局域网


  2. 此时可以使用打包机 ip + port 作为代理, 比如我的是 10.240.6.155:7890, 可以先用手机配置后看看效果

  3. 手机使用 shadowrocket 配置, 一劳永逸, 注意图上的标注位置


  4. 手机配置后没问题的话, 或者不想手机配置的现在配置自己的 macOS

  5. macOS 我使用的是 Clash for Windows, 功能比 ClashX 强大

  6. 基础配置很简单, 可以自行研究一下

进阶使用

下面说一下兼容机场和公司 VPN, 对 Clash for Windows 里面的 config.yaml 修改配置

  1. 配置 rule-providers, 单纯是规则的配置, 也就是域名-ip-dns 需要的规则, 有人整理了 Rules, 可以无脑配置上, 此时还不能保存并应用, 会报错的
  2. 配置 proxy-providers, 单纯是机场代理的配置, 也就是自己的订阅, 此处加上马赛克, 具体写法和 rule-providers 很像, 我下面会给出例子, 这里需要注意的是, type 字段只能支持 http 或者 file, 有的订阅链接下载后格式完全符合 clash 的格式, 此时可以用 http, 然后设置定时更新就好, 如果格式不正确在保存的时候会报错的, 例子我都会写出来
  3. 配置 proxies, 此处声明的代理直接描述打包机的代理即可
  4. 配置 proxy-groups, 此处声明代理组别方便扩展, 以及兼容机场和打包机代理
  5. 配置文件内容如下, 我对机场订阅连接删除了部分关键内容哈 :
#---------------------------------------------------#
## 配置文件需要放置在 $HOME/.config/clash/*.yaml

## 这份文件是clashX的基础配置文件,请尽量新建配置文件进行修改。
## !!!只有这份文件的端口设置会随ClashX启动生效

## 如果您不知道如何操作,请参阅 官方Github文档 https://github.com/Dreamacro/clash/blob/dev/README.md
#---------------------------------------------------#

# (HTTP and SOCKS5 in one port)
mixed-port: 7890
# RESTful API for clash
external-controller: 127.0.0.1:57166
allow-lan: true
mode: rule
log-level: warning
secret: a6cb7deb-1ae3-4df5-b48c-83740515545b

proxy-providers:
  naiyun:
    type: file
    url: "https://www.naiun.co/api/v1/client/subscribe?token"
    path: ./profiles/1655098029551.yml
    
  ssr:
    type: http
    url: "https://s.trojanflare.com/clashx/ec8812b4-a9970db0"
    path: ./profiles/ssr.yml
    interval: 3600
    health-check:
        enable: true
        url: http://www.gstatic.com/generate_204
        interval: 300
    
proxies:
  - { name: CompanySocks5, type: socks5, server: 10.240.6.51, port: 7890 }
        
# 在 Proxy Group 中使用 proxy-provider
proxy-groups:
  - name: PROXY
    type: select
    use:    # 引入 proxy-provider 使用 use 关键字
      - naiyun
      - ssr
      
  - name: Company
    type: select
    proxies:
      - CompanySocks5

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

  icloud:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/icloud.txt"
    path: ./ruleset/icloud.yaml
    interval: 86400

  apple:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/apple.txt"
    path: ./ruleset/apple.yaml
    interval: 86400

  google:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/google.txt"
    path: ./ruleset/google.yaml
    interval: 86400

  proxy:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400


  direct:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400

  private:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/private.txt"
    path: ./ruleset/private.yaml
    interval: 86400

  gfw:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400

  greatfire:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/greatfire.txt"
    path: ./ruleset/greatfire.yaml
    interval: 86400

  tld-not-cn:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/tld-not-cn.txt"
    path: ./ruleset/tld-not-cn.yaml
    interval: 86400

  telegramcidr:
    type: http
    behavior: ipcidr
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/telegramcidr.txt"
    path: ./ruleset/telegramcidr.yaml
    interval: 86400

  cncidr:
    type: http
    behavior: ipcidr
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

  lancidr:
    type: http
    behavior: ipcidr
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/lancidr.txt"
    path: ./ruleset/lancidr.yaml
    interval: 86400

  applications:
    type: http
    behavior: classical
    url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/applications.txt"
    path: ./ruleset/applications.yaml
    interval: 86400
      
rules:
  - DOMAIN-SUFFIX,zuoyebang.cc,Company
  - RULE-SET,applications,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,DIRECT
  - RULE-SET,private,DIRECT
  - RULE-SET,reject,REJECT
  - RULE-SET,icloud,DIRECT
  - RULE-SET,apple,DIRECT
  - RULE-SET,google,DIRECT
  - RULE-SET,proxy,PROXY
  - RULE-SET,direct,DIRECT
  - RULE-SET,lancidr,DIRECT
  - RULE-SET,cncidr,DIRECT
  - RULE-SET,telegramcidr,PROXY
  - GEOIP,LAN,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

你可能感兴趣的:(记一次 macOS 路由以及 VPN 调整)