socat: туннельный IP через TTY

возможно ли получить двунаправленный IP-туннель через ttyS0-подобные последовательные (модемные) устройства с socat утилиты? Я попытался использовать опцию TUN, но все еще не могу получить результат.

любые предложения приветствуются :)

обновление:

PC1:

socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.1/24,up

PC2:

socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.2/24,up

после этого я видел интерфейсы tun0 с правильными адресами на обоих концах, но я не могу пинговать один из других. Вместо этого, когда я отправляю данные с ping -c 1 192.168.1.1 пульт ДУ socat процесс выходит, и это tun0 устройство уничтожено. Есть предложения?..

обновление 2:

существует проблема кадрирования, когда мы пытаемся сделать туннель TCP/IP через последовательный только с socat. Герхард Ригер, разработчик socat, говорит мне:

боюсь, что вы правы. ТУН за сокет датаграмм работ, и удача-тоже над трубами. Но над последовательная линия границы пакета может исчезни и это смертельно при отправке данные на интерфейсе tun.

Я не могу предложить решение на основе socat а теперь извини. Тем не менее, я постараюсь интегрируйте некоторое обрамление в более поздний версия 2.

2 ответов


ха-ха, я работаю, но должна быть какая-то магия:)

Итак, настройте 1-й узел с помощью:

PC1:
1) slattach -L -s 57600 -p slip /dev/ttyUSB0 &
2) ifconfig sl0 up
3) socat TUN:192.168.1.1/24,up INTERFACE:sl0 &

... и что-то вроде этого на 2-м пэре:

PC2:
1) slattach -L -s 57600 -p slip /dev/ttyUSB0 &
2) ifconfig sl0 up
3) socat TUN:192.168.1.2/24,up INTERFACE:sl0 &

и теперь вы можете успешно пинговать один компьютер с другого:

PC1:
1) ping -c 5 192.168.1.2

PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=348 ms
64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=551 ms
64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=557 ms
64 bytes from 192.168.1.2: icmp_req=4 ttl=64 time=549 ms
64 bytes from 192.168.1.2: icmp_req=5 ttl=64 time=348 ms

--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 348.116/471.143/557.128/100.177 ms

это немного сложно из-за slattach использовать, но на самом деле любое другое решение должно использовать что-то вроде скольжения для организации кадрирования по последовательной линии. Например, PPP использует HDLC-подобные кадры.


основываясь на том, что я пробовал, вам не нужен socat для создания туннеля. вы можете просто сделать следующее:

PC1:
 1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0
 2, sudo ifconfig sl0 10.0.0.1/24 up
 3, sudo route add default gw 10.0.0.254 sl0

PC2:
 1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0
 2, sudo ifconfig sl0 10.0.0.2/24 up
 3, sudo route add default gw 10.0.0.254 sl0

после установки я могу пинговать PC2 с PC1 и наоборот.

есть еще одно предварительное условие: ваше ядро Linux должно иметь загруженный модуль slip.