pptpd vpn服务端配置中常见的故障和排除方法

2018年03月6日

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/3022.html http://www.myzhenai.com/thread-18083-1-1.html
前些天在给一个网友安装配置pptpd vpn的时候遇到了一些很奇怪的问题,不过现在都已经解决了,所以现在把这些问题发布出来以便以后遇到的网友们参考。出现故障的原因有很多,我这里只是解述我所遇到的问题和解决方法,我依次排除了以下原因。
1:服务器是否兼容pptpd的问题,
2:ISP端口过滤的原因
3:服务端安装配置的原因
4:服务器时间和服务器时间的原因
5:防火墙和iptables的配置的原因
但是我遇到的问题是有三个原因,所以以下我也讲一下我遇到的问题。
1:服务器时间与本地时间不一致,我通过date -s xx:xx:xx修改了服务器时间,并修改了服务器时区。
2:我在安装的时候是使用我自己写的脚本一键安装的,但是网友的Centos7服务器里默认安装了Epel源,造成脚本自动安装了两个不同版本的pptpd软件包,其中还有一个pptpd-sysvinit和pptp-setup。我将这几个安装包全部卸载后重新进行了安装。
3:最重要的一点是我的iptables规则有一定的问题,意识到这一点后我修改了iptables防火墙规则。
最后问题解决了,客户端可以正常连接到服务端了,然后本地客户端的一些参数做好配置后,可以正常打开网页了。客户端的配置可以参考options.pptpd里的内容进行配置。
安装步骤:

yum install -y gcc gcc-c++ dkms lrzsz lzo iptables ppp ppp-devel pptp pptpd

pptpd的三个配置文件

vi /etc/pptpd.conf
vi /etc/ppp/options.pptpd
vi /etc/ppp/chap-secrets

/etc/pptpd.conf内容

###############################################################################
# $Id: pptpd.conf,v 1.11 2011/05/19 00:02:50 quozl Exp $
#
# Sample Poptop configuration file /etc/pptpd.conf
#
# Changes are effective when pptpd is restarted.
###############################################################################

# TAG: ppp
#        Path to the pppd program, default '/usr/sbin/pppd' on Linux
#
#ppp /usr/sbin/pppd

# TAG: option
#        Specifies the location of the PPP options file.
#        By default PPP looks in '/etc/ppp/options'
#
option /etc/ppp/options.pptpd

# TAG: debug
#        Turns on (more) debugging to syslog
#
#debug

# TAG: stimeout
#        Specifies timeout (in seconds) on starting ctrl connection
#
# stimeout 10

# TAG: noipparam
#       Suppress the passing of the client's IP address to PPP, which is
#       done by default otherwise.
#
#noipparam

# TAG: logwtmp
#        Use wtmp(5) to record client connections and disconnections.
#
#logwtmp

# TAG: vrf <vrfname>
#        Switches PPTP & GRE sockets to the specified VRF, which must exist
#        Only available if VRF support was compiled into pptpd.
#
#vrf test

# TAG: bcrelay <if>
#        Turns on broadcast relay to clients from interface </if><if>
#
#bcrelay eth1

# TAG: delegate
#        Delegates the allocation of client IP addresses to pppd.
#
#       Without this option, which is the default, pptpd manages the list of
#       IP addresses for clients and passes the next free address to pppd.
#       With this option, pptpd does not pass an address, and so pppd may use
#       radius or chap-secrets to allocate an address.
#
#delegate

# TAG: connections
#       Limits the number of client connections that may be accepted.
#
#       If pptpd is allocating IP addresses (e.g. delegate is not
#       used) then the number of connections is also limited by the
#       remoteip option.  The default is 100.
#connections 100

# TAG: localip
# TAG: remoteip
#        Specifies the local and remote IP address ranges.
#
#        These options are ignored if delegate option is set.
#
#       Any addresses work as long as the local machine takes care of the
#       routing.  But if you want to use MS-Windows networking, you should
#       use IP addresses out of the LAN address space and use the proxyarp
#       option in the pppd options file, or run bcrelay.
#
#        You can specify single IP addresses seperated by commas or you can
#        specify ranges, or both. For example:
#
#                192.168.0.234,192.168.0.245-249,192.168.0.254
#
#        IMPORTANT RESTRICTIONS:
#
#        1. No spaces are permitted between commas or within addresses.
#
#        2. If you give more IP addresses than the value of connections,
#           it will start at the beginning of the list and go until it
#           gets connections IPs.  Others will be ignored.
#
#        3. No shortcuts in ranges! ie. 234-8 does not mean 234 to 238,
#           you must type 234-238 if you mean this.
#
#        4. If you give a single localIP, that's ok - all local IPs will
#           be set to the given one. You MUST still give at least one remote
#           IP for each simultaneous client.
#
# (Recommended)
localip 192.168.0.1
remoteip 192.168.0.105-238,192.168.0.245
# or
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245
</if></vrfname>

/etc/ppp/options.pptpd内容

###############################################################################
# $Id: options.pptpd,v 1.11 2005/12/29 01:21:09 quozl Exp $
#
# Sample Poptop PPP options file /etc/ppp/options.pptpd
# Options used by PPP when a connection arrives from a client.
# This file is pointed to by /etc/pptpd.conf option keyword.
# Changes are effective on the next connection.  See "man pppd".
#
# You are expected to change this file to suit your system.  As
# packaged, it requires PPP 2.4.2 and the kernel MPPE module.
###############################################################################


# Authentication

# Name of the local system for authentication purposes
# (must match the second field in /etc/ppp/chap-secrets entries)
name pptpd

# Strip the domain prefix from the username before authentication.
# (applies if you use pppd with chapms-strip-domain patch)
#chapms-strip-domain


# Encryption
# (There have been multiple versions of PPP with encryption support,
# choose with of the following sections you will use.)


# BSD licensed ppp-2.4.2 upstream with MPPE only, kernel module ppp_mppe.o
# {{{
refuse-pap
refuse-chap
refuse-mschap
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
require-mppe-128
# }}}


# OpenSSL licensed ppp-2.4.1 fork with MPPE only, kernel module mppe.o
# {{{
#-chap
#-chapms
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
#+chapms-v2
# Require MPPE encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
#mppe-40        # enable either 40-bit or 128-bit, not both
#mppe-128
#mppe-stateless
# }}}


# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients.  The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
ms-dns 8.8.8.8
ms-dns 8.8.4.4

# If pppd is acting as a server for Microsoft Windows or "Samba"
# clients, this option allows pppd to supply one or two WINS (Windows
# Internet Name Services) server addresses to the clients.  The first
# instance of this option specifies the primary WINS address; the
# second instance (if given) specifies the secondary WINS address.
#ms-wins 10.0.0.3
#ms-wins 10.0.0.4

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.  This will have the effect of making the peer appear to other
# systems to be on the local ethernet.
# (you do not need this if your PPTP server is responsible for routing
# packets to the clients -- James Cameron)
#proxyarp

# Normally pptpd passes the IP address to pppd, but if pptpd has been
# given the delegate option in pptpd.conf or the --delegate command line
# option, then pppd will use chap-secrets or radius to allocate the
# client IP address.  The default local IP address used at the server
# end is often the same as the address of the server.  To override this,
# specify the local IP address here.
# (you must not use this unless you have used the delegate option)
#10.8.0.100


# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
#debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
#dump


# Miscellaneous

# Create a UUCP-style lock file for the pseudo-tty to ensure exclusive
# access.
lock

# Disable BSD-Compress compression
nobsdcomp

# Disable Van Jacobson compression
# (needed on some networks with Windows 9x/ME/XP clients, see posting to
# poptop-server on 14th April 2005 by Pawel Pokrywka and followups,
# http://marc.theaimsgroup.com/?t=111343175400006&r=1&w=2 )
novj
novjccomp

# turn off logging to stderr, since this may be redirected to pptpd,
# which may trigger a loopback
nologfd

# put plugins here
# (putting them higher up may cause them to sent messages to the pty)

/etc/sysconfig/iptables内容

-A INPUT -p tcp -m tcp --dport 7194 -j ACCEPT
-A INPUT -p udp -m udp --dport 7194 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p udp -m udp --dport 1723 -j ACCEPT

-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 7194 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 7194 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 1723 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 1723 -m conntrack --ctstate NEW -j ACCEPT

-A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 10.8.0.20/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source 100.100.100.100
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source 100.100.100.100

-A INUPUT -p gre -j ACCEPT
-A OUTPUT -p gre -j ACCEPT

服务端日志:

Mar  6 02:05:17 vultr iptables.init: iptables: Loading additional modules: ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_pptp [  OK  ]
Mar  6 02:05:17 vultr pptpd[1528]: CTRL: Client 140.240.18.247 control connection finished
Mar  6 02:05:17 vultr pptpd[1817]: MGR: connections limit (100) reached, extra IP addresses ignored
Mar  6 02:05:17 vultr pptpd[1817]: MGR: Manager process started
Mar  6 02:05:17 vultr pptpd[1817]: MGR: Maximum of 100 connections available
Mar  6 02:05:23 vultr pptpd[1822]: CTRL: Client 140.240.18.247 control connection started
Mar  6 02:05:23 vultr pptpd[1822]: CTRL: Starting call (launching pppd, opening GRE)
Mar  6 02:05:23 vultr pppd[1823]: Plugin /usr/lib64/pptpd/pptpd-logwtmp.so loaded.
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: getpeername() failed
Mar  6 02:06:50 vultr pptpd[1848]: getpeername: Transport endpoint is not connected
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Asked to free call when no call open, not handled well
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Could not free Call ID [admin shutdown]!
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Couldn't write packet to client.
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Failed to set client socket non-blocking
Mar  6 02:06:50 vultr pptpd[1848]: fcntl: Bad file descriptor
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Asked to free call when no call open, not handled well
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Could not free Call ID [admin shutdown]!
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Couldn't write packet to client.
Mar  6 02:06:50 vultr pptpd[1848]: CTRL: Client 45.66.88.188 control connection started
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: getpeername() failed
Mar  6 02:06:51 vultr pptpd[1851]: getpeername: Transport endpoint is not connected
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Asked to free call when no call open, not handled well
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Could not free Call ID [admin shutdown]!
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Couldn't write packet to client.
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Failed to set client socket non-blocking
Mar  6 02:06:51 vultr pptpd[1851]: fcntl: Bad file descriptor
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Asked to free call when no call open, not handled well
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Could not free Call ID [admin shutdown]!
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Couldn't write packet to client.
Mar  6 02:06:51 vultr pptpd[1851]: CTRL: Client 45.66.88.188 control connection started

客户端日志:

Mar  6 02:28:56 localhost NetworkManager[2102]: <info> Starting VPN service 'org.freedesktop.NetworkManager.pptp'...
Mar  6 02:28:56 localhost NetworkManager[2102]: </info><info> VPN service 'org.freedesktop.NetworkManager.pptp' started (org.freedesktop.NetworkManager.pptp), PID 7219
Mar  6 02:28:56 localhost NetworkManager[2102]: </info><info> VPN service 'org.freedesktop.NetworkManager.pptp' appeared, activating connections
Mar  6 02:28:56 localhost pppd[7222]: Plugin /usr/lib/pppd/2.4.5/nm-pptp-pppd-plugin.so loaded.
Mar  6 02:28:56 localhost pptp[7224]: nm-pptp-service-7219 log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Mar  6 02:28:56 localhost pptp[7234]: nm-pptp-service-7219 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Mar  6 02:44:00 localhost NetworkManager[2102]: </info><info> Starting VPN service 'org.freedesktop.NetworkManager.pptp'...
Mar  6 02:44:00 localhost NetworkManager[2102]: </info><info> VPN service 'org.freedesktop.NetworkManager.pptp' started (org.freedesktop.NetworkManager.pptp), PID 7392
Mar  6 02:44:00 localhost NetworkManager[2102]: </info><info> VPN service 'org.freedesktop.NetworkManager.pptp' appeared, activating connections
Mar  6 02:44:01 localhost pppd[7395]: Plugin /usr/lib/pppd/2.4.5/nm-pptp-pppd-plugin.so loaded.
Mar  6 02:44:01 localhost pptp[7397]: nm-pptp-service-7392 log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Mar  6 02:44:01 localhost pptp[7407]: nm-pptp-service-7392 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Mar  6 02:44:01 localhost pptp[7407]: nm-pptp-service-7392 log[pptp_read_some:pptp_ctrl.c:551]: read error: Connection reset by peer
Mar  6 02:44:01 localhost pptp[7407]: nm-pptp-service-7392 log[pptp_read_some:pptp_ctrl.c:544]: read returned zero, peer has closed
Mar  6 02:44:02 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Mar  6 02:44:02 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
Mar  6 02:44:02 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
Mar  6 02:44:03 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Mar  6 02:44:03 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
Mar  6 02:44:03 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 256).
Mar  6 02:44:04 localhost pptp[7411]: nm-pptp-service-7392 log[pptp_read_some:pptp_ctrl.c:544]: read returned zero, peer has closed
Mar  6 02:44:04 localhost pptp[7411]: nm-pptp-service-7392 log[callmgr_main:pptp_callmgr.c:258]: Closing connection (shutdown)
Mar  6 02:44:04 localhost pptp[7411]: nm-pptp-service-7392 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 12 'Call-Clear-Request'
Mar  6 02:44:04 localhost pptp[7411]: nm-pptp-service-7392 log[pptp_read_some:pptp_ctrl.c:544]: read returned zero, peer has closed
Mar  6 02:44:04 localhost pptp[7411]: nm-pptp-service-7392 log[call_callback:pptp_callmgr.c:79]: Closing connection (call state)
Mar  6 02:44:13 localhost pppd[7420]: Plugin /usr/lib/pppd/2.4.5/nm-pptp-pppd-plugin.so loaded.
Mar  6 02:44:13 localhost pptp[7421]: nm-pptp-service-7392 log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Mar  6 02:44:19 localhost dbus-daemon: [system] Rejected send message, 2 matched rules; type="error", sender=":1.180" (uid=0 pid=7392 comm="/usr/libexec/nm-pptp-service) interface="(unset)" member="(unset)" error name="org.freedesktop.DBus.Error.UnknownMethod" requested_reply=0 destination=":1.182" (uid=0 pid=7420 comm="/usr/sbin/pppd))
Mar  6 02:44:19 localhost dbus-daemon: [system] Rejected send message, 2 matched rules; type="error", sender=":1.180" (uid=0 pid=7392 comm="/usr/libexec/nm-pptp-service) interface="(unset)" member="(unset)" error name="org.freedesktop.DBus.Error.UnknownMethod" requested_reply=0 destination=":1.182" (uid=0 pid=7420 comm="/usr/sbin/pppd))
Mar  6 02:44:19 localhost pppd[7420]: Child process /usr/sbin/pptp euro217.vpnbook.com --nolaunchpppd --logstring nm-pptp-service-7392 (pid 7421) terminated with signal 15
Mar  6 02:45:16 localhost pptp[7428]: nm-pptp-service-7392 warn[open_inetsock:pptp_callmgr.c:329]: connect: Connection timed out
Mar  6 02:45:16 localhost pptp[7428]: nm-pptp-service-7392 fatal[callmgr_main:pptp_callmgr.c:127]: Could not open control connection to 31.13.97.245
</info>



sicnature ---------------------------------------------------------------------
Your current IP address is: 54.198.134.127
Your IP address location: 美国
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 海南仙岛海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://www.myzhenai.com.cn/post/3022.html

1 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注