lovekernel

lovekernel

V2EX 第 428870 号会员,加入于 2019-07-12 14:04:52 +08:00
lovekernel 最近回复了
啊我是考虑到这个点子不是我想出来的,怕被以为盗窃知识来装逼,所以考虑了几分钟还是给出了思路源出处。ban 了确实可惜了,确实因为粗心大意没看站规,只能兄弟们再见了。
@w568w
@soukiya
我先给你梳理一下你想做的事:

* **Clash (mihomo)** 在 Windows 下开启了 `Meta` 这个虚拟网卡( TUN ),但 VMware Workstation 在设置虚拟机网络时,并不会把它当作可选的“桥接接口”,所以虚拟机无法直接“桥接”到 Meta 。
* 你想要的目标:**虚拟机上不装 Clash**,而是 **通过宿主机的 Clash Meta 接口上网**,虚拟机所有流量经过 Clash ,能穿透到外部网络。

核心思路:

1. **虚拟机仍用桥接模式**(跟宿主机在同一网段),获取一个正常 IP (假设 `192.168.1.200`)。
2. **在 Windows 上用路由表,把虚拟机的所有流量转发到 Meta 接口**( Clash 的虚拟网卡)。
3. **Clash 做出口 NAT**,虚拟机的所有请求就能出去了。

---

## 步骤

假设你的宿主机网络如下:

* 宿主机物理网卡(正常的网络) IP:`192.168.1.100`
* Clash Meta 虚拟网卡 IP:`198.18.0.1`( Clash 默认给的 TUN IP )
* 虚拟机 IP:`192.168.1.200`

以下步骤均在 **宿主机( Win11 )** 上操作。

---

### 1. 确认 Clash TUN 网卡

在命令行里查看 Clash 的虚拟接口名称:

```powershell
Get-NetAdapter
```

找到 `Meta` 或者类似名称的网卡,记下 `InterfaceAlias`(假设是 `Clash-Meta`),它的 IP 通常是 `198.18.0.1/16`。

---

### 2. 桥接模式下启动虚拟机

在 VMware Workstation:

* 设置虚拟机的网络为 **Bridged (桥接)**。
* 启动虚拟机,执行 `ipconfig` 或 `ifconfig`(取决于系统),假设虚拟机 IP 是 `192.168.1.200`。

---

### 3. 添加路由,让虚拟机流量走 Clash

在宿主机上打开管理员 PowerShell ,执行以下命令:

```powershell
# 1. 删除已有到虚拟机的路由(避免冲突)
route delete 192.168.1.200

# 2. 添加一条静态路由,把虚拟机的所有流量导入 Clash 网卡
# 注意:这里 0.0.0.0/0 是全流量
route add 192.168.1.200 mask 255.255.255.255 198.18.0.1 metric 5 if <Clash 接口索引>
```

其中:

* `198.18.0.1` 是 Clash Meta 虚拟网卡的 IP 。
* `<Clash 接口索引>` 需要用 `route print` 查看 Clash 网卡的接口编号,比如 `17`。

查看接口编号:

```powershell
route print
```

找到 `Clash-Meta` 对应的编号,替换上面命令。

---

### 4. 确保 Clash 允许转发

在 Clash 的配置文件(`config.yaml`)里,开启 TUN 并允许转发,通常这样写:

```yaml
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns-hijack:
- 198.18.0.2:53
```

确保 Clash 有打开 `auto-route` 和 `allow-lan`,这样可以处理来自虚拟机的流量。

---

### 5. 测试

在虚拟机里:

```bash
ping 8.8.8.8
curl ip.sb
```

看看 IP 是否是 Clash 出口的代理 IP 。

---

## 其他两个问题

### **1. 有没有更简单的方法?**

* 不能直接桥接到 Meta ,因为 VMware Workstation 不识别这个 TUN 网卡。
* 可以通过 **ICS (Internet Connection Sharing)** 或 **Windows NAT**,把虚拟机的网段共享给 Clash 网卡,但步骤更复杂,性能更差。
* 上面的 **路由转发** 是最简单稳定的。

---

### **2. 换什么虚拟化平台可以直接识别 Meta 网卡?**

* **Hyper-V** 理论上可以,因为它允许绑定任何 TAP/TUN 虚拟网卡作为外部交换机。
* **Proxmox / ESXi** 在 Linux 下可以直接用 TUN/TAP ,但在 Win11 不行,因为 Windows 驱动对 TUN 支持差。
* 如果迁移到 Linux 做宿主机,可以直接用 `ip tuntap` 把 Clash 的 TUN 和虚拟机网卡桥接,简单很多。

---

### **3. 有没有人做过?**

是的,很多人通过 Clash Meta + VMware 搭桥给虚拟机走代理。
大多数做法就是我上面说的 **桥接 + 静态路由转发**,或者用 **Windows NAT 共享**。

---

我问人工智能的。
Bridged (桥接模式)下(即和 win 系统同一个网段了),虚拟机查询自己 IP ,然后再在 Win 系统上配置路由表,将虚拟机对应的 IP 所有流量导向 Meta 接口就行了。(记得开启 TUN 并允许转发)
9 天前
回复了 ilyyfan 创建的主题 知乎 来了来了,最新 P0 事故,来自知乎
只要没 rm -rf 都是小事
233 天前
回复了 waitMeOY 创建的主题 问与答 关于睡眠问题求指教
@liujavamail 听了 7 年喜马拉雅了。确实很赞。
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2810 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 04:04 · PVG 12:04 · LAX 21:04 · JFK 00:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.