外部 ppp0 から内部サーバーに転送される iptables ポート

外部 ppp0 から内部サーバーに転送される iptables ポート

実は同じ問題ですこれ。しかし、私はそこでも答えを得ませんでした。

私のシナリオは、2つのネットワークカードがあり、ルーターとして機能し、偽装、ファイアウォールなどのためのiptablesルールを実行するLinuxボックスです。 LAN IPのみを使用して特定のポートを内部サーバーに転送したいと思います。

ルータサーバは外部インターフェイスとして ppp0 を使用し、内部 IP として 192.168.212.50 を使用します。ポート2000を外部(ホスト名:2000に接続)から内部192.168.212.51:8088に転送したいと思います。

sysctl net/ipv4/ip_forward は、仮面舞踏会が設定されているため、1 に設定されます。

外部IP(ホスト名:2000)でポート転送を試みると、常にタイムアウトが発生します。ログからパケットが破棄されていることがわかります。

iptablesのルールは次のとおりです。https://pastebin.com/au9QDhQf

  • ポートをLANにのみ転送するように設定した場合(たとえば、未定義-i $EXT_IFおよび接続済み)http://192.168.212.50:2000/動作することができます。
  • 私も確認しましたこの投稿。しかし、すでにMASQUERADEを設定しているので、iptables -t nat -A POSTROUTING -j MASQUERADEここでは2番目のルールは機能しません。

どんな助けでも大変感謝します。

答え1

あなたはおそらく常にネットワーク内でexternal-ip:2000に接続できるようにしたいので、ファイアウォールルールで `-i $EXT_IF$を使用したくないでしょう。

思ったらポート番号を変更しているからあらかじめROUTING チェーンがポート 2000 へのトラフィックを許可することは重要ではありません。トラフィックがそのルールに到達すると、変更されて宛先ポートが8088になる可能性があります。

答え2

ついに私は何が起こっているのか知りました。

ポート転送と転送ルールを間違った場所に配置しました。 iptables -A FORWARD -j blockはい今後ポート転送ルールにより POSTROUTING がトリガーされますが、パケットは破棄されます。

関連情報