我正在尝试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
其本身,并且……
此错误根本无所谓。它来自
ip -4 route flush cache
触发 IPv4 路由刷新的命令,这是一个在现代 Linux 内核中不必要的、已弃用的、无操作。我们保留它只是为了向后兼容,以防某个地方的某个人
vpnc
在可靠的 Linux 内核上运行 /OpenConnect。我们隐藏了以下错误信息:2019 年标准变更
vpnc-script
。如果你简单地
vpnc-script
用最新版本,错误就会消失。
答案2
正如评论中提到的那样,没有细粒度的能力与一起使用--add-cap
,因此您必须以特权模式运行容器--privileged
才能摆脱该警告。