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の技術概要。 ]