Linux でポート フォワーディングを設定する方法
ポート フォワーディングは、さまざまなネットワーク アプリケーションにおいて非常に重要な機能です。これにより、外部トラフィックを内部ネットワーク上の特定のポートに転送できます。 Linux システムでは、ポート転送機能は iptables と sysctl を使用して実装されます。この記事では、Linux でポート転送を設定する方法を説明し、対応するコード例を示します。
ポート フォワーディングの設定を開始する前に、まずカーネル パラメータで転送機能が許可されているかどうかを確認する必要があります。次のコマンドを実行すると、現在のシステムの転送設定を表示できます。
sysctl net.ipv4.ip_forward
出力結果が net.ipv4.ip_forward = 1
の場合、転送機能が機能していることを意味します。有効化されました。出力結果が net.ipv4.ip_forward = 0
の場合、転送機能が有効になっていないことを意味します。転送機能が有効になっていない場合は、次のコマンドを実行して転送機能を一時的に有効にすることができます。
sysctl -w net.ipv4.ip_forward=1
転送機能を永続的に有効にする必要がある場合は、/etc/sysctl を編集できます。 conf
ファイルに、次のパラメータを追加または変更します。
net.ipv4.ip_forward=1
変更後、ファイルを保存し、次のコマンドを実行して有効にします。
sysctl -p
ポート転送を実装するにはさまざまな方法がありますが、以下では、iptables を使用する方法と socat ツールを使用する 2 つの一般的な方法を紹介します。
A. iptables の使用
iptables は Linux システムで一般的に使用されるファイアウォール ツールであり、これを使用してポート転送を設定できます。以下は、iptables を介してポート転送を設定するサンプル コードです。
iptables -t nat -A PREROUTING -p tcp --dport <external_port> -j DNAT --to-destination <internal_ip>:<internal_port> iptables -t nat -A POSTROUTING -j MASQUERADE
ここで、<external_port>
は外部ポート、<internal_ip>
は IP です。内部サーバーのアドレス。<internal_port>
は内部サーバーのポート番号です。これら 2 つのコマンドは、外部トラフィックを内部サーバーに転送します。外部トラフィックの転送後に送信元 IP アドレスを正しく識別したい場合は、次のコマンドを追加できます。
iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
ここで、<external_interface>
は外部インターフェイスの名前です。 eth0
など。
B. socat ツールを使用する
Socat は、さまざまなネットワーク接続と転送を実行できる強力なネットワーク ツールです。以下は、socat を介してポート転送を設定するサンプル コードです。
socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port>
ここで、<external_port>
は外部ポート、<internal_ip>
は IP です。内部サーバーのアドレス。<internal_port>
は内部サーバーのポート番号です。このコマンドは、外部トラフィックを内部サーバーに転送します。
iptables ツールを使用するか socat ツールを使用するかにかかわらず、設定された転送ルールは現在のセッションでのみ有効です。システムの再起動後もルールを有効なままにしたい場合は、これらのルールをシステムに適用する必要があります。
A. iptables の使用
次のコマンドを実行して、iptables ルールをシステムに適用できます:
iptables-save > /etc/sysconfig/iptables
B. socat ツールの使用
socatツールのデフォルト バックグラウンドで実行している場合、システムの再起動後も socat ルールを有効なままにしておく場合は、socat 設定をシステム起動スクリプトに追加できます。たとえば、Ubuntu システムでは、/etc/rc.local
ファイルを編集して次の内容を追加できます。
/path/to/socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port> &
/path/to/socat## であることに注意してください。 # は実際の socat ツール パスに置き換える必要があります。
以上がLinux でポート転送を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。