Моя цель - использовать pppd вместо socat. У меня есть два бокса Ubuntu с eth0, подключенными (физически) друг к другу. Я могу пропинговать оба IP-адреса. Я делаю следующее для каждой коробки Ubuntu.
- Создайте псевдосерийное устройство и свяжите его с моим сетевым интерфейсом "eth0".
socat PTY, link = / dev / ttyp10 INTERFACE: eth0 - Используйте pppd на этом псевдосерийном устройстве.
Устройство A:
pppd noauth / dev / ttyp10 10.10.10.10:20.20.20.20
Устройство B:
pppd noauth / dev / ttyp10 20.20.20.20 : 10.10.10.10
Я вижу, что мой интерфейс ppp0 создается на короткое время, но я не могу проверить связь с обоими IP-адресами (10.10.10.10 или 20.20.20.20). Я знаю, что мое решение не является полным, так как мне нужно указать, как мои пакеты pppd должны маршрутизироваться с моего интерфейса eth0, но не знаю, как это сделать (я использовал tcpdump на интерфейсе eth0 и нашел некоторые данные).
Я попробовал тот же эксперимент, привязав socat к TCP-серверу / клиенту, и он сработал.
Устройство A:
1. socat pty, link = / dev / ttyp10, raw, echo = 0 TCP4-LISTEN: 7001, reuseaddr &
2. pppd noauth / dev / ttyp10 10.10.10.10:20.20.20.20
Устройство B:
1. socat pty, link = / dev / ttyp10, raw, echo = 0, waitslave TCP4: 20.1.1.2: 7001 &
2. pppd noauth / dev / ttyp10 20.20.20.20:10.10.10.10
Примечание. 20.1.1.2 - это IP-адрес "eth0" устройства A. Теперь мой интерфейс ppp0 включен, и я могу пинговать оба IP-адреса (10.10.10.10 и 20.20.20.20).
Зачем мне нужно использовать псевдосерийное устройство, когда у меня есть рабочий интерфейс eth0 - это другой вопрос, и мы не будем его обсуждать.