‹ 返回笔记 Esc·

网络 问题与修复

Linux 代理 V2RayA https://github.com/v2rayA/v2rayA 需要放通 2017 端口 访问 http://your_host:2017 1. 在 Web 界面中,…

Linux 代理

V2RayA

https://github.com/v2rayA/v2rayA

1sudo systemctl enable v2raya
2sudo systemctl start v2raya

需要放通 2017 端口

访问 http://your_host:2017

  1. 在 Web 界面中,您可以通过导入订阅链接来导入节点配置
  2. 在 Web 界面中,选择要连接的节点,然后点击左上角的启动按钮。
  3. 启动成功后,连接的节点将显示为蓝色,表示服务正在运行。
  4. v2rayA 默认开放以下端口供代理使用:
  • Socks5 代理:20170
  • HTTP 代理:20171
  • 带分流规则的 HTTP 代理:20172

Mihomo

https://github.com/MetaCubeX/mihomo

教程:https://wiki.metacubex.one/startup/service/

  1. 下载二进制可执行文件 releases(性能好选 v3)
  • v1 / v2 / v3:代表编译时针对不同等级的 CPU 指令集
  • v1:最低指令集要求(兼容最老 CPU)
  • v2:中等级优化
  • v3:最高优化(如果你的 CPU 支持现代指令集,性能最好)
  • go120** / **go123:用于编译的 Go 语言版本
    • 有些旧 Linux 内核或老发行版可能需要用 Golang 1.20 编译的二进制才能更好兼容
    • 你运行的是 Ubuntu 24.04 + Linux 6.14,属较新系统,不需要特意选带 go120 / go123 的版本
  • 没有标签 / compatible:旧式、不再推荐的默认编译方式,最新版已经不要优先选用了
  1. 将下载的二进制可执行文件重名名为 mihomo 并移动到 /usr/local/bin/
1gunzip mihomo-linux-amd64-v3-v1.19.25.gz
2sudo chmod +x mihomo-linux-amd64-v3-v1.19.25
3sudo mv mihomo-linux-amd64-v3-v1.19.25 /usr/local/bin/mihomo
4mihomo -v
  1. 以守护进程的方式,运行 mihomo。

Clash 配置文件复制到 /etc/mihomo:

1sudo mkdir  /etc/mihomo
2cp config.yaml /etc/mihomo

创建 systemd 配置文件 /etc/systemd/system/mihomo.service

1[Unit]
2Description=mihomo Daemon, Another Clash Kernel.
3After=network.target NetworkManager.service systemd-networkd.service iwd.service
4
5[Service]
6Type=simple
7LimitNPROC=500
8LimitNOFILE=1000000
9CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
10AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
11Restart=always
12ExecStartPre=/usr/bin/sleep 1s
13ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
14ExecReload=/bin/kill -HUP $MAINPID
15
16[Install]
17WantedBy=multi-user.target

使用以下命令重新加载 systemd:

1sudo systemctl daemon-reload

启用 mihomo 服务:

1sudo systemctl enable mihomo

使用以下命令立即启动 mihomo:

1sudo systemctl start mihomo

使用以下命令使 mihomo 重新加载:

1sudo systemctl reload mihomo

使用以下命令检查 mihomo 的运行状况:

1sudo systemctl status mihomo

使用以下命令检查 mihomo 的运行日志:

1journalctl -u mihomo -o cat -e
2
3journalctl -u mihomo -o cat -f

订阅配置成功 /etc/mihomo 能看到:

1➜  ss -tlnp | grep 7890
2LISTEN 0      4096       127.0.0.1:7890      0.0.0.0:*
3➜  mihomo pwd
4/etc/mihomo
5➜  mihomo ls -ahl
6总计 9.3M
7drwxr-xr-x   2 root root 4.0K  1月  6 10:52 .
8drwxr-xr-x 159 root root  12K  1月  6 10:26 ..
9-rw-r--r--   1 root root  16K  1月  6 10:52 cache.db
10-rw-r--r--   1 root root  37K  1月  6 10:51 config.yaml
11-rw-r--r--   1 root root 9.2M  1月  6 10:52 geoip.metadb

适配 MetaCubeXD UI(用于切换节点)

地址:https://github.com/MetaCubeX/metacubexd

更新时点击左下角的 MetaCubeXD 版本号即可更新

在 mihomo 配置中启用外部控制器:

1external-controller: 0.0.0.0:9090
2secret: "Qwer@#1234"
3external-ui: ui
4external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"

使用预制资源

1# Clone the gh-pages branch
2git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui
3
4# Set external-ui in your config
5# external-ui: /etc/mihomo/ui
6
7# Update to latest version
8git -C /etc/mihomo/ui pull -r
9
10sudo systemctl daemon-reload
11sudo systemctl restart mihomo

访问地址:http://:9090/ui URL:http://:9090


hosts 文件

Windows 的 PowerToys 中有 Hosts 文件编辑器

hosts 文件相当于一个简单的、本地 DNS 映射文件。当我们访问一个域名时,操作系统首先会检查 hosts 文件是否有对应的映射。如果有,它会直接使用该 IP 地址;如果没有,才会请求 DNS 服务器进行解析。

在本地测试或调试应用时,尤其是在开发环境和生产环境使用不同 IP 地址的情况下,可以通过 hosts 文件将同一域名指向本地的不同 IP 地址,模拟不同环境下的访问效果。

  1. 配置示例

hosts 文件通常位于以下路径:

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux/macOS: /etc/hosts
  1. 本地环境的多域名测试

在开发多域名应用时,尤其是跨域场景下,hosts 文件可以将不同的域名指向本地 IP 地址。例如,将多个开发环境的域名分别指向本地 127.0.0.1

1127.0.0.1    api.dev.local
2127.0.0.1    frontend.dev.local
3127.0.0.1    backend.dev.local

通过这种配置,开发者可以在本地模拟不同子域名的环境,而不依赖于外部 DNS 服务

  1. 快速切换环境

开发过程中通常涉及开发、测试、预发布等不同环境。可以在 hosts 文件中配置不同环境的域名映射,快速切换环境测试。

1# Dev environment
2192.168.1.101    app.example.com
3# Staging environment
4#192.168.1.102    app.example.com
5# Production environment
6#203.0.113.45    app.example.com

通过注释和取消注释不同的行,切换访问环境,避免频繁修改代码或环境配置。

  1. 注意事项
  • 修改 hosts 文件后通常会立即生效,无需重启系统。
  • 修改文件时需要管理员权限,例如在 Linux/macOS 上用 sudo 编辑。
  • hosts 文件不支持通配符(如 *.example.com)来匹配同一域名下的多个子域名。但可以通过将多个域名写在同一行并指向同一 IP 地址,用空格分割 192.168.1.100 hr.example.com doc.example.com # 测试

ip addr 与 network 掩码区别

  • netmaskifconfig 使用的是传统的子网掩码格式,这种格式通过子网掩码的点分十进制表示来描述 IP 地址的网络部分和主机部分。
  • CIDR 格式ip addr 使用 CIDR 标准,它的后缀数字(如 /20)表示网络位数,等价于 255.255.240.0。这种格式更简洁,已被广泛采用。

转换关系

例如,/20 的 CIDR 格式对应的 netmask255.255.240.0,这是因为前 20 位是 1,其余位是 0:

  • /8 对应 255.0.0.0
  • /16 对应 255.255.0.0
  • /24 对应 255.255.255.0

现代系统和工具逐渐倾向于使用 CIDR 格式来提高效率,因此 ip addr 更加适合自动化和脚本环境,然而理解传统的 netmask 格式仍然有助于兼容性。


iptables 中的防火墙规则链

  • INPUT:控制进入本地系统的流量
  • OUTPUT:控制从本地系统发出的流量
  • FORWARD:控制通过系统的流量

proxy 中各种格式匹配

  1. 精确主机名或 IP 地址
1no_proxy=localhost,127.0.0.1,::1,example.com
  • 表示访问这些地址时,不走代理。
  • example.com 只匹配完全相同的域名,不匹配 sub.example.com。
  1. 顶级域名匹配(前缀点 .)
1no_proxy=.example.com
  • 匹配所有以 .example.com 结尾的子域名(如 api.example.com, www.example.com)。
  • 注意:**不会匹配 **example.com 本身,只匹配子域名。
  1. IP 地址范围(CIDR 格式)
1no_proxy=192.168.0.0/16,10.0.0.0/8
  • 匹配 192.168..、10...* 所有地址;
  • 是否支持 CIDR 取决于具体程序(如 curl 通常支持,wget 不一定)。
  1. IP 范围(起始到终止)
1no_proxy=192.168.1.1-192.168.1.100
  • 匹配从 192.168.1.1 到 192.168.1.100 的 IP。
  • 并非所有工具支持,请根据实际情况测试。
  1. 端口匹配(少数支持)
1no_proxy=127.0.0.1:8000
  • 大多数工具只匹配域名或 IP,标准 no_proxy **不支持端口号匹配,**但有些库(如 Golang 中的 http.ProxyFromEnvironment)允许,不会区分端口。建议避免依赖这一特性。

局域网连接

在 Clash 中启用“允许局域网连接”(Allow LAN)功能,可以使同一局域网内的其他设备通过你的设备共享代理服务,实现网络资源的共享与集中管理。该功能在家庭、办公或开发环境中尤为实用。

启用“允许局域网连接”功能后,Clash 会监听来自局域网内其他设备的代理请求,允许它们通过你的设备访问互联网或特定网络资源。

在连接的设备网络中,找到 HTTP 代理 - 配置代理 - 手动

服务器:开了 Clash 的设备 IP

端口:7897

手机开热点也能实现此功能,找到 Shadowrocket - 设置 - 代理 - 代理共享 - 启用共享 - 将此 IP 和 Port 填入连接此手机热点的设备并设置 Proxies - 修改 HTTP 和 HTTPS


外部控制器监听地址

外部控制器监听地址(**external-controller** 是用于为 Clash 内核提供一个 RESTful API 端口,允许通过 HTTP 接口对 Clash 进行动态控制和监控。它的作用可细分为以下几方面:

  1. 动态控制与脚本化
    • 通过 HTTP 请求(如 GET / PUT / PATCH 接口),可以实时切换代理节点、模式(全局/Gateway/规则)、更新配置等,无需重启 Clash 或手动编辑配置文件。
  2. 状态监控与流量查询
    • 可通过 /logs 获取日志、/traffic 查看实时流量,以及 /version/connections 等接口了解运行状态。
  3. 第三方管理界面支持
    • Clash-X、Clash.Meta Dashboard、Clash-verge、ClashWeb 等 GUI,正是通过监听的 external-controller 地址调用接口实现图形配置与展示。
  4. 集成自动化工具
    • 可以通过脚本、cron、系统 webhook 等机制,结合 API 实现策略自动切换、节点健康检测与日志分析,适合进阶用户与企业级场景。

Google Map 地图路线偏差

URL 地址增加:www.google.com/maps?gl=CN