在 docker 中运行 vpnc 时,出现“无法打开“/proc/sys/net/ipv4/route/flush”:只读文件系统”

在 docker 中运行 vpnc 时,出现“无法打开“/proc/sys/net/ipv4/route/flush”:只读文件系统”

我正在尝试Cisco VPN client在 Docker 中运行控制台。我像这样启动容器:

docker run -it -v /srv/vpn/keys/:/root/keys/ --network=host --cap-add=NET_ADMIN  --device=/dev/net/tun -v /dev/net/tun:/dev/net/tun vpn-vpnc-client_img

然后vpnc在 Docker 容器内运行客户端

vpnc-connect /root/keys/vpnc.conf --local-port 0

它产生以下输出:

Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
VPNC started in background (pid: 257)...

vpnc连接并创建正确的路由,因此 VPN 似乎可以正常工作。我担心的是警告消息。根据文档,对于/proc/sys/net/ipv4/route/flush

写入此文件会导致路由缓存刷新。

我不明白这句话。路由缓存没有被刷新是关键吗?

另外,据我了解,我可以发出

echo 1 > /proc/sys/net/ipv4/route/flush

启动容器后手动执行。但如果连接丢失,我会monit在 docker 容器内重新启动。我可以 以某种方式从容器内的主机绑定挂载,并从容器内的 monit 脚本发出命令来刷新路由缓存吗?vpnc/proc/sys/net/ipv4/route/flush

答案1

我是 OpenConnect 的核心开发人员之一,也是vpnc 脚本— 由两个都vpnc 和 OpenConnect 用于路由和 DNS 配置。

该错误信息实际上来自vpnc-script,而不是来自vpnc其本身,并且……

  1. 此错误根本无所谓。它来自ip -4 route flush cache触发 IPv4 路由刷新的命令,这是一个在现代 Linux 内核中不必要的、已弃用的、无操作

    我们保留它只是为了向后兼容,以防某个地方的某个人vpnc在可靠的 Linux 内核上运行 /OpenConnect。

  2. 我们隐藏了以下错误信息:2019 年标准变更vpnc-script

    如果你简单地vpnc-script最新版本,错误就会消失。

答案2

正如评论中提到的那样,没有细粒度的能力与一起使用--add-cap,因此您必须以特权模式运行容器--privileged才能摆脱该警告。

相关内容