web-dev-qa-db-ja.com

同じアドレスでネットワークの外部と内部からルーターの背後にあるWebサーバーにアクセスします

外部のパブリック静的IPアドレスを持つルーターがあり、ルーターの背後に静的IP(内部アドレス)を持つWebサーバーがあります。

ポート80をWebサーバーに転送するようにルーターで構成しましたが、外部からパブリックIPにアクセスすると、その機能が動作します。ネットワーク内からアクセスしようとすると、ルーターインターフェイスのログインページが表示されます。

ネットワークの内外から同じアドレス\ URLでWebサーバーにアクセスする方法が必要です

1
Netanel Stern

質問へのコメントで示唆されているように、いくつかのオプションがあります。

  • ルーターがサポートしているかどうかを確認してください NATヘアピニング (NATループバックまたはNAT @DavidPostillによるリフレクション)とも呼ばれます)有効にする必要があります(@AFHごと)。

  • ルーターがヘアピニングをサポートしていない場合は、サポートしている新しいルーターを購入してください。この機能は、現代の消費者向けルーターでは半一般的ですが、新しい購入を行う前に、少し調査を行うことをお勧めします。

  • ヘアピニングを可能にするTomato、DD-WRT、OpenWRTなどのLinuxベースのファームウェアでルーターをアップグレードできる場合があります(ただし、これは非常に技術的な取り組みである可能性があります)。

  • @SpiderPigが提案しているように、内部ネットワーク上に独自のプライベートDNSサーバーをセットアップできます。このルートはもう少し技術的です(ヘアピニングを有効にできる場合は不要です)が、おそらく2つの技術的ソリューションの中でより安全です。

プライベートDNS要件

ネットワーク構成ごとに明らかに異なる手順がありますが、最後のソリューションでヘアピニングの欠如を回避するための原則は同じです。

  • ドメインの外部バージョンを、そのドメインの内部バージョンのサービスを直接提供しないDNSサーバーで構成します(レジストラまたはサードパーティサービスによって提供されるDNSなど) as Namecheap FreeDNS )。

  • ドメインをローカルで処理する内部ネットワーク用に別のDNSサーバー( ISC BIND など)を構成します。つまり、そのサーバー上にドメインのエントリを作成し、それを正しい内部WebサーバーIPに向けます。その後、内部コンピューターでこのローカルDNSサーバーをドメイン解決に使用することができます。

この設定が機能する理由は、非内部クエリが1つの(外部)DNSプロバイダー(パブリックIPを持っている)を経由し、内部クエリが2番目(つまり、プライベートIPを持つローカルDNSサーバー)を経由するためです。

「通常の」ドメインに加えて、このオプションは多くの「ダイナミックDNS」プロバイダーでも機能する可能性が高いことを言及する価値があります(プロバイダーが最初の要件を自動的に満たします)。


Namecheap FreeDNSとBINDは現在無料であるため、非常に費用対効果が高いことに注意してください。


BINDの基本

制御していないDNSサーバーを使用するようにレジストラでドメインが構成されていると仮定します。この場合、上記の最初の要件を満たすために追加の手順を実行する必要はない可能性があります。

2番目の要件(ローカルネットワークのセットアップ)に関して、私は ローカルドメインを持つWindowsでBINDを動作させる の基本についてかなり徹底的な説明を書きました。

ローカルDNSサーバーとして使用するコンピューターの選択に関して、唯一の実際の要件は、それが一貫してオンになっていることです(ドメイン解決に必要になるため)。その規定の外では、ネットワーク上のどのコンピューターでも(Webサーバー自体でも)ほとんど選択できます。

回答メモ

上にリンクされた私の答えでは、無視できるスポットが確かにいくつかあります(主にWAMPのもの)。それ以外の場合、詳細な設定は、ドメインにローカルで必要な基本的な設定です。あなたの状況では、変更する必要があるいくつかの事柄は次のとおりです。

  1. 「free.goodies」サンプルドメインを独自の(外部)ドメインに置き換えます。

  2. その他のその他の項目がセットアップと一致していることを確認してください(インストールパス、IPアドレス、ファイル名、rndcシークレットなど)

  3. 「named.conf」の「forwarders」の行のコメントを解除してください(つまり、ハッシュ番号を削除してください)。

          forwarders { 8.8.8.8; 8.8.4.4; };
    

ローカルネットワークが非ローカルドメイン(つまり、ドメイン以外のインターネットの他の部分)に接続できるようにするには、最後の項目が絶対に必要であることに注意してください。リストされている特定のIPはそのまま機能します(これらはGoogleのパブリックDNSサーバーです)が、他の任意のIP(ISPのIPを含む)に置き換えることもできます。

ローカルDNSサーバーを使用するようにローカルコンピューターとルーターを構成する必要があります(リンクされた回答の終わり近くで詳しく説明されています)。

Linuxノート

Linuxを使用している場合は、もちろんISC BINDWebサイトからファイルをインストールすることを選択できます。ただし、別の方法として、Linuxの多くのディストリビューションには、BINDがすでにインストールされているか、それぞれのリポジトリから入手できます。

ローカルDNSサーバーに関する限り、さまざまなディストリビューション向けの優れたネットチュートリアルがいくつかあります。ただし、原則は同じです。ローカルネットワークから完全にドメインにアクセスするようにローカルDNSサーバーを設定します(インターネットは必要ありません)。

警告

  • ドメインへのローカルアクセスが成功しても、必ずしも外部からアクセスできるとは限りません。ルーターを使用しないネットワーク(データプランを介して接続されている電話など)を使用して、外部アクセスを常にテストする必要があります。

  • DNSサーバーの実行、特に。com。netなどのTLDを使用したドメインのエミュレートには潜在的なリスクがいくつかあります。 (ここで概説されているように)そうすることは可能ですが、潜在的な落とし穴を調査することを検討することをお勧めします。

1
Anaksunaman