pptpd vpn手动分配IP部分用户无法上网

凉白开 Linux332,7173字数 1581阅读5分16秒阅读模式

问题

公司vpn用户全部手动分配了指定的IP地址,近期总有人抱怨vpn有时候连不上服务器或者说不能上网, 各种路由表,各种电脑重启都没有效果,但是隔一段时间又好了。正巧又一位兄弟出现这个故障,告知不小心禁用了本地连接,重新启用本地连接,重新拨vpn就上不了网了,我重启pptpd问题便解决了。尤其看出了事情的原因。文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

问题排查
初步判定用户网络出现故障之后,vpn服务器的连接未断开,网络状态保持ESTABLISHED. 用户登录vpn之后,又分配了相同的IP地址,导致用户上不了网。以前重启pptpd都没注意到它有个警告,警告如下:
Warning: a pptpd restart does not terminate existing
connections, so new connections may be assigned the same IP
address and cause unexpected results.  Use restart-kill to
destroy existing connections during a restart文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

意思就是没有杀掉正在连接的用户,新进来的用户可能会分配到相同的IP地址,使用restart-kill可以将正在连接的用户杀死。该死的,一直没留意这个问题。先看下我的chap配置,最后看看解决方法文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

手动分配VPN IP地址
如下是我手动分配IP地址的配置文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

# cat /etc/ppp/chap-secrets
ttlsacom1    pptpd     89fb894         172.16.0.100
ttlsacom2    pptpd     4b54c92        172.16.0.101
ttlsacom3    pptpd     bb7e234        172.16.0.102

ttlsacom1,ttlsacom2,ttlsacom3中任何一个用户网络出现点故障便会出现这种问题,特别是使用无线网络的用户(公司的wifi不稳定)文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

解决VPN单用户指定IP问题
创建auth-up文件文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

touch /etc/ppp/auth-up
chmod a+x /etc/ppp/auth-up

auth-up脚本内容如下文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

#!/bin/sh
# get the username/ppp line number from the parameters
  REALDEVICE=$1
  USER=$2
# create the directory to keep pid files per user
  mkdir -p /var/run/pptpd-users
# if there is a session already for this user, terminate the old one
  if [ -f /var/run/pptpd-users/$USER ]; then
    kill -HUP `cat /var/run/pptpd-users/$USER`
  fi
# copy the pid file of current user to /var/run/pptpd-users
  cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER

流程如下:
1、用户登录判断是否有/var/run/pptpd-users/用户名的文件
2、如果有平滑重启这个vpn用户进程,如果没有创建这个文件,文本里面有用户进程ID
3、老的连接被踢掉,新的连接可以使用文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

备注:这种模式下,一个账号只允许一个用户使用。文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

重启pptpd文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

service pptpd restart-kill
service pptpd restart

最后文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

pptp默认情况使用chap来认证,一个账号可以多个用户登录,这样不便于流量控制、网速限制等等,也可以使用auth-up这个脚本来限制一个账号只允许一个用户来登录.文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

转载请注明出处:https://www.ttlsa.com/html/3234.html文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/ 文章源自运维生存时间-https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 29/09/2013 11:00:44
  • 转载请务必保留本文链接:https://www.ttlsa.com/linux/pptpd-vpn-can-not-online/
  • pptp
  • vpn分配IP无法上网
  • vpn单用户
  • vpn指定IP地址
  • vpn无法上网
评论  3  访客  2
    • […] pptpd vpn手动分配IP部分用户无法上网 […]

      • 小周
        小周 1

        我现在也是出现这个问题了,我的是用户连接pptpd的时候,特别慢,重启完服务还是慢

      评论已关闭!