You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下OpenVPN未为tun设备分配IP地址及路由的问题

Ubuntu 20.04下OpenVPN未为tun设备分配IP地址及路由的问题

嘿,我看到你在Ubuntu 20.04上用OpenVPN 2.4.12时遇到了头疼的问题——日志明明显示已经执行了设置tun0 IP和路由的命令,但实际用ifconfig查看时,tun0只有IPv6地址,IPv4配置完全没生效对吧?我来帮你梳理几个可能的排查方向:

先把你提供的环境和信息整理清楚,方便定位问题:

环境信息

  • 操作系统:Ubuntu 20.04
  • OpenVPN版本:2.4.12

你的OpenVPN配置文件

dev tun
proto tcp
remote ...
client
resolv-retry infinite
persist-key
persist-tun
cipher AES-256-CBC
verb 3
key-direction 1
remote-cert-tls server

OpenVPN启动日志(关键片段)

Sun Jun  9 15:09:52 2024 /sbin/ip link set dev tun0 up mtu 1500
Sun Jun  9 15:09:52 2024 /sbin/ip addr add dev tun0 192.168.--.--/25 broadcast 192.168.90.127
Sun Jun  9 15:09:52 2024 /sbin/ip route add 89.108.--.--/32 via 192.168.--.--
Sun Jun  9 15:09:52 2024 /sbin/ip route add 172.10.--.--/24 via 192.168.--.--

实际ifconfig输出(tun0部分)

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet6 fe80::fd92:92cd:bd13:d553  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 2...

接下来是具体的排查和解决建议:

  • 确认是否以root权限运行OpenVPN:修改网络配置(比如设置IP、添加路由)需要root权限,如果你是用普通用户启动的OpenVPN,就算日志显示执行了命令,实际也会因为权限不足而失败。试试用sudo openvpn --config your-config-file.ovpn重新启动,再检查tun0的状态。

  • 检查AppArmor的限制:Ubuntu 20.04默认启用了AppArmor,它可能会阻止OpenVPN执行ip命令修改网络配置。可以临时关闭AppArmor试试:

    sudo systemctl stop apparmor
    sudo systemctl disable apparmor
    

    然后重启OpenVPN,看看IP和路由是否生效。如果生效了,再考虑为OpenVPN调整AppArmor策略,而不是一直关闭它。

  • 增加日志 verbosity 查看详细错误:当前日志是verb 3,信息量不够,改成verb 5后重启OpenVPN,这样能看到更详细的执行过程,比如执行ip命令时有没有抛出权限被拒或者其他错误提示。修改配置文件里的verb 3为verb 5,重新启动后查看完整日志。

  • 排查NetworkManager的干扰:Ubuntu 20.04默认用NetworkManager管理网络,它可能会接管tun设备并覆盖OpenVPN的配置。可以试试禁用NetworkManager对OpenVPN的管理,或者直接用systemd服务来启动OpenVPN:

    1. 先停止NetworkManager(注意:会断开当前网络,确保你能通过其他方式操作机器):
      sudo systemctl stop NetworkManager
      
    2. 然后重新启动OpenVPN,再检查tun0状态。如果生效了,再考虑配置NetworkManager和OpenVPN兼容的方式。
  • 检查ip命令路径是否正确:日志里用的是/sbin/ip,Ubuntu 20.04里这个路径是存在的,但如果你的系统里ip命令在/usr/sbin/ip,可以试试在OpenVPN配置里添加script-security 2和up "/usr/sbin/ip link set dev tun0 up mtu 1500"这类指定路径的命令,不过这个可能性比较低,先优先排查前面的点。


备注:内容来源于stack exchange,提问作者V. Kuznetsov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:47:57