【问题标题】:Use openvpn client on a docker container在 docker 容器上使用 openvpn 客户端
【发布时间】:2023-01-14 19:25:11
【问题描述】:

我正在尝试制作一个使用 OpenVPN 连接到我的私人互联网访问 VPN 并从 Web 服务器下载一些数据的 docker 容器,但是当我尝试连接到 PIA 时出现错误:

2022-12-07 12:08:03 [oslo403] Peer Connection Initiated with [AF_INET]**.***.***.***:1198
2022-12-07 12:08:03 sitnl_send: rtnl: generic error (-101): Network unreachable
2022-12-07 12:08:03 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
2022-12-07 12:08:03 Exiting due to fatal error

我试图手动创建一个 /dev/net/tun 设备:

RUN mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 600 /dev/net/tun

但后来我得到这个错误:

2022-12-07 12:12:35 sitnl_send: rtnl: generic error (-101): Network unreachable
2022-12-07 12:12:35 ERROR: Cannot ioctl TUNSETIFF tun: Operation not permitted (errno=1)
2022-12-07 12:12:35 Exiting due to fatal error

一切都以 root 身份运行,所以这不是问题。

这是我完整的 dockerfile:

FROM alpine

RUN apk update && apk add bash openvpn wget unzip

# This section downloads PIA's configuration and adds login information to it. 
RUN mkdir /vpn
RUN echo "********" > /vpn/login.txt
RUN echo "********" >> /vpn/login.txt
RUN wget https://www.privateinternetaccess.com/openvpn/openvpn.zip
RUN unzip openvpn.zip -d /vpn
RUN sed -i "s/auth-user-pass/auth-user-pass \/vpn\/login.txt/" /vpn/*

# Here is my attempted fix for the problem
RUN mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 600 /dev/net/tun

ENTRYPOINT [ "openvpn", "/vpn/norway.ovpn" ]

我希望得到一些帮助。我真正想要的只是一个示例,例如,您将 openvpn 与 docker 结合使用 curl api.ipify.org

【问题讨论】:

    标签: linux docker vpn alpine-linux openvpn


    【解决方案1】:

    您需要将此参数添加到 docker 命令:

    --cap-add=NET_ADMIN 
    

    OpenVPN 完成的网络更改需要 NET_ADMIN 功能提供的额外权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2019-11-11
      • 2016-03-04
      • 2015-03-29
      • 2019-09-15
      相关资源
      最近更新 更多