7

socatユーティリティを使用して、ttyS0のようなシリアル(モデム)デバイスを介して双方向IPトンネルを取得することは可能ですか?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を実行できません。ping -c 1 192.168.1.1その代わりに、リモートプロセス出口を使用してデータを送信すると、socattun0デバイスが破棄されます。助言がありますか?..

Update2:

socatのみを使用してTCP/IPトンネルをシリアル経由で作成しようとすると、フレーミングの問題が発生します。socatの開発者であるGerhardRiegerは、次のように言っています。

私はあなたが正しいのではないかと心配しています。データグラムソケットを調整し、運が良ければパイプも調整します。ただし、シリアル回線を介すると、パケットの境界がなくなる可能性があり、これはtunインターフェイスでデータを送信するときに致命的です。

申し訳ありませんが、現在、socatベースのソリューションを提供することはできません。ただし、新しいバージョン2リリースでいくつかのフレーミングを統合しようとします。

4

2 に答える 2

8

ハハ、私は働いていますが、いくつかの魔法が必要です:)

したがって、最初のピアを次のように構成します。

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 &

そして今、ある PC から別の PC に正常に ping を実行できます。

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注意が必要ですが、実際には他のソリューションでは、slip のようなものを使用して、シリアル ライン上でフレーミングを整理する必要があります。たとえば、PPP は HDLC のようなフレームを使用します。

于 2011-05-06T00:28:28.773 に答える
3

私が試したことに基づいて、トンネルを確立するために 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

セットアップ後、PC1 から PC2 に ping を実行でき、その逆も可能です。

もう 1 つの前提条件があります。Linux カーネルにスリップ モジュールがロードされている必要があります。

于 2014-02-28T11:09:32.653 に答える