LINUX.ORG.RU
ФорумAdmin

ppp через нуль модем, через socat

 ppp null-modem socat


0

1

Добрых суток, не получается настроить ppp через null modem. Всё осложняется тем, что один serial интерфейс в qemu машине

-serial telnet:127.0.0.1:10232,server,nowait
, а другой создаётся socat:
# socat -d -d TCP:localhost:10232 pty,nonblock,waitlock=/var/run/tty36.lock,raw,echo=0
# ln -s /dev/pts/36 /dev/ttyS99
Вот настройки на вм:
# cat options.ttyS1 
crtscts
lock
192.168.1.1:192.168.1.2
debug
local
noauth
nodeflate
nobsdcomp
на хост машине:
# cat options.ttyS99 
crtscts
lock
192.168.1.2:192.168.1.1
debug
local
noauth
nodeflate
nobsdcomp

Если после всего этого запустить pppd, то на вм:

# pppd nodetach /dev/ttyS1
using channel 37
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
Connection terminated.
Modem hangup

на хосте:
# pppd nodetach /dev/ttyS99
Removed stale lock on ttyS99 (pid 20840)
using channel 19
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS99
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfe82ce78> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x527e8860> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
Connection terminated.
Modem hangup

При этом echo «something» > /dev/ttyS1(S99) отрабатывают и через cat /dev/ttyS1(99) виден вывод.

П.С. да-да нужно именно serial интерфейс в qemu и на хосте :-)

Что не так настроено?

Спасибо.

★★★★★

Последнее исправление: cyclon (всего исправлений: 1)

...заметил интересный момент, если успеть руками с обоих сторон настроить ip на ppp0 интерфейсе, то вот что покаывазет tcpdump

# tcpdump -i ppp0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
11:32:15.550195 IP 172.16.16.1 > 172.16.16.2: ICMP echo request, id 23810, seq 7, length 64
11:32:15.550221 IP 172.16.16.2 > 172.16.16.1: ICMP echo reply, id 23810, seq 7, length 64
11:32:16.550219 IP 172.16.16.1 > 172.16.16.2: ICMP echo request, id 23810, seq 8, length 64
11:32:16.550247 IP 172.16.16.2 > 172.16.16.1: ICMP echo reply, id 23810, seq 8, length 64
11:32:17.550222 IP 172.16.16.1 > 172.16.16.2: ICMP echo request, id 23810, seq 9, length 64
11:32:17.550246 IP 172.16.16.2 > 172.16.16.1: ICMP echo reply, id 23810, seq 9, length 64
11:32:18.550200 IP 172.16.16.1 > 172.16.16.2: ICMP echo request, id 23810, seq 10, length 64
11:32:18.550223 IP 172.16.16.2 > 172.16.16.1: ICMP echo reply, id 23810, seq 10, length 64
хост
# ifconfig ppp0 172.16.16.2 netmask 255.255.255.0
# ifconfig ppp0 up
вм
# ifconfig ppp0 172.16.16.1 netmask 255.255.255.0
# ifconfig ppp0 up
т.е. похоже проблема, только в том, что pppd не прекращает попыток установить соединение

cyclon ★★★★★
() автор топика
Последнее исправление: cyclon (всего исправлений: 1)

Я конечно не большой знаток, но разве не надо в подобном случае на одной стороне в опциях указывать passive(например, на серверной стороне)?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Вот это точно не обязательно (зуб даю).
Вызывает подозрение слово «telnet», потому что у netcat-а (ещё до появления socat) была спецопция для подключения к telnet.
К сожалению, у меня сейчас нет соответствующего оборудования и ПО, чтобы сказать что-то конкретное, но:
1) проверить, что последовательное соединение вообще работает, перед тем, как запускать ppp.
2) kdebug 1

ABW ★★★★★
()
Ответ на: комментарий от ABW

1) проверить, что последовательное соединение вообще работает, перед тем, как запускать ppp.

Я пробовал делать как описал выше, посылал строчки через echo и ловил cat'ом, в обе стороны, всё работает. Как это ещё можно сделать?

Если заменить

 -serial telnet:127.0.0.1:10232,server,nowait
на
 -serial pty 
то всё работает, но нужен проброс через сеть

cyclon ★★★★★
() автор топика
Последнее исправление: cyclon (всего исправлений: 1)
Ответ на: комментарий от ABW

Вызывает подозрение слово «telnet», потому что у netcat-а

Аргх, СПАСИБО, даже и забыл, что скопипастил с telnet.

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.