GNU/Linux >> Linux の 問題 >  >> Linux

Linux用の多目的リレーツールであるsocatの使用を開始する

socatユーティリティは、2つの独立したデータチャネル間の双方向データ転送用のリレーです。

チャネルにはさまざまな種類がありますsocat 以下を含む接続可能:

  • ファイル
  • パイプ
  • デバイス(シリアル回線、疑似端末など)
  • ソケット(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の技術概要。 ]


Linux
  1. Linuxサーバーのセキュリティを開始するための5つのヒント

  2. 相互運用性のためのSambaの使用開始

  3. LinuxでSSHを使い始める

  1. Linuxファイアウォールの使用を開始する

  2. 強力なテキスト解析ツールであるawkの使用を開始する

  3. LinuxでPostgreSQLを使い始める

  1. Linux用のbtrfsの使用を開始する

  2. GNOMEを使い始めるためのアドバイス

  3. ミニマリスト向けのLinuxデスクトップ:LXQtとLXDEの使用を開始する