%20%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%20.png)
私はISPから提供されたHitronルーターを持っており、LAN上のデバイスにポートを転送するように設定しています。使用済みルーターのWAN IPを経由してLAN上のマシンからLAN上のマシンにアクセスできるようにします。例:
curl https://$(curl icanhazip.com)
実際には、ルーターの背後にサーバーが待機していると仮定すると、HTTPS 接続が確立されます。
例:
client (192.168.0.42) ---> router (192.168.0.1) ---> dns for me.example.com, returns my WAN IP - same thing curl icanhazip.com returns. Example 203.0.113.42
client (source:192.168.0.42, dest:203.0.113.42:443) ---> nothing. Hangs forever. Or until timeout.
以前はそれでうまくいきました。
現在、ルーターには 192.168.0.1 のゲートウェイ経由でのみアクセスできますが、これはルーターに直接アクセスするだけで、ルーターの背後にあるマシンにはアクセスできません。LAN 上のサーバーに接続する場合は、IP を直接使用する必要があります。
でも奇妙なのは、私がない私の Wi-Fi に接続すると (文字通り他のどのネットワークでも)、外部 IP に接続でき、トラフィックは正しく転送されます。
client(source: 192.0.2.42, dest: 203.0.113.42:443) ---> router ---> web server (192.168.0.42)
パケットがドロップされている場所を特定することは可能ですか? ルーター自体で何らかの情報を探してみましたが、ダメでした。また、Twitter で ISP に問い合わせましたが、あまり役に立ちませんでした。ping と traceroute を使用しましたが、ルーターのパブリック IP への接続の試みはどちらも失敗しました。また、Wireshark を起動して、ping パケットの送信やその他のトラフィックの試みを確認しましたが、これを使用して「ああ、これらのパケットは間違いなく X でドロップされています」と判断する方法があるかどうかはわかりません。また、ルーター レベルでファイアウォールを完全に無効にし、少しでも効果があると思われる設定をすべて変更しました (ルーターをひどく壊してハードリセットする必要に迫られたことさえあります。IP パススルーの設定だったと思います)。
パケットがルーターによってドロップされているか、ISP レベルでドロップされているかを確認することは可能ですか? もし可能であれば、どのように確認すればよいですか?
編集
さらに楽しく興奮するために、どうやらこれはのみ下位ポートに適用されます。正確な範囲はわかりませんが、上位ポートでも接続が許可される場合があります。
答え1
問題はヘアピン NAT が正しく構成されていないことにあるようです。これは、一部の SOHO ルーターでは自動的に正しく構成されますが、他のルーターでは特定のルーティングと NAT ルールが必要になります。