socatユーティリティは、2つの独立したデータチャネル間の双方向データ転送用のリレーです。
チャネルにはさまざまな種類がありますsocat
以下を含む接続可能:
- ファイル
- パイプli>
- デバイス(シリアル回線、疑似端末など)
- ソケット(UNIX、IP4、IP6-raw、UDP、TCP)
- SSLソケット
- プロキシCONNECT接続
- ファイル記述子(stdinなど)
- GNUラインエディタ(readline)
- プログラム
- これら2つの組み合わせ
このツールは、netcatの高度なバージョンと見なされます。それらは同様のことをしますが、socat
複数のクライアントがポートでリッスンできるようにする、接続を再利用するなど、より多くの追加機能があります。
なぜsocatが必要なのですか?
socate
を使用する方法はたくさんあります 効果的に。次にいくつかの例を示します。
- TCPポートフォワーダー(ワンショットまたはデーモン)
- 外部ソックスファイアー
- 弱いファイアウォールを攻撃するためのツール(セキュリティと監査)
- Unixソケットへのシェルインターフェイス
- IP6リレー
- TCP指向のプログラムをシリアル回線にリダイレクトする
- 異なるコンピュータのシリアル回線を論理的に接続します
- 比較的安全な環境を確立します(
su
およびchroot
)ネットワーク接続を使用してクライアントまたはサーバーのシェルスクリプトを実行する場合
socatはどのように使用しますか?
socat
の構文 かなり単純です:
socat [options] <address> <address>
動作させるには、送信元アドレスと宛先アドレスを指定する必要があります。これらのアドレスの構文は次のとおりです。
protocol:ip:port
socatの使用例
socat
の基本的な使用例から始めましょう さまざまな接続用。
1.ローカルまたはリモートシステムのTCPポート80に接続します。
# socat - TCP4:www.example.com:80
この場合、socat
STDIO(-)とTCP4接続の間でwww.example.comという名前のホストのポート80にデータを転送します。
2. socat
を使用します TCPポートフォワーダーとして:
単一の接続の場合は、次のように入力します。
# socat TCP4-LISTEN:81 TCP4:192.168.1.10:80
複数の接続の場合は、fork
を使用します 以下の例で使用されているオプション:
# socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.1.10:80
この例では、ポート81でリッスンし、接続を受け入れ、接続をリモートホストのポート80に転送します。
# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock
上記の例では、ポート3307でリッスンし、接続を受け入れ、接続をリモートホストのUnixソケットに転送します。
3.単純なネットワークベースのメッセージコレクターを実装します。
# socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/test.log,creat,append
この例では、クライアントがポート3334に接続すると、新しい子プロセスが生成されます。クライアントから送信されたすべてのデータは、ファイル/tmp/test.log
に追加されます。 。ファイルが存在しない場合は、socat
それを作成します。オプションreuseaddr
サーバープロセスの即時再起動を許可します。
4.ローカルネットワークにブロードキャストを送信します:
# socat - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0
この場合、socat
stdin
からデータを転送します ローカル接続とリモート接続の両方で、ポート6666を介してUDPを使用して指定されたマルチキャストアドレスに送信します。このコマンドは、指定されたグループのマルチキャストパケットを受け入れるようにインターフェイスeth0にも指示します。
socatの実用的な使用法
Socat
トラブルシューティングに最適なツールです。また、リモート接続を簡単に行うのにも便利です。実際には、私はsocat
を使用しました リモートMySQL接続用。以下の例では、socat
の使用方法を示しています。 ローカルソケットを介して接続することにより、WebアプリケーションをリモートMySQLサーバーに接続します。
1.リモートのMySQLサーバーで、次のように入力します。
# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock &
このコマンドはsocat
を開始します ポート3307を使用してリッスンするように構成します。
2. Webサーバーで、次のように入力します。
# socat UNIX-LISTEN:/var/lib/mysql/mysql.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 TCP:192.168.100.5:3307 &
上記のコマンドは、ポート3307を使用してリモートサーバー192.168.100.5に接続します。
ただし、すべての通信はUnixソケット/var/lib/mysql/mysql.sock
で行われます。 、これにより、ローカルサーバーのように見えます。
まとめ
socat
は洗練されたユーティリティであり、すべてのシステム管理者が物事を成し遂げ、トラブルシューティングを行うための優れたツールです。 socatの使用例をもっと読むには、このリンクをたどってください。
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]