hwdsl2 / docker-ipsec-vpn-server

Docker image to run an IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
https://hub.docker.com/r/hwdsl2/ipsec-vpn-server
Other
6.37k stars 1.38k forks source link

关于静态IP所需的额外账户密码添加无效的问题 #350

Closed mtazrael closed 1 year ago

mtazrael commented 1 year ago

任务列表

问题描述 使用清楚简明的语言描述这个 bug。 您好,首先非常感谢您提供的这个docker镜像,我使用的是debian的镜像版本。在实际使用中我发现例子中的VPN_ADDL_USERS=user1 user2,无效

重现步骤 重现该 bug 的步骤:

  1. 在env文件内加入VPN_ADDL_USERS=user1 user2 ,VPN_ADDL_PASSWORDS=pass1 pass2
  2. 重启DOCKER docker restart ipsec-vpn-server
  3. 进入容器 docker exec -it ipsec-vpn-server env TERM=xterm bash -l
  4. cat /etc/ppp/chap-secrets
  5. VPN_ADDL_USERS里面的账号均未添加到chap-secrets
  6. 额外账户无法登录

期待的正确结果 简要地描述你期望的正确结果。

日志 启用日志,检查 VPN 状态,并且添加错误日志以帮助解释该问题(如果适用)。

服务器信息(请填写以下信息)

客户端信息(请填写以下信息)

其它信息 由于额外账户一直未能如愿的添加到chap-secrets内,我便进入run.sh脚本,使用echo输出了原始变量值,发现VPN_ADDL_USERS、VPN_ADDL_PASSWORDS、VPN_ADDL_IP_ADDRS均显示空白,而其余变量字符串可以正常显示。我怀疑是不是因为分割字符为Space的问题,于是我将space换成了',',再次echo,能够正常输出字符串了,随后我将脚本内涉及到VPN_ADDL_X 相关的cut部分的space全部换成了',',重新启动容器后,chap-secrets内正常添加了额外的账户、密码以及分配的静态IP,至此额外账号添加成功。

before:使用space VPN_ADDL_USERS=user1 user2 VPN_ADDL_PASSWORDS=pass1 pass2 echo printf 'vpn_addl_users' "$VPN_ADDL_USERS" echo printf 'vpn_addl_passwords' "$VPN_ADDL_PASSWORDS" 输出 vpn_addl_users vpn_addl_passwords

after:使用逗号 VPN_ADDL_USERS=user1,user2 VPN_ADDL_PASSWORDS=pass1,pass2 echo printf 'vpn_addl_users' "$VPN_ADDL_USERS" echo printf 'vpn_addl_passwords' "$VPN_ADDL_PASSWORDS" 输出 vpn_addl_users user1,user2 vpn_addl_passwords pass1,pass2

hwdsl2 commented 1 year ago

@mtazrael 你好!首先感谢你的反馈。关于你所说的额外账户添加无效的问题:我测试了该用例,没有发现问题。在修改 env 文件(比如添加额外账户)之后,必须重新创建 Docker 容器才能生效,而不是重新启动 Docker 容器。要重新创建容器,首先在纸上记下你所有的 VPN 登录信息。然后删除 Docker 容器:docker rm -f ipsec-vpn-server。最后按照 如何使用本镜像 的说明来重新创建它。

作为 --env-file 选项的替代方案,高级用户可以 绑定挂载 env 文件。该方法的好处是你在更新 env 文件之后可以重启 Docker 容器以生效,而不需要重新创建它。