У меня настроен рабочий сервер pptpd + pppd, к которому в настоящее время успешно подключаются два клиента Windows 7. Однако, когда я пытаюсь подключить клиент linux, я получаю действительно странный обмен, который заканчивается словами «одноранговый узел отказался пройти аутентификацию» как на стороне сервера, так и на стороне клиента.
Это журнал с сервера:
pppd[8205]: using channel 51
pppd[8205]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfRej id=0x1 <auth chap MS-v2>]
pppd[8205]: sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[8205]: sent [LCP ConfNak id=0x1 <auth pap>]
pppd[8205]: rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[8205]: sent [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[8205]: sent [LCP EchoReq id=0x0 magic=0x20b0750f]
pppd[8205]: sent [LCP TermReq id=0x3 "peer refused to authenticate"]
pppd[8205]: rcvd [LCP EchoReq id=0x0 magic=0x23d6bed3]
pppd[8205]: rcvd [LCP TermReq id=0x3 "peer refused to authenticate"]
pppd[8205]: sent [LCP TermAck id=0x3]
pppd[8205]: rcvd [LCP TermAck id=0x3]
pptpd[8204]: CTRL: Reaping child PPP[8205]
А это лог от клиента:
pppd[12077]: pppd options in effect:
pppd[12077]: debug # (from command line)
pppd[12077]: holdoff 10 # (from /etc/ppp/peers/home1)
pppd[12077]: persist # (from /etc/ppp/peers/home1)
pppd[12077]: dump # (from command line)
pppd[12077]: require-mschap-v2 # (from /etc/ppp/peers/home1)
pppd[12077]: refuse-pap # (from /etc/ppp/peers/home1)
pppd[12077]: refuse-mschap # (from /etc/ppp/peers/home1)
pppd[12077]: name <redacted> # (from /etc/ppp/peers/home1)
pppd[12077]: remotename <redacted> # (from /etc/ppp/peers/home1)
pppd[12077]: # (from /etc/ppp/options)
pppd[12077]: pty pptp <redacted> --nolaunchpppd # (from /etc/ppp/peers/home1)
pppd[12077]: crtscts # (from /etc/ppp/options)
pppd[12077]: # (from /etc/ppp/options)
pppd[12077]: asyncmap 0 # (from /etc/ppp/options)
pppd[12077]: lcp-echo-failure 4 # (from /etc/ppp/options)
pppd[12077]: lcp-echo-interval 30 # (from /etc/ppp/options)
pppd[12077]: hide-password # (from /etc/ppp/options)
pppd[12077]: proxyarp # (from /etc/ppp/options)
pppd[12077]: nobsdcomp # (from /etc/ppp/peers/home1)
pppd[12077]: nodeflate # (from /etc/ppp/peers/home1)
pppd[12077]: nomppe # (from /etc/ppp/peers/home1)
pppd[12077]: noipx # (from /etc/ppp/options)
pppd[12078]: pppd 2.4.5 started by <redacted>, uid 0
pppd[12078]: using channel 12
pppd[12078]: Using interface ppp0
pppd[12078]: Connect: ppp0 <--> /dev/pts/14
pptp[12079]: anon log[main:pptp.c:314]: The synchronous pptp option is NOT activated
pptp[12086]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
pptp[12086]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
pptp[12086]: anon log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
pppd[12078]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x23d6bed3> <pcomp> <accomp>]
pptp[12086]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
pptp[12086]: anon log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
pptp[12086]: anon log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 1920).
pppd[12078]: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[12078]: No auth is possible
pppd[12078]: sent [LCP ConfRej id=0x1 <auth chap MS-v2>]
pppd[12078]: rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[12078]: sent [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[12078]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[12078]: rcvd [LCP ConfNak id=0x1 <auth pap>]
pppd[12078]: sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[12078]: rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[12078]: sent [LCP EchoReq id=0x0 magic=0x23d6bed3]
pppd[12078]: peer refused to authenticate: terminating link
pppd[12078]: sent [LCP TermReq id=0x3 "peer refused to authenticate"]
pppd[12078]: rcvd [LCP EchoReq id=0x0 magic=0x20b0750f]
pppd[12078]: rcvd [LCP TermReq id=0x3 "peer refused to authenticate"]
pppd[12078]: sent [LCP TermAck id=0x3]
pppd[12078]: rcvd [LCP TermAck id=0x3]
pppd[12078]: Connection terminated.
Меня очень озадачили эти строчки (из журнала сервера):
pppd[8205]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfRej id=0x1 <auth chap MS-v2>]
pppd[8205]: sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[8205]: sent [LCP ConfNak id=0x1 <auth pap>]
pppd[8205]: rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
Если я правильно читаю, сервер запрашивает аутентификацию mschap-v2, тогда клиент отклоняет это (почему?); после этого клиент запрашивает аутентификацию mschap-v2, затем сервер отклоняет pap (wtf?), что приводит к тому, что оба одноранговых узла не устанавливают аутентификацию и соединение не удается.
Может кто-нибудь пролить свет на то, что здесь происходит?
Догадаться.
Проблема заключалась в предоставлении параметров «auth» и «require-mschap-v2» для pppd на стороне клиента. Очевидно, только серверная часть должна быть настроена для запроса аутентификации с клиентом, настроенным на то, чтобы не запрашивать никакой аутентификации. Произошло то, что клиент попросил сервер аутентифицировать себя, но это не удалось.
Надеюсь, мой опыт поможет другим приехать сюда.
Самый распространенный источник проблемы, который я обнаружил, когда я получил такие попытки общения:
pppd[8205]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfRej id=0x1 <auth chap MS-v2>]
pppd[8205]: sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x20b0750f> <pcomp> <accomp>]
pppd[8205]: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0x23d6bed3> <pcomp> <accomp>]
pppd[8205]: sent [LCP ConfNak id=0x1 <auth pap>]
pppd[8205]: rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x23d6bed3> <pcomp> <accomp>]
... пакеты GRE не приходят к месту назначения правильно.
Обратите внимание sent
и rcvd
строчки в журнале: связь какая-то есть, но не хватает.
Многие роутеры не позволяют Пакеты GRE (обязательно для PPTP), чтобы перемещаться по ним, но у большинства из них есть возможность включить / отключить его.
В моем случае (кабельный модем NetGear Genie CG3100D) вы можете решить эту проблему, проверив:
Advanced --> Advanced Configuration --> Services -> PPTP PassThrough