最近在家折腾NAS和软路由,发现很多刚入门的朋友在PVE(Proxmox VE)环境下玩转 All in One 时,经常会被同一个问题卡住:明明配置好了OpenWrt旁路由,但新建的Debian虚拟机死活不走旁路流量,甚至连网都上不去。

其实这大多是网络配置的小细节没对上。今天我手把手教大家如何在PVE里让Debian乖乖听话,通过OpenWrt旁路由上网。不废话,直接上干货。

前置环境确认

开始之前,默认你已经完成了以下步骤:

  1. 在PVE上安装好了OpenWrt虚拟机,作为旁路由运行。
  2. 在PVE上创建好了Debian虚拟机(比如Debian 12或13)。
  3. 关键点:你需要知道你的OpenWrt旁路由的LAN口IP地址(假设是 192.168.1.2),以及你主路由的网关地址(假设是 192.168.1.1)。

PVE网络桥接配置示例

确保Debian虚拟机的网络设备采用桥接模式

第一步:检查PVE网络桥接

很多时候问题出在PVE的虚拟机硬件设置上。请确保Debian虚拟机的网络设备采用的是 桥接模式,并且指向了你物理机的网口桥接(通常是 vmbr0)。

如果是NAT模式,虽然能上网,但会让网络拓扑变得非常复杂,不适合旁路由场景。

第二步:配置Debian的网关

这是最核心的一步。要让流量走旁路由,Debian的默认网关必须指向OpenWrt的IP地址。

进入Debian终端,编辑网络配置文件。新版本的Debian默认使用 netplan 或者是传统的 /etc/network/interfaces

Netplan配置文件示例

Debian Netplan配置文件示例,注意缩进和网关设置

如果是传统 interfaces 方式:

sudo nano /etc/network/interfaces

找到你的网卡配置(通常是 ens18 或者 eth0,具体可以用 ip addr 查看),修改或添加 gateway 参数:

auto ens18
iface ens18 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.2  # 这里填写OpenWrt的LAN口IP

如果是 netplan 方式(Debian 10/11/12 常见):

编辑 /etc/netplan/00-installer-config.yaml

sudo nano /etc/netplan/00-installer-config.yaml

配置如下(注意缩进,yaml对缩进极其敏感):

network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:  # 你的网卡名称
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.2  # OpenWrt旁路由IP
      nameservers:
        addresses: [192.168.1.2, 223.5.5.5]  # DNS首选也指向旁路由

配置完成后,应用更改:

sudo netplan apply

或者如果是传统方式,重启网络服务:

sudo systemctl restart networking

第三步:配置DNS

网关改对了,如果DNS还指向运营商或者主路由,可能会导致解析速度慢,或者某些分流规则失效。

建议直接将DNS指向旁路由OpenWrt。OpenWrty通常会接驳如上游DNS、加密DNS等服务。

编辑 /etc/resolv.conf

sudo nano /etc/resolv.conf

修改为:

nameserver 192.168.1.2
nameserver 223.5.5.5

注意:在某些使用resolvconf管理的系统中,直接修改resolv.conf可能会在重启后失效。建议在第二步的netplan配置中直接写入 nameservers 字段,或者修改 /etc/systemd/resolved.conf

第四步:验证与常见坑位排查

配置完上面几步,理论上已经通了。怎么验证?

  1. 查看路由表:输入 ip route,第一行的 default via 应该是你的OpenWrt IP(192.168.1.2)。
   $ ip route
   default via 192.168.1.2 dev ens18
   192.168.1.0/24 dev ens18 proto kernel scope link src 192.168.1.100
  1. 测试连通性ping baidu.comping google.com。能通且解析的IP是经过旁路由后的IP,说明成功。

如果还是不行,重点检查以下几点:

  • OpenWrt自身的设置:确保OpenWrt已经开启了“允许作为网关”或者没有开启防蹭网策略。某些固件默认只允许特定MAC地址通过网关。
  • IP冲突:确保Debian的IP没有和局域网内其他设备冲突。
  • 防火墙:Debian自带的防火墙(UFW/iptables)有没有拦着?如果开启了UFW,记得允许相关端口:
    sudo ufw allow out
    

c sudo ufw allow in on ens18 ```

  • 网关不可达:试着在Debian里 ping 192.168.1.2,如果旁路由都ping不通,那肯定是二层网络不通,检查虚拟网络交换机的设置。

进阶:让OpenWrt旁路由自动接管

如果你不想每装一个新系统都手动配一遍网关,可以在你的“主路由”上(也就是连接光猫的那个路由器)做DHCP设置。将DHCP服务的“网关”和“DNS”选项都分配成OpenWrt的IP。

这样,只要你的PVE里的虚拟机是DHCP自动获取IP的,它们就会自动获得旁路由的网关地址,实现“无痛透明代理”。但对于Debian这种通常用作服务器端的系统,我更推荐静态IP配置,这样更稳定,便于管理。

总结

网上很多教程之所以失效,大多是因为Debian版本不同、网络管理工具(netplan vs ifupdown)不同导致的配置文件路径和语法差异。只要你抓住了“网关指向旁路由IP”和“DNS指向旁路由IP”这两个核心灵魂,不管黑猫白猫,能上网就是好猫。

希望这篇教程能帮大家省去瞎折腾的时间,如果有遇到其他奇奇怪怪的报错,欢迎在评论区留言,我们一起分析分析!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭