私の目的は、socat で pppd を使用することです。eth0 が (物理的に) 相互に接続された 2 つの Ubuntu ボックスがあります。両方の IP アドレスに ping を実行できます。各Ubuntuボックスで以下を行います。
- 疑似シリアル デバイスを作成し、ネットワーク インターフェイス「eth0」にリンクします。
socat PTY,link=/dev/ttyp10 インターフェース: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) に対して ping を実行できません。pppd パケットを eth0 インターフェースからルーティングする方法を指定する必要があるため、ソリューションが完全ではないことはわかっていますが、その方法がわかりません (eth0 インターフェースで tcpdump を使用し、いくつかのデータを見つけました)。
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はデバイス A の「eth0」IP アドレスです。これにより、私の ppp0 インターフェイスがアップし、両方の IP アドレス (10.10.10.10 と 20.20.20.20) に ping を実行できます。
動作している eth0 インターフェイスがあるのに、なぜ疑似シリアル デバイスを使用する必要があるのかは別の問題であり、それについては説明しません。