綁定沒有按預期工作。可能的錯誤配置
我有兩個樹莓派——一個用作媒體播放器,另一個用作家庭伺服器(我稱之為插頭)。
在外掛中,我安裝了幾個具有 Web 界面的應用程序 - SickBeard(電視庫)、CouchPotato(電影庫)、Sabnzbd(Usenet 下載器)和傳輸(torrent 下載器)。我在前面使用 NGINX 作為代理。所以我的基本想法是,任何指向我的“Plug’s IP”的域都將路由到 NGINX,NGINX 根據使用的域名,將呼叫路由(代理)到相應應用程序的 Web 界面。例如,dl.plug.example.com(我不想透露域名)將帶我到傳輸網路界面,而 usenet.plug.example.com 將帶我到 Sabnzbdplus 網路界面,pi.plug.example .com 將指向我的其他 PI(用作媒體播放器)的“遠端”界面,modem.plug.example.com 將指向我路由器的管理頁面。它確實按預期工作。
現在我安裝並配置了 BIND,然後將我的調製解調器設置為使用 Plug 的 IP 作為 DNS 伺服器,以便所有請求都通過 Plug 的 BIND 安裝。我的目標是:
- 從連接到我的家庭網路的任何設備,.plug.example.com 應該將我帶到通過本地 IP 託管應用程序字節的相應機器。意思是,如果我在家並且在手機瀏覽器上輸入 dl.plug.example.com,它應該會路由到 192.168.1.x。如果我從家外訪問,它應該路由到我的公共 IP。
- 對不在我的網路中託管的任何其他域名的任何請求,我希望 BIND 通過 Google DNS (8.8.8.8) 並解決它。
公共 IP 部分有效。意味著當我從網路外部訪問時,它確實有效。當我從內部網路嘗試時 - 它會波動。也就是說,有時它會通過我的內部 IP 進行路由,但有時它會帶我通過整個網路(通過公共 IP 進行路由)。這是我試圖解決的一個問題。
另一個問題是有時 plug.example.com 根本無法解決。通過 BIND 已啟動並執行。當我通過域名從終端進行 SSH 時,它有時無法解析,但如果我使用 IP,它可以順利執行。所以我猜這是我的 BIND 配置的一些問題。根據我的調製解調器配置,所有 DNS 流量都通過安裝 BIND 的外掛。所以這不應該發生。
我已將我的 BIND 配置上傳到: https ://drive.google.com/file/d/0B8TuY1aaTEhmbXRGVUkwbUh1bVU/view?usp=sharing
第一的
這是我工作的 Gentoo 安裝中的 Hosts 文件。我已經刪除了實際的路由說明,以支持評論。更多關於路由的資訊:
# /etc/hosts: Local Host Database # # This file describes a number of aliases-to-address mappings for the for # local hosts that share this file. # # In the presence of the domain name service or NIS, this file may not be # consulted at all; see /etc/host.conf for the resolution order. # # Imaginary network. #10.0.0.2 myname #10.0.0.3 myfriend # # According to RFC 1918, you can use the following IP networks for private # nets which will never be connected to the Internet: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # In case you want to be able to connect directly to the Internet (i.e. not # behind a NAT, ADSL router, etc...), you need real official assigned # numbers. Do not try to invent your own network numbers but instead get one # from your network provider (if any) or from your regional registry (ARIN, # APNIC, LACNIC, RIPE NCC, or AfriNIC.)
問題
請注意關於專用網路的最後一個評論塊。大多數人在為他們的專用網路配置網路服務時忘記的是,有一條假想的線將他們的內部網路(RFC 1918和RFC 6761涵蓋的那些 IP 地址)和外部網路(用於所有實際目的的 Internet)分開,其中域 IP 地址主要由Internet 編號分配機構(即 IANA)維護和更新。這也是公認的做法,因為 IANA 負責DNS 根區, IANA DNS 伺服器對域解析到何處擁有最終決定權。將您的 DNS 伺服器想像成樹的頂部分支。如果您的伺服器無法解析主機,您的請求將沿著樹向下發送到後續分支。每個分支的大小都在增長 樹的底部是 IANA DNS 伺服器。
解決方案
由私有網路的維護者/創建者來處理私有網路內部的路由。在 Linux 中,這是通過更新主機文件來完成的,該文件通常儲存在
/etc/hosts
請注意,OP 通過安裝和配置 BIND 只解決了一半的問題。BIND 正確地將名稱路由到主機和主機:埠,反之亦然。在大多數伺服器中,它的眾多用途之一是將外部 DNS 區域(一個在您的專用網路之外)綁定到內部 DNS 區域。有關這方面的更多資訊,請參閱Linux DNS 伺服器 BIND 配置。當以下某些部分有保證時,我也會參考該連結。由於內部路由由不同的規則 (RFC 1918/6761) 管理,因此必須設置靜態路由,以便地址到名稱的映射在 BIND 中工作。如果
etc/hosts
沒有為此配置文件,則綁定映射只知道在內部路由請求,而不知道將請求路由到哪裡。為了解決這個問題,我們必須添加我們的本地映射(假設 OP 已經正確設置了外部 BIND映射):# IPv4 and IPv6 localhost aliases 127.0.0.1 bedroom-gentoo.myISP.net bedroom-gentoo localhost ::1 bedroom-gentoo.myISP.net bedroom-gentoo localhost
然後是我們的本地解決方案(在 OP 的情況下)
192.168.1.x sickbeard.plug.example.com sickbeard.plug sickbeard 192.168.1.x dl.plug.example.com dl.plug download # Add others as needed.
請注意,上面的專用網路解析可以解析為FQDN,只加上主機名。OP 和其他人可以針對所需的行為進行相應的調整。我發現在專用網路中使用 FQDN 比記住所有創建的主機名更容易。
第 2 步 - 可選但首選
我在下面添加連結,因為讀者會在大多數與網路設置相關的答案中看到這個網路術語。如果您是新來的,請閱讀。如果你已經有一段時間了,你可能想跳過。
- 動態主機配置協議 - RFC2131
- DHCP -簡稱維基百科
看不看就知道,DHCP 做的非常好。從這裡到永恆,它的主要功能將是提供地址,無論是公共的還是私人的。DHCP 不擅長的是記住它給出的地址實際上可能屬於任何類型的伺服器。在 OP 和許多其他讀者的情況下,情況就是如此。這種情況在這裡適用,因為我們將 IP 地址“軟體保留”
192.168.1.x
到plug
設備。為了確保 DHCP 在重新啟動/重新啟動或斷電後不會愚蠢地覆蓋伺服器的地址,應該在路由器中使用 MAC 地址綁定。我從我的摩托羅拉衝浪板上截取了以下螢幕截圖,但我在大多數主要路由器品牌(D-LINK、NetGear、LinkSys/Cisco)中都看到了相同類型的輸入螢幕。此外,有些人可能將其命名為 Reserve,有些人將其命名為 Binding,有些人將其命名為 MAC Binding:在 OP 的情況下,伺服器的 MAC 地址
plug
將進入第一個框,/etc/hosts
文件中的最後一個八位字節 x 將進入 IP 地址框。我相信主機名是自動填寫的,但etc/hosts
如果需要,您可以使用名稱。這將確保我們永遠不必修改主機文件,因為我們正在強制 DHCP 分發靜態 IP 地址。另一方面,這可能會略微增加流媒體服務的記憶體。我以前對我的 Roku 設備使用過相同的概念。為了娛樂