ポートを転送できません

ポートを転送できません

ルーターから PC にポートを転送する方法を 1 日かけて調べましたが、うまくいきませんでした。そして、もう手がかりがなくなってしまいました... イライラしています。説明や考えられる解決策が記載されたページをたくさん見ましたが、どうも正しい答えが見つかりません。これが繰り返しの質問であれば申し訳ありませんが、私はそうは思いません。

私がやろうとしているのは、仕事中に自宅の PC にアクセスできるようにすることです。そのために、DDNS サービスを使用します。

機能するシナリオと機能しないシナリオ: これは私の「標準」構成です。

私はデスクトップとラップトップの 2 台の PC を持っています。どちらにも SSH サーバー (bitvise) と SSH クライアント (PuTTY) があります。デスクトップは Windows 10 を実行しており、ラップトップは Windows 7 を実行しています。デスクトップからラップトップへ、およびその逆方向に SSH 接続を確立できるので、両方のコンピューターでポート 22 が開いていることがわかります。正しいですか?

ISP
 |
ZyXEL VMG8324-B10A (forward port 22 to 192.168.1.105)
 | .1  (192.168.1.x)
 |
 +- .105 PC (desktop, W10, SSH server on port 22)
 |
 +- .107 PC (laptop, W7, SSH server on port 22)

DDNS のサービスにより、自宅のネットワークに接続できます。ポート 80 に接続しようとすると、ルーターのログイン画面が表示されるだけで、問題はありません。ポート 8080 に設定された 2 番目のルーターと、ポート 8080 をこの 2 番目のサーバーに転送する元のサーバーでも試しました。問題はありません。

実際のセットアップは次のようになります。

ISP
 |
ZyXEL VMG8324-B10A (forward port 8080 to 192.168.1.2)
 | .1  (192.168.1.x)
 |
 | .2
LinkSys E3000 (configuration available on port 8080)
 | .1  (10.233.1.x)

DDNS プロバイダー経由で LinkSys の構成 (ポート 8080) に接続することに成功しました。問題はありません。そうですよね?

前述のように、192.168.1.105 SSH クライアントから 192.168.1.107 SSH サーバーへの接続、および 192.168.1.107 SSH クライアントから 192.168.1.105 SSH サーバーへの接続を確立できます。

しかし、DDNS 経由で SSH サーバーに接続することはできません。

現在、ZyXEL と LinkSys E3000 (ポート 8080 転送が機能) の構成ページ (ポート 80) を表示できます。ポート 22 では機能しないのはなぜですか?

ZyXEL の転送に関するルールは次のとおりです。

# Status Name      WAN WAN_IP ServerIP      TriggerStart End TranslationStart End Protocol
1 active SSH       wan -      192.168.1.105 22           22   22           22   TCP/UDP
2 active http8080  wan -      192.168.1.105 8080         8080 8080         8080 TCP/UDP

何もおかしなことはありません。PC とラップトップ間の SSH 通信も可能で、何もおかしなことはありません。DDNS から PC への通信はどこで確認すればよいのでしょうか。何を忘れているのでしょうか。

ご提案があればぜひお聞かせください!

編集: 2016 年 9 月 5 日。

問題は解決しました! 以下の回答の助けを借りて、いくつかの構成の問題を解決し、数分前に Android から PC への RDC を接続できました。素晴らしい!

答え1

ネットワーク内にいると書きましたが、次のことが起こります。

DDNSのサービスにより、自宅のネットワークに接続できます。ポート80に接続しようとすると、ルーターのログイン画面が表示されます。

これは、ルーターが NAT ループバックをサポートしていないことを意味します。ポート転送を適切にテストするには、ローカル ネットワークの外部にいる必要があります。たとえば、モバイル ブロードバンド対応の携帯電話を使用してテストすることができます。

ほとんどの消費者向けルーターでは、デフォルトで Ping がフィルタリングされています。これは、もちろん、隠蔽によるセキュリティです。また、問題の診断が不必要に困難になるため、このオプションを無効にすることもできます。

また、
ルーターの内部ソフトウェアも正常に動作していません。外部 IP アドレスを参照すると、Web インターフェイスが開きます。これは非常に危険です。内部ネットワーク構造を知らなければ、攻撃者はクロスサイト スクリプティングなどを使用してルーターを制御できます。

答え2

「デスクトップからラップトップへ、またその逆方向に SSH 接続ができるので、両方のコンピューターでポート 22 が開いていることがわかります。正しいですか?」

はい。これは、SSH サーバーが実行中であり、ソフトウェア ベースのファイアウォール (どちらのマシンでも) がそのトラフィックをブロックしていないことを示しています。

これは、別のネットワークから SSH で接続できるという意味ではないことに注意してください。Windows ファイアウォールでは、ネットワークが「プライベート」、「パブリック」、または「ゲスト」のいずれであるかに応じて、異なるルールが適用されます。したがって、ソフトウェア ファイアウォールが 1 つの接続を許可しているからといって、別の接続が機能するとは限りません。これが問題の原因である可能性が高いと言っているわけではありませんが、そうである場合、よく考えないと検出が非常に難しくなる可能性があります。

また、「開いているポート」が何であるかも理解しておいてください。ここでは、TCP ポート番号と UDP ポート番号について言及しています。これらの「ポート」は単なる数字です。「ポート」が開いているということは、そのポートに接続できることを意味します。

したがって、誰かがあなたの家の IP アドレスに SSH リクエストを送信しようとすると、ISP はそのトラフィックを建物内のルーターに渡します。結果的に接続が成功した場合、ポートは開いています。

ルータがポートを開いた状態でトラフィックを処理する方法は 2 つあります。

  • そうした方法の 1 つは、ルータがそのポートに応答するプログラムを実行することです。したがって、ポート 22 の場合、ルータは通常 SSH サーバーを実行していることになります。(また、ポート 80 の場合、ルータは通常 HTTP サーバー (「Web サーバー」と呼ばれることが多い) を実行していることになります。)

  • もう 1 つの方法は、ルーターがトラフィックを別のデバイスに渡すことです。これは通常、別のサブネット上のデバイスにトラフィックを送信することによって行われます。デバイスがこれを行うと、トラフィックが「ルーティング」されます。そのため、これらのデバイスは「ルーター」と呼ばれることがよくあります。

2 番目のアプローチが機能するには、ルータがトラフィックの送信先となるシステムを認識する必要があります。これは、「ポート転送」と呼ばれるプロセスを使用して実行できます。「ポート転送」で実際に必要なのは、トラフィックが到着すると予想されるポート番号と、トラフィックが送信されるシステムをルータに伝えることだけです。

さて、ルーターの設定を確認すると、「ポート転送」セクションが空白になっていることに気がつくかもしれません。では、その場合、SSH をルーティングするにはどうすればよいでしょうか。多くのルーターには、「非武装地帯」と呼ばれる設定セクションがあり、多くの場合「DMZ」と略されます。この DMZ の動作は、実際にはポート転送の特別なルールです。ルーターが使用するコンピューターを指定すると、ルーターはすべてのポートをそのコンピューターに送信します (「ポート転送」セクションでより具体的なルールが指定されている場合を除く)。ほとんどのルーターは、DMZ をポート転送セクションに配置しないのが普通だと思います。おそらく、DMZ 設定によって、ルーターがそれらのポート以外の IP トラフィックを転送する可能性があるためでしょう。

一般的に、ポート 22 の着信トラフィックに対して実行できることは 1 つだけです。つまり、シアトルのオフィスからのトラフィックをラップトップに送り、東京からのトラフィックをデスクトップに送るなど、複数の操作を実行することは可能だと思います。ただし、このような複雑な設定は一般的ではありません。より一般的なのは、ポート転送で別のポート (たとえば 2222) を他のマシンに送信し、そのマシンを非標準ポートでリッスンさせることです。

(または、ルーターで何らかの変換を実行して、ポート 2222 の着信トラフィックを他のマシンの標準ポート 22 にリダイレクトします。ただし、トラフィックを受信するマシンは、ポート 2222 が使用されたことを知る必要さえありません。このような情報を隠すと、ログの有用性が低下する可能性があり、ルーターがこのような変換を実行していることを覚えておく必要があります。代わりに、ポート 2222 をリッスンするだけで、状況はより明確になることがよくあります。)

ICMP (ping および複数の traceroute 実装で使用) は、TCP ポートまたは UDP ポートを使用しないことに注意してください。(ICMP は IP の上にあります。ただし、IP は OSI ネットワーク モデルの「レイヤー 3」を使用しますが、ICMP は「レイヤー 4」プロトコルを区別する典型的な会話追跡機能を提供しないため、実際には OSI モデルの「レイヤー 4」にあるプロトコルとは言えません。)

したがって、ルーターでポート 22 を開いても、必ずしも両方のマシンが SSH トラフィックを取得できるわけではないことがわかります。

ZyXELにはおそらく2つのIPv4アドレスがあることを理解してください(インターネットがIPv4を使用している場合)。1つは192.168.1.1です。このアドレスは、次のアドレスに記載されているため、私たちに伝えても問題ありません。RFC1918 の翻訳もう一つはパブリックアドレスです。このアドレスは変更されるようです(DynDNSを使用しているため)。このアドレスは教えないでください。(会話では、"203.0.113."で始まると仮定できますが、これは実際には例やドキュメント用に予約されているアドレスのセットです。RFC 5735 ページ 5

ダイナミック DNS を使わずに、ISP から静的 IP を取得する方が簡単かもしれません。私が住んでいる地域 (米国) には、リクエストに応じて (顧客に) 静的 IP を無料で提供できる ISP があります。料金を請求される可能性があります (その場合は、/29 の価格も尋ねてください。/29 は 8 つのブロックで、そのうち 5 つは通常顧客が使用できます)。これは、ダイナミック DNS のルートが機能しないことを意味するのではなく、検討すべき別のオプションを提示しているだけです。

DDNS サービスを使用すると、自宅のネットワークに接続できます。ポート 80 に接続しようとすると、ルーターのログイン画面が表示されるだけで、問題はありません。

ポート80に接続するときに使用するIPアドレスについては言及されていません。しかし、DDNSの使用について言及した直後にそのことを述べたので、パブリックIPアドレスの使用について言及しているように思われます。もしそれが事実であれば、ダニエルBの回答これは非常に有効な警告です。消費者向けルーターは、Web インターフェイスのセキュリティが不十分なことで有名です。そのため、Web インターフェイスには有線 LAN 接続のみでアクセスできるようにするオプションを探してください。(インターネットからの接続も Wi-Fi からの接続も信頼しないでください。)

関連情報