PPP over serial-wifi adapter to Socat with Linux pppd 失败

问题描述

我有一台运行 pppdos 的老式掌上电脑的串口转 wifi 适配器。如果它使用串行转 USB 电缆直接连接到运行 Ubuntu 的 VM,它会连接并建立 PPP 连接并正常工作。

主机/服务器是 Linux Ubuntu VM。 客户端是带有串行到 Wifi 适配器的 DOS,运行 pppdos v6。

当我尝试通过 Wifi 连接时,我无法通过 PPP 使用 Socat 建立连接。我可以验证我已连接到 Wifi,并且套接字正在连接到 linux。

  • 如果我从客户端 telnet 到 Socat 服务器端口,我可以看到数据包的内容
  • 如果我执行 socat -v tcp-l:2323,fork exec:'/bin/cat' 我可以看到来自客户端的数据包的内容
  • 如果我在服务器上运行 Wireshark,我可以看到下面的输出

目前正在使用:

socat -d -d pty,raw,nonblock,echo=0,iexten=0,link=/tmp/ttyVA0 pty,link=/tmp/ttyVB0&

socat -d -d pty,link=/tmp/ttyVA0,rawer,waitslave TCP-L:2323&

pppd /tmp/ttyVA0

服务器 pppd 配置:

debug
19200
connect-delay 5
defaultroute 10.0.10.40:10.0.10.46
lcp-max-configure 16
local
lock
mru 296
mtu 296
noauth
nodetach
passive
proxyarp

socat 输出

2021/04/30 19:42:19 socat[24626] N accepting connection from AF=2 10.0.10.46:23068 on AF=2 10.0.10.40:2323
2021/04/30 19:42:19 socat[24626] N starting data transfer loop with FDs [5,5] and [7,7]

服务器 pppd 输出

May  3 17:47:01 vubuntu pppd[23026]: pppd 2.4.7 started by root,uid 0
May  3 17:47:01 vubuntu pppd[23026]: using channel 3
May  3 17:47:01 vubuntu pppd[23026]: Using interface ppp0
May  3 17:47:01 vubuntu pppd[23026]: Connect: ppp0 <--> /tmp/VA0
May  3 17:47:01 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:04 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:07 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:10 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:19 vubuntu pppd[23026]: message repeated 3 times: [ sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]]
May  3 17:47:22 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:25 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:40 vubuntu pppd[23026]: message repeated 5 times: [ sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]]
May  3 17:47:43 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:46 vubuntu pppd[23026]: sent [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xa16b2532> <pcomp> <accomp>]
May  3 17:47:49 vubuntu pppd[23026]: LCP: timeout sending Config-Requests

客户端 (DOS) 日志:

sent [LCP ConfReq id=0x1 <mru 296> <magic 0x1a1e5684> <pcomp> <accomp>]
fsm_sdata(LCP): Sent code 1,id 1.
Timeout 53ce:2a06 in 3 seconds.
LCP: sending Configure-Request,id 1
rcvd [LCP ConfReq id=0x1 <mru 296> <asyncmap 0x0> <magic 0xf334d254> <pcomp> <accomp>]
fsm_rconfreq(LCP): Rcvd id 1.
lcp_reqci: rcvd MRU (296) (ACK)
lcp_reqci: rcvd ASYNCMAP (0) (ACK)
lcp_reqci: rcvd MAGICNUMBER (f334d254) (ACK)
lcp_reqci: rcvd PCOMPRESSION (ACK)
lcp_reqci: rcvd ACCOMPRESSION (ACK)
lcp_reqci: returning CONFACK.
sent [LCP ConfAck id=0x1 <mru 296> <asyncmap 0x0> <magic 0xf334d254> <pcomp> <accomp>]
fsm_sdata(LCP): Sent code 2,id 1.
calltimeout,calling 53ce:2a06.
sent [LCP ConfReq id=0x1 <mru 296> <magic 0x1a1e5684> <pcomp> <accomp>]
fsm_sdata(LCP): Sent code 1,id 1
calltimeout,calling 53ce:2a06.
LCP: timeout sending Config-Requests

Wireshark 输出

"No.","Time","Source","Destination","Protocol","Length","Info"
  "1","0.000000000","10.0.10.46","10.0.10.40","TCP","60","17675  >  2323 [SYN] Seq=0 Win=2144 Len=0 MSS=536"
  "2","0.000030364","58","2323  >  17675 [SYN,ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460"
  "3","0.000077792","[TCP Out-Of-Order] 17675  >  2323 [SYN] Seq=0 Win=2144 Len=0 MSS=536"
  "4","0.000084607","[TCP Out-Of-Order] 2323  >  17675 [SYN,ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460"
  "5","0.001842272",ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460"
  "6","0.004731837","17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "7","0.004762303","[TCP Dup ACK 6#1] 17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "8","0.005107996","144","2323  >  17675 [PSH,ACK] Seq=1 Ack=1 Win=29200 Len=90"
  "9","0.005135033","[TCP Dup ACK 6#2] 17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "10","0.005139181","[TCP Dup ACK 6#3] 17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "11","0.005251709","[TCP Fast Retransmission] 2323  >  17675 [PSH,ACK] Seq=1 Ack=1 Win=29200 Len=90"
  "12","0.005681821","[TCP Dup ACK 6#4] 17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "13","0.005684394","[TCP Dup ACK 6#5] 17675  >  2323 [ACK] Seq=1 Ack=1 Win=2144 Len=0"
  "14","0.007251730","17675  >  2323 [ACK] Seq=1 Ack=91 Win=2054 Len=0"
  "15","0.007258989","[TCP Dup ACK 14#1] 17675  >  2323 [ACK] Seq=1 Ack=91 Win=2054 Len=0"
  "16","1.350699083","99",ACK] Seq=91 Ack=1 Win=29200 Len=45"
  "17","1.350813271","[TCP Retransmission] 2323  >  17675 [PSH,ACK] Seq=91 Ack=1 Win=29200 Len=45"
  "18","1.353975483","17675  >  2323 [ACK] Seq=1 Ack=136 Win=2009 Len=0"
  "19","1.353992799","[TCP Dup ACK 18#1] 17675  >  2323 [ACK] Seq=1 Ack=136 Win=2009 Len=0"
  "20","4.351002938",ACK] Seq=136 Ack=1 Win=29200 Len=45"
  "21","4.351196261",ACK] Seq=136 Ack=1 Win=29200 Len=45"
  "22","4.353518546","17675  >  2323 [ACK] Seq=1 Ack=181 Win=1964 Len=0"
  "23","4.353536282","[TCP Dup ACK 22#1] 17675  >  2323 [ACK] Seq=1 Ack=181 Win=1964 Len=0"
  "24","5.944472826","92","17675  >  2323 [PSH,ACK] Seq=1 Ack=181 Win=1964 Len=38"
  "25","5.944492255","54","2323  >  17675 [ACK] Seq=181 Ack=39 Win=29200 Len=0"
  "26","5.944553371","[TCP SpurIoUs Retransmission] 17675  >  2323 [PSH,ACK] Seq=1 Ack=181 Win=1964 Len=38"
  "27","5.944557821","[TCP Dup ACK 25#1] 2323  >  17675 [ACK] Seq=181 Ack=39 Win=29200 Len=0"
  "28","5.944590103","[TCP Dup ACK 25#2] 2323  >  17675 [ACK] Seq=181 Ack=39 Win=29200 Len=0"
  "29","5.944591697","[TCP Dup ACK 25#3] 2323  >  17675 [ACK] Seq=181 Ack=39 Win=29200 Len=0"
  "30","7.352224333",ACK] Seq=181 Ack=39 Win=29200 Len=45"
  "31","7.352443324",ACK] Seq=181 Ack=39 Win=29200 Len=45"
  "32","7.354569578","17675  >  2323 [ACK] Seq=39 Ack=226 Win=1919 Len=0"
  "33","7.354587157","[TCP Dup ACK 32#1] 17675  >  2323 [ACK] Seq=39 Ack=226 Win=1919 Len=0"
  "34","7.469334263","97",ACK] Seq=39 Ack=226 Win=1919 Len=43"
  "35","7.469355623","2323  >  17675 [ACK] Seq=226 Ack=82 Win=29200 Len=0"
  "36","7.469416303",ACK] Seq=39 Ack=226 Win=1919 Len=43"
  "37","7.469422182","[TCP Dup ACK 35#1] 2323  >  17675 [ACK] Seq=226 Ack=82 Win=29200 Len=0"
  "38","7.469454607","[TCP Dup ACK 35#2] 2323  >  17675 [ACK] Seq=226 Ack=82 Win=29200 Len=0"
  "39","7.469456506","[TCP Dup ACK 35#3] 2323  >  17675 [ACK] Seq=226 Ack=82 Win=29200 Len=0"
  "40","8.719559658",ACK] Seq=82 Ack=226 Win=1919 Len=38"
  "41","8.719582228","2323  >  17675 [ACK] Seq=226 Ack=120 Win=29200 Len=0"
  "42","8.719630381",ACK] Seq=82 Ack=226 Win=1919 Len=38"
  "43","8.719633846","[TCP Dup ACK 41#1] 2323  >  17675 [ACK] Seq=226 Ack=120 Win=29200 Len=0"
  "44","8.719691462","[TCP Dup ACK 41#2] 2323  >  17675 [ACK] Seq=226 Ack=120 Win=29200 Len=0"
  "45","8.719692989","[TCP Dup ACK 41#3] 2323  >  17675 [ACK] Seq=226 Ack=120 Win=29200 Len=0"
  "46","10.356400762",ACK] Seq=226 Ack=120 Win=29200 Len=45"
  "47","10.356581268",ACK] Seq=226 Ack=120 Win=29200 Len=45"
  "48","10.358275236","17675  >  2323 [ACK] Seq=120 Ack=271 Win=1874 Len=0"
  "49","10.358285816","[TCP Dup ACK 48#1] 17675  >  2323 [ACK] Seq=120 Ack=271 Win=1874 Len=0"
  "50","10.472045073",ACK] Seq=120 Ack=271 Win=1874 Len=43"
  "51","10.472094939","2323  >  17675 [ACK] Seq=271 Ack=163 Win=29200 Len=0"
  "52","10.472427319",ACK] Seq=120 Ack=271 Win=1874 Len=43"
  "53","10.472511661","[TCP Dup ACK 51#1] 2323  >  17675 [ACK] Seq=271 Ack=163 Win=29200 Len=0"
  "54","10.472612625","[TCP Dup ACK 51#2] 2323  >  17675 [ACK] Seq=271 Ack=163 Win=29200 Len=0"
  "55","10.472614335","[TCP Dup ACK 51#3] 2323  >  17675 [ACK] Seq=271 Ack=163 Win=29200 Len=0"
  "56","11.894259045",ACK] Seq=163 Ack=271 Win=1874 Len=38"
  "57","11.894285618","2323  >  17675 [ACK] Seq=271 Ack=201 Win=29200 Len=0"
  "58","11.894400336",ACK] Seq=163 Ack=271 Win=1874 Len=38"
  "59","11.894407433","[TCP Dup ACK 57#1] 2323  >  17675 [ACK] Seq=271 Ack=201 Win=29200 Len=0"
  "60","11.894469565","[TCP Dup ACK 57#2] 2323  >  17675 [ACK] Seq=271 Ack=201 Win=29200 Len=0"
  "61","11.894470975","[TCP Dup ACK 57#3] 2323  >  17675 [ACK] Seq=271 Ack=201 Win=29200 Len=0"
  "62","13.358468359",ACK] Seq=271 Ack=201 Win=29200 Len=45"
  "63","13.358685429",ACK] Seq=271 Ack=201 Win=29200 Len=45"
  "64","13.360612227","17675  >  2323 [ACK] Seq=201 Ack=316 Win=1829 Len=0"
  "65","13.360644346","[TCP Dup ACK 64#1] 17675  >  2323 [ACK] Seq=201 Ack=316 Win=1829 Len=0"
  "66","13.669503126",ACK] Seq=201 Ack=316 Win=1829 Len=43"
  "67","13.669527206","2323  >  17675 [ACK] Seq=316 Ack=244 Win=29200 Len=0"
  "68","13.669582586",ACK] Seq=201 Ack=316 Win=1829 Len=43"
  "69","13.669587018","[TCP Dup ACK 67#1] 2323  >  17675 [ACK] Seq=316 Ack=244 Win=29200 Len=0"
  "70","13.669632820","[TCP Dup ACK 67#2] 2323  >  17675 [ACK] Seq=316 Ack=244 Win=29200 Len=0"
  "71","13.669634307","[TCP Dup ACK 67#3] 2323  >  17675 [ACK] Seq=316 Ack=244 Win=29200 Len=0"
  "72","14.894502371",ACK] Seq=244 Ack=316 Win=1829 Len=38"
  "73","14.894521034","2323  >  17675 [ACK] Seq=316 Ack=282 Win=29200 Len=0"
  "74","14.894570678",ACK] Seq=244 Ack=316 Win=1829 Len=38"
  "75","14.894575204","[TCP Dup ACK 73#1] 2323  >  17675 [ACK] Seq=316 Ack=282 Win=29200 Len=0"
  "76","14.894602142","[TCP Dup ACK 73#2] 2323  >  17675 [ACK] Seq=316 Ack=282 Win=29200 Len=0"
  "77","14.894603571","[TCP Dup ACK 73#3] 2323  >  17675 [ACK] Seq=316 Ack=282 Win=29200 Len=0"
  "78","16.359612699",ACK] Seq=316 Ack=282 Win=29200 Len=45"
  "79","16.359778455",ACK] Seq=316 Ack=282 Win=29200 Len=45"
  "80","16.362632992","17675  >  2323 [ACK] Seq=282 Ack=361 Win=1784 Len=0"
  "81","16.362650319","[TCP Dup ACK 80#1] 17675  >  2323 [ACK] Seq=282 Ack=361 Win=1784 Len=0"
  "82","16.719466718",ACK] Seq=282 Ack=361 Win=1784 Len=43"
  "83","16.719490450","2323  >  17675 [ACK] Seq=361 Ack=325 Win=29200 Len=0"
  "84","16.719537634",ACK] Seq=282 Ack=361 Win=1784 Len=43"
  "85","16.719543331","[TCP Dup ACK 83#1] 2323  >  17675 [ACK] Seq=361 Ack=325 Win=29200 Len=0"
  "86","16.719581622","[TCP Dup ACK 83#2] 2323  >  17675 [ACK] Seq=361 Ack=325 Win=29200 Len=0"
  "87","16.719583258","[TCP Dup ACK 83#3] 2323  >  17675 [ACK] Seq=361 Ack=325 Win=29200 Len=0"
  "88","17.946994345",ACK] Seq=325 Ack=361 Win=1784 Len=38"
  "89","17.947012277","2323  >  17675 [ACK] Seq=361 Ack=363 Win=29200 Len=0"
  "90","17.947116617",ACK] Seq=325 Ack=361 Win=1784 Len=38"
  "91","17.947121374","[TCP Dup ACK 89#1] 2323  >  17675 [ACK] Seq=361 Ack=363 Win=29200 Len=0"
  "92","17.947155830","[TCP Dup ACK 89#2] 2323  >  17675 [ACK] Seq=361 Ack=363 Win=29200 Len=0"
  "93","17.947156614","[TCP Dup ACK 89#3] 2323  >  17675 [ACK] Seq=361 Ack=363 Win=29200 Len=0"
  "94","19.360843006",ACK] Seq=361 Ack=363 Win=29200 Len=45"
  "95","19.361014149",ACK] Seq=361 Ack=363 Win=29200 Len=45"
  "96","19.362935421","17675  >  2323 [ACK] Seq=363 Ack=406 Win=1739 Len=0"
  "97","19.362952840","[TCP Dup ACK 96#1] 17675  >  2323 [ACK] Seq=363 Ack=406 Win=1739 Len=0"
  "98","19.469431061",ACK] Seq=363 Ack=406 Win=1739 Len=43"
  "99","19.469451589","2323  >  17675 [ACK] Seq=406 Ack=406 Win=29200 Len=0"
  "100","19.469517073",ACK] Seq=363 Ack=406 Win=1739 Len=43"
  "101","19.469521974","[TCP Dup ACK 99#1] 2323  >  17675 [ACK] Seq=406 Ack=406 Win=29200 Len=0"
  "102","19.469568398","[TCP Dup ACK 99#2] 2323  >  17675 [ACK] Seq=406 Ack=406 Win=29200 Len=0"
  "103","19.469569955","[TCP Dup ACK 99#3] 2323  >  17675 [ACK] Seq=406 Ack=406 Win=29200 Len=0"
  "104","21.019605006",ACK] Seq=406 Ack=406 Win=1739 Len=38"
  "105","21.019628878","2323  >  17675 [ACK] Seq=406 Ack=444 Win=29200 Len=0"
  "106","21.019706390",ACK] Seq=406 Ack=406 Win=1739 Len=38"
  "107","21.019710279","[TCP Dup ACK 105#1] 2323  >  17675 [ACK] Seq=406 Ack=444 Win=29200 Len=0"
  "108","21.019752344","[TCP Dup ACK 105#2] 2323  >  17675 [ACK] Seq=406 Ack=444 Win=29200 Len=0"
  "109","21.019753108","[TCP Dup ACK 105#3] 2323  >  17675 [ACK] Seq=406 Ack=444 Win=29200 Len=0"
  "110","22.362479848",ACK] Seq=406 Ack=444 Win=29200 Len=45"
  "111","22.362659733",ACK] Seq=406 Ack=444 Win=29200 Len=45"
  "112","22.364335297","17675  >  2323 [ACK] Seq=444 Ack=451 Win=1694 Len=0"
  "113","22.364360721","[TCP Dup ACK 112#1] 17675  >  2323 [ACK] Seq=444 Ack=451 Win=1694 Len=0"
  "114","22.544273483",ACK] Seq=444 Ack=451 Win=1694 Len=43"
  "115","22.544293957","2323  >  17675 [ACK] Seq=451 Ack=487 Win=29200 Len=0"
  "116","22.544353788",ACK] Seq=444 Ack=451 Win=1694 Len=43"
  "117","22.544359899","[TCP Dup ACK 115#1] 2323  >  17675 [ACK] Seq=451 Ack=487 Win=29200 Len=0"
  "118","22.544393295","[TCP Dup ACK 115#2] 2323  >  17675 [ACK] Seq=451 Ack=487 Win=29200 Len=0"
  "119","22.544395229","[TCP Dup ACK 115#3] 2323  >  17675 [ACK] Seq=451 Ack=487 Win=29200 Len=0"
  "120","23.794594155",ACK] Seq=487 Ack=451 Win=1694 Len=38"
  "121","23.794618098","2323  >  17675 [ACK] Seq=451 Ack=525 Win=29200 Len=0"
  "122","23.794705504",ACK] Seq=487 Ack=451 Win=1694 Len=38"
  "123","23.794709608","[TCP Dup ACK 121#1] 2323  >  17675 [ACK] Seq=451 Ack=525 Win=29200 Len=0"
  "124","23.794753913","[TCP Dup ACK 121#2] 2323  >  17675 [ACK] Seq=451 Ack=525 Win=29200 Len=0"
  "125","23.794754694","[TCP Dup ACK 121#3] 2323  >  17675 [ACK] Seq=451 Ack=525 Win=29200 Len=0"
  "126","26.769542223",ACK] Seq=525 Ack=451 Win=1694 Len=38"
  "127","26.769564150","2323  >  17675 [ACK] Seq=451 Ack=563 Win=29200 Len=0"
  "128","26.769664917",ACK] Seq=525 Ack=451 Win=1694 Len=38"
  "129","26.769670271","[TCP Dup ACK 127#1] 2323  >  17675 [ACK] Seq=451 Ack=563 Win=29200 Len=0"
  "130","26.769728538","[TCP Dup ACK 127#2] 2323  >  17675 [ACK] Seq=451 Ack=563 Win=29200 Len=0"
  "131","26.769729384","[TCP Dup ACK 127#3] 2323  >  17675 [ACK] Seq=451 Ack=563 Win=29200 Len=0"
  "132","30.069668296",ACK] Seq=563 Ack=451 Win=1694 Len=38"
  "133","30.069688247","2323  >  17675 [ACK] Seq=451 Ack=601 Win=29200 Len=0"
  "134","30.069753329",ACK] Seq=563 Ack=451 Win=1694 Len=38"
  "135","30.069757359","[TCP Dup ACK 133#1] 2323  >  17675 [ACK] Seq=451 Ack=601 Win=29200 Len=0"
  "136","30.069797838","[TCP Dup ACK 133#2] 2323  >  17675 [ACK] Seq=451 Ack=601 Win=29200 Len=0"
  "137","30.069799478","[TCP Dup ACK 133#3] 2323  >  17675 [ACK] Seq=451 Ack=601 Win=29200 Len=0"

我不确定问题出在哪里,似乎双方都在发送/接收。我看到重复的数据包和虚假的重传,但我不知道为什么。 看起来我的 Socat 命令没问题,但我不确定。 如何进行故障排除并使其正常工作?

更新:从客户端获取日志是一个挑战,但当我可以从设备上取下它时,我会用它更新这篇文章

看起来客户端正在从服务器接收和确认,但服务器没有从客户端接收,就像 Socat 没有将它传递给 pppd。

更新 2:添加 DOS 客户端 ppp 日志。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)