Вопрос по linux, ip, socat, tunnel, serial-port – Есть еще одно предварительное условие: в вашем ядре Linux должен быть загружен модуль скольжения.

6

ли получить двунаправленный IP-туннель через ttyS0-подобные последовательные (модемные) устройства сСокат утилита? Я пытался использовать опцию 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 уничтожено. Какие-либо предложения?..

Update2:

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

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

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

@ysdx да, но pppd решает другую проблему Ilya Matveychikov
Вы знаете, что PPP (и pppd) предназначены для этого ... ysdx

Ваш Ответ

1   ответ
7

Итак, настройте 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 &

... и что-то в этом роде на втором узле:

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-подобные кадры.

Когда вы находитесь в точке использованияslattachпочему бы просто не настроить адреса на интерфейсе SLIP? Я вижу смысл попытки проложить туннель в TTY как быстрый и грязныйвременный измерить, но не в этом решении. pilona

Похожие вопросы