web-dev-qa-db-ja.com

明示的なIPアドレスを使用する場合、ローカルネットワーク内からのみマシン上でフィルタリングされたSSHポート

状況を説明するために、3台のマシンを定義する必要があります。ローカルネットワーク上に、マシン(LAPTOP)とマシン(SERVER)がそれぞれWANとLANを介してルーターに接続されています。3番目のマシンは外部vps(VPS)です。

明示的なIPアドレスを使用してラップトップからサーバーにSSHで接続しようとしています。これを実現するために、ポート22をリッスンするopensshサーバー(すべてのマシンがUbuntuを実行しています)をセットアップしました。ルーターで、予約済みIPアドレスをSERVERに指定し、着信ポート22のポート転送ルールをSERVERのポート22に追加しました。

動作しているもの:-VPSからサーバーへのSSH-ローカルネットワーク内部のローカルホスト名を使用したラップトップからサーバーへのSSH

動作していないもの:-明示的なIPアドレスを使用してラップトップからサーバーにSSH接続します。

デバッグを試みるために、nmapを実行して、ポートがフィルタリングされているかどうかを確認しました。 VPSとラップトップの両方で次のコマンドを実行しました

nmap -sS -p 22 xx.xx.xx.xx

ここで、xは、ローカルネットワークのルーターの文字通りの外部IPを示します。結果は次のとおりです。

VPS:22/tcp open ssh
ラップトップ:22/tcpフィルター処理されたssh

LAPTOPのローカルホスト名を使用しているかどうかを再確認するために、ポートは正常に開いています。明示的な外部IPを使用しているときにLAPTOPからSSHで接続するときに、ポートがフィルタリングされるのはなぜですか?発信リクエストはルーターによってフィルタリングされていますか?

2
Pankrates

問題は、ルーターがNAT(iptablesのDNATチェーン)の前にポート転送ルール(iptablesのSNATチェーン)を適用している可能性があるという事実に起因します。

このstackexchangeの投稿 問題を詳細に説明し、tcpdumpを使用して問題を確認する方法を示します。基本的に、SYNパケットを外部IPに送信し、SERVERの内部IPからSYN/ACKを受信することを確認する必要があります。

編集:修正方法:内部ネットワーク内から外部IPに接続しないでください。 SERVERの内部IPを直接使用します。

1
spongebob