web-dev-qa-db-ja.com

NATループバックの問題を回避するためのDNSサーバーの実行

最初に私はおそらく問題に関してインターネット上にあるすべてを読んだと言いたいです。

そして問題は、同じネットワークにいる場合、doc.selfhost.eu経由で自分のクラウドにアクセスできないことです。ただし、ネットワークの内部から内部IP(192.168.2.200)を介して、ネットワークの外部からdoc.selfhost.euを介してアクセスできます。

私のセットアップ:Linux Mint 17.2 Cinnamonを実行しているホームサーバー。これは、メディア用であり、owncloudを実行することになっています。

サーバーは、NATループバックをサポートしないSpeedport723vに接続されています。ポート80と443が転送され、ダイナミックDNSの場合、ルーター設定で入力したselfhost.deにアカウントがあります。 。

Windows 7マシン(サーバーにアクセスしようとしている)で、DNSとして192.168.2.200(サーバーの内部IP)を入力しました。

Mintでネットワークマネージャーを無効にし(実際には削除しました)、現在はインターフェイスを使用しています。

解決策は、すべてのクライアントのhostsファイルを変更することではありません(ルート化されていないAndroidでは、これは不可能です)。

質問:

  1. 外部IPを介して内部ネットワークから自分のクラウドにアクセスするには何を変更する必要がありますか?

/ etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.200
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers doc.selfhost.eu 8.8.8.8

/ etc/resolve.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

/ etc/dnsmasq.confで、これが私が追加した唯一のものです:

listen-address=127.0.0.1
listen-address=192.168.2.200
address=/doc.selfhost.eu/192.168.2.200

/ etc/dnsmasq.d/doc.selfhost.eu(これを作成するにはどこかを読んでください)

address=/doc.selfhost.eu/192.168.2.200

/ etc/hosts

127.0.0.1       localhost
127.0.1.1       doc-desktop
192.168.2.200   doc.selfhost.eu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/ var/www/owncloud/config/config.phpのOwncloud設定

'trusted_domains' =>
  array (
0 => '192.168.2.200',
1 => 'doc.selfhost.eu',
  );

Apacheの設定/ etc/Apache2/Apache2.confでは、すべてがかなり標準的です。追加しただけです:

ServerName doc-desktop

/ etc/Apache2/sites-enabled/owncloud.confsites-availableに変更はなく、リンクもありません。

<VirtualHost 192.168.2.200:80>

#### Redirect to port 443 ###
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_Host}/$1 [NC,R,L]
#### End of Redirection configuration ###

DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

</VirtualHost>

<VirtualHost 192.168.2.200:443>
####Configuration for SSL #####
SSLEngine on
SSLCertificateFile /etc/Apache2/ssl/Apache.crt
SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
#### End of SSL Configuration ####
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

出てきた場合。サーバーから:

Dig doc.selfhost.eu

; <<>> Dig 9.9.5-3ubuntu0.5-Ubuntu <<>> doc.selfhost.eu
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49046
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;doc.selfhost.eu.          IN      A

;; ANSWER SECTION:
doc.selfhost.eu.   0       IN      A       192.168.2.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct 26 02:35:15 CET 2015
;; MSG SIZE  rcvd: 54

ネットワーク内のクライアントから(cygwinを使用):

Dig doc.selfhost.eu

; <<>> Dig 9.10.3 <<>> doc.selfhost.eu
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29482
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;doc.selfhost.eu.          IN      A

;; ANSWER SECTION:
doc.selfhost.eu.   0       IN      A       192.168.2.200

;; Query time: 31 msec
;; SERVER: 192.168.2.200#53(192.168.2.200)
;; WHEN: Mon Oct 26 02:37:32     2015
;; MSG SIZE  rcvd: 54

これがすべてだといいのですが。ありがとう。

この質問はトピックから外れていたのでここから来ます:

https://stackoverflow.com/questions/33337258/running-dns-server-to-circumvent-nat-loopback-issue

2
doc

外部ソリューション

外部IPを介して内部ネットワークから自分のクラウドにアクセスするには何を変更する必要がありますか?

残念ながら、NATループバック( ヘアピニング とも呼ばれます))をサポートしていないホームルーターに個人的に遭遇したことは一度もないので、アクセス方法について具体的な回答を提供することはできません。何でもexternal

その他の解決策


DNSベースのソリューション

人間が読めるドメインを使用して内部ネットワークからメディアサーバーにアクセスするよりも目標が複雑ではなく、BIND DNSを構成する意思がある場合は、 疑似ドメイン をネットワークで利用できるようにすることができます。上手。

この疑似ドメインにより、内部ネットワークのserver.ownのような場所にあるローカルサーバーにアクセスできる可能性があります。この偽の トップレベルドメイン (TLD)ex.ownは、基本的には何でもかまいません。

NATループバックの問題でもこれは機能するはずです。

疑似ドメインの使用

最も簡単な配置は、ネットワーク上の1台のコンピューターにDNSを提供させることです。この配置の最大の潜在的な欠点は次のとおりです。

  • ルーターがBINDを実行しているサーバーを指していることを確認する必要があります。

  • これ(およびネット接続)が機能するには、DNSサーバーとして機能するコンピューターがオンになっている必要があります。

 Router DNS Entries Pointing To Local DNS Server

また、この場合はそれほど重要ではない可能性がありますが、内部ネットワークと外部ネットワークの両方へのアクセスを提供するBINDサービスを実行することはリスクを伴う可能性があります。一般に、何をしているのかわからない限り、notパブリックTLD.euのように模倣する必要があります。他のものではなくdoc.selfhostプレフィックスを保持したい場合は問題ありませんが、別のunused拡張子(例:doc.selfhost.own)を選択する必要があります。 。

ApacheとOwncloud

有効にしたら、クエリに適切に応答して適切なコンテンツ(Owncloudなど)を提供するために、Apache(疑似ドメインはVirtualHostになる可能性があります)とOwncloudを設定する必要があります。

実例

以下は、疑似ドメインサービスを提供するためにBINDのメインファイルを構成する方法のいくつかの実用的な例です。

私はnotであり、BIND自体を機能させるために必要なすべてのことをカバーしているため、ここで明示的に言及されていない追加の手順がいくつかある場合があります。また、これらの例は、技術的には最近のバージョンのWindows上のBIND 9 (BIND 9.10+)用です。

db.rev.10.txtおよびdb.example.own.txtの実際の内容は、Windowsと* nixの間で変更する必要はありません。より大きな障害は、named.confエントリがWindows以外のプラットフォームの適切なファイルに表示され、db.rev.10.txtおよびdb.exampleであることを確認することです。 own.txtは正しい* nixディレクトリに表示されます。


Ubuntuのリファレンス: Ubuntuで内部DNSサーバーをセットアップするための7つの簡単なステップ

Redhatベースのディストリビューションを使用する場合、Debian/Ubuntu/Mintとの間に微妙な違いがあることに注意してください。


これらすべてに問題がないと仮定して、ここに基本的な作業例を示します。重要な場合、これは基本的にキャッシュDNS構成です。

  1. BINDをセットアップして機能させます。待ちます。 =)

  2. named.conf—編集named.conf。 (おおまかに)以下のように。 Windowsでは、すべてのエントリは「named.conf」(BINDの「etc」ディレクトリにあります)にあります。最新の* nixでは、これらのエントリは多くの場合、複数のファイルに分割されます。また、必要に応じて、適切な「rndc-key」および「control」エントリを含めるようにしてください。

    ex。 named.conf

    # Our basic options -- where do we find our zone files, etc.?
    # On *nix, options likely need to go in "named.conf.options"
    
    options {
        directory "Path\to\zones";      # On *nix it's / not \ of course
        allow-transfer { none; };       # disable zone transfers by default
    
        # We restrict access to recursion to avoid security issues, etc.
        # You can change IPs as required.
        #allow-recursion {192.168.1.0/24;}; 
    
        # "localnets" is a special ACL in BIND
        allow-recursion {"localnets";};
    
        # We are using named.root, so forwarders are disabled.
        # forwarders { 8.8.8.8; 8.8.4.4; };
    };
    
    # Current versions of named.root/db.cache -- ftp://ftp.internic.net/domain/
    # *nix likely uses named.root (Redhat/Fedora) or db.cache (Deb/Ubu/Mint) 
    # This file does need periodic updating (perhaps twice a year)
    
    zone "." {
        type hint;
        file "named.root";      # On Windows, place in your BIND "zone" directory
    };
    
    # Local domain where "example.own" is whatever domain you want
    # On *nix, these zone definitions likely need to go in "named.conf.local"
    
    zone "example.own" IN {
        type master;
        file "db.example.own.txt";   # On Windows, place in your BIND "zone" directory
        allow-transfer { none; };
    }; 
    
    # Local loopback interface so our local domains work
    # The digits are the local lan prefix in reverse
    # Note that /16 subnets use only two digits e.g. 128.10 for 10.128.xxx.xxx
    
    zone "0.0.10.in-addr.arpa" IN {
          type master;
          file "db.rev.10.txt";     # On Windows, place in your BIND "zone" directory
          allow-transfer { none; };
    };
    
    # ### Any "rndc-key" and "control" statements go here ### 
    
    # End of named.conf
    
  3. db.rev.10.txt—リバースゾーンファイル。フォワードゾーンファイルで参照されている各物理サーバーのPTRレコードを追加します(例:db.example.own.txt)。この例では、10.0.0.3にある単一のメディアサーバーとしてexample.ownを呼び出したいと想定しています。

    ex。 db.rev.10.txt

    ; BIND reverse data file for a local loopback interface
    ; The domain used should be a listed 'zone' in named.conf 
    
    $TTL 86400                ; Default TTL
    @   IN SOA  example.own.    admin.example.own. (
                 2015071301      ; serial
                 10800           ; Refresh period
                 3600            ; Retry interval
                 604800          ; Expire time
                 86400 )         ; Negative caching TTL
    
    ; The number before PTR is the last octet of the IP address
    ; for the device to map (e.g. 10.0.0.3). For /16 subnets,
    ; this is the last two digits e.g. "8.9" for "128.10.in-addr.arpa" (10.128.9.8)
    
        IN  NS  ns1.example.own.
        IN  NS  ns2.example.own.
    3   IN  PTR example.own.
    
  4. db.example.own.txt-フォワードゾーンファイル。この例では、10.0.0.3にある単一のメディアサーバーとしてexample.ownを呼び出したいと想定しています。もちろん、MXとCNAMEを追加することもできます。サーバーを追加する場合(例:media IN A 10.0.0.4)、適切なPTRレコードもリバースゾーンに追加します(例:db.rev.10.txt4 IN PTR media.example.own

    ex。 db.example.own.txt

    ; We are using our reverse DNS to provide name server services
    ; Enables use of http://(www).example.own on our local network
    
    $TTL 86400              ; Default TTL
    @   IN SOA  ns1.example.own.    admin.example.own. (
                2015071322  ; serial
                10800       ; Refresh period
                3600        ; Retry interval
                604800      ; Expire time
                86400 )     ; Negative caching TTL
    
    @       NS  ns1.example.own.
    
    ns1             IN A        10.0.0.3        ; This entry is ABSOLUTELY NECESSARY - Use an IP
    ns2             IN A        10.0.0.3        ; Secondary Name Server Prefix/IP (Required 2nd Name Server - backup - IP or domain)
    
    example.own.    IN A        10.0.0.3        ; A Record for the basic domain name
    www             IN A        10.0.0.3        ; A Record for the www prefix
    

オッズとエンド

  • 順方向ゾーンと逆方向ゾーンの両方でシリアルを変更するたびに、必ず更新してください。

  • 同様に、BIND構成ファイルに変更を加えた後は、必ずバインドを「再ロード」してください。 一般的な考えとして、いじくり回す前に、オリジナルもバックアップすることをお勧めします。

  • すべてが正しく設定されていると仮定すると、ネットワーク上のすべての対応デバイス(Androidを含む)shouldは、追加の構成なしで(つまり、通常のネットのように)example.ownにアクセスできます)。

  • Chromeを使用している場合は、アドレスバーに末尾のスラッシュを追加する必要があることに注意してください(例:example.own/)。そうしないと、Google検索にリダイレクトされる可能性があります。 この要件は、将来のバージョンでは変更されない可能性があります

  • より伝統的なセットアップについては、 Ubuntu および Centos 7(Redhat) に関するこれらの2つの記事は、2つの間のBINDの構成におけるいくつかの違いを示しています。

2
Anaksunaman

真新しい180ドルのLinksysWRT1200ACルーターを購入して以来、私は先月この問題に苦しんでいます。また、外出先からホームネットワークにアクセスできる動的IPアカウントも持っています。あなたと同じように、私はたくさんの研究をしました。しかし、私のサイトがオンラインであることを確認するのと同じくらい簡単なことは今では不可能です。これらのサイトを表示できるように、Googleクラウド上にPythonプロキシサーバーを作成しましたが、不明な理由で最終的に機能しなくなりました。

私の環境はWindowsですが、問題は同じです。私の心からのアドバイスは、単に新しいルーターを購入して、多くの欲求不満と悲惨さを自分で救うことです。私は今自分で買い物をしていますが、NATループバックをサポートする新しいルーターを見つけるのは非常に難しいことがわかっています。それ以外の方法でこの問題を回避する方法を発見していません。頑張ってください。 。

0
Stephen Falken