小弟最近使用Linux 架DNS ,用Windows 2003 架FTP,但問題來了, 要怎麼搭配使FTP在DNS上被找到?
小弟最近使用Linux 架DNS ,用Windows 2003 架FTP,但問題來了, 要怎麼搭配使FTP在DNS上被找到?
樓主的問題敘述不夠清楚,但猜測是內部解析的問題
參考 "bind9 view" 功能,搜尋 google 就能找到資料
view 視界,是 bind9 的新功能
簡單的說:把解析分成來自「外部要求」和來自「內部要求」,會給於不同答案。
比方說:
外面 internet 的人,和這部 dns 查 ftp.my.com 回 11.22.33.44
內部區網的人和這部 dns 查 ftp.my.com 回 192.168.0.253
查的主機名稱都一樣,但 DNS 根據外部、內部給予不同答案,這樣做有什麼好處?
好處就是避免 NAT 、路由問題,讓內部透過閘道器上網的電腦,不必繞一圈,直接連到內部區網的伺服器。
如果這功能就是你要的,參考看看
named.conf 示範:
正反解析檔,寫法和一般的一樣,檔名需和宣告的相同語法:// named.conf // 以下設定若有路徑,因有 chroot,所以用相對路徑,實際上是在 chroot 中 options { directory "/var/named"; // zone 檔存放位置 dump-file "/var/named/data/cache_dump.db"; // rndc dumpdb 產生檔案位置 statistics-file "/var/named/data/named_stats.txt"; // rndc stats 產生檔案位置 allow-query { any; }; // 允許查詢的位址 allow-transfer { none; }; // 是否允許傳送 zone (slave 用途) }; // rndc.key controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndckey"; }; }; // 定義網路名稱 acl "lan" { 192.168.0.0/24; }; // 供內部查詢用 view "internal" { match-clients { lan; }; // root zone (cache 必要) zone "." { type hint; file "named.root"; }; zone "ftp.my.com" { type master; file "named.ftp.my.com-internal"; }; }; // 供外部查詢用 view "external" { match-clients { any; }; zone "." { type hint; file "named.root"; }; zone "ftp.my.com" { type master; file "named.ftp.my.com-external"; }; };
記得 rndc.key 好像要用一個程式來產生...具體請搜尋教學
view 視界功能,只需在 named.conf 設定即可
大大謝謝你,不過小弟的windows 2003 是不加入任何網域,是workgroup,這樣在linux dns有辦法作查詢嗎?
不太明白你的問題
是:
1. FTP (win2003) 要對外(網際網路)開放,並希望外面的人能從 url 例如:ftp.win2003.cc 查到這台 FTP 的位址嗎?
2.FTP 不對外開放,只是希望內部區網的人,能用打主機名稱,而非 IP 的方式,連到這台 FTP?
-------------------------------------------------
如果是 1. 的話
需去註冊網域 (domain name),美國網域比較便宜一年約 10美金,台灣網域一年約 NT$1,000 元。
或是用「轉址」的方式,有些網站提供免費轉址,但是要掛別人的網域。
然後,如果 FTP 是在內部區網 NAT 裡面(IP 分享器、閘道器下),需要開 port 轉換,或是 DMZ。將外面的連線要求,轉到那台 win2003。
-----------------------------------------------
如果是 2. 的話:
bond9 的 view 做對內查詢即可,對外可省略
因為這台 dns 主機是你的,所以你可以任意設定資料,網域名稱要取什麼都可以,但是只有去查詢它的人才有效。
所以內部電腦,都要設定這台 dns 為第一優先。
Linux named 服務,同時具有快取功能
內部電腦將它設為 dns 第一優先
也就是說,當使用者在網址列不管打什麼東西的時候
第一會去找這台 Linux dns 要解析資料
如果它有資料就直接回報
沒有資料才會繼續往外查詢,並快取資料 24 小時。
例如:
你也可以把 google.com 的正解析 IP,改成 yahoo.com 的 IP
當有人用你的 dns 來解析網址,就會變成他明明是查 google,卻跑到 yahoo....
前提是要有人用你的 dns 當第一優先
當然內部區網內電腦是你管理的,就可以這樣設
把自己架設的 dns 當第一優先,那麼什麼網址,要解析成什麼 IP
都是隨意控制囉,只是正向解析檔資料改一改而已
抱歉小弟描訴不清楚,小弟的意思是.用linux架一台 dns 是對外的 ns.xxx.idv.tw, 用windows 2003 架ftp 也是對外 ftp.xxx.idv.tw但win 2003 是在工作群組workgroup 而不是在網域 xxx.idv.tw裡,電腦名稱ftp,這樣linux dns有辦法讓對外查詢到這台電腦嗎,還是在dns設定ip 對應win2003 ?
此文章於 2008-03-31 04:52 PM 被 kuohal 編輯。
假設 IP 是 11.22.33.44
且只有一個 Public IP
正解檔 named.xxx.idv.tw
※ 如果有多個 Public,可以都設 A 紀錄上去語法:$TTL 1D @ IN SOA ns.xxx.idv.tw. webmaster.xxx.idv.tw. ( 2008033101 ; Serial 8H ; Refresh 4H ; Retry 8D ; Expire 1D ) ; Minimum @ IN NS ns.xxx.idv.tw. @ IN MX 10 mail.xxx.idv.tw. @ IN A 11.22.33.44 ns IN A 11.22.33.44 mail IN CNAME ns www IN CNAME ns ftp IN CNAME ns
在單一 Public IP 的情況下,內部上網一定是透過 NAT
外面進來的連線,首先會到閘道器
在那台閘道器要設「PORT 轉換」或「DMZ」
將連線引導到放在內部區網的 FTP 主機
ftp port 資料 (擷取字 /etc/service )
---------------------------------------------------
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
---------------------------------------------
理論上 DNS 都是直接對外的,那閘道主機大概是那台 Linux
若不是的話(例如是用 IP分享器、路由器),DNS 也要 轉埠 或 DMZ (TCP/UDP 53),以供外面查詢
>>WIN2003 是在工作群組workgroup 而不是在網域 xxx.idv.tw裡...
其實那和電腦主機名稱、工作群組都沒關係
win平台的 電腦主機名稱,工作群組,是用在 netBIOS、smb ...這些內部傳輸用途上面
Internet 上的 TCP/IP 連線,實際上都是 IP,只要打 IP 就會通了
dns 是負責把 domain name 轉成 IP
因為 IP 數字不人性化,人類不易記憶,都記 domain name
但對網路設備、電腦這些機器來說,它們只認 IP,不認網域名稱、電腦名稱、工作群組這些有的沒的,就是只有 IP 這一項而已
大大再次謝謝你,這樣我大概知道了,不過小弟還有個疑問,就是假如有用IE或FTP軟體打ftp://ftp.xxx.idv.tw,而不是打IP, 這樣的話也是有辦法對到我的win 2003嗎?
ftp://ftp.xxx.idv.tw 這個 URL 可以拆成兩部份看
前面的 ftp://、http://、telnet:// 是通訊協定
用途是告訴瀏覽器,此次連線要用什麼通訊協定
後面的 ftp.xxx.idv.tw 是主機位址
只要 DNS 能正確解析網址的 IP,就能連上
(當然你那邊 NAT 轉埠、DMZ 都要設好)
---------------------------------------------------------
其實你的問題,主要是在 DNS 觀念沒有很全
若能想通 DNS 是如何運作,問題即可迎刃而解
談到解析 ftp.xxx.idv.tw
首先假設大部分人都用 168.95.1.1 這個 hinet 的 DNS
當使用者網址打:ftp://ftp.xxx.idv.tw 的時候
他的電腦會先去問 168.95.1.1 (hinet DNS)
ftp.xxx.idv.tw 是誰?IP 多少?
hinet DNS 要如何知道 xxx.idv.tw 這個網域是你的 IP?
其實 hinet dns 不知道
關鍵就是在你註冊網域的時候,會給網域註冊商一個 IP
hinet DNS 會先查它自己的快取
若沒資料 ---> 往 . 根伺服器查(全球 48台)問 tw. 誰管理?
得知答案:twnic 管理的
繼續往 twnic 查 ---> idv.tw. 誰管理的?
得知答案:idv.tw. 仍是 twnic 管理
繼續查 ---> xxx.idv.com. 誰管理的?
呵呵,這裡就是關鍵了,xxx.idv.com. 你管理的! (你的 DNS)
連線繼續來到 你的 DNS,繼續查 --- > ftp.xxx.idv.tw. IP位址為何?
答案就在你 DNS 的正解檔
查到這裡的時候,hinet dns 終於知道 ftp.xxx.idv.tw 的 IP 多少了,然後回報給使用者的電腦
查了老半天,只為了一件事:使用者的電腦需要知道 ftp.xxx.idv.tw 的 IP 多少,因為它等會要用 IP 去連線
簡單的說
人類記網址 (好記),輸入網址
但是電腦機器,是看不懂網址的,機器只認 IP
那麼電腦機器要如何把「網址(網域)」轉成「IP」?
就是透過 DNS 機制
換言之:
網址打 ftp://ftp.xxx.idv.tw
和打:ftp://11.22.33.44
最終都是一樣的效果,差別只在電腦需不需要去查 dns
查到了,瀏覽器實際上仍是用 ftp://11.22.33.44 去連線的
查不到就是 unkonw domain name,無法連線,問題出在 dns
-----------------------------------------------------
再來談一下「轉埠」和「DMZ」
因為不確定樓主是否瞭解,所以提一下,若已經知道,請略過
好比說 BT 下載、電驢,是不要開 PORT(轉埠)下載才會快?
這是為了讓外面的連線,能直接進入那台內部的電腦
又好比「遠端桌面」「遠端控制」、VNC ....之類的
是不是要開 PORT ,或 DMZ,外面才能連到那台電腦?
這也是為了讓外面連線,能直接進入那台電腦
同樣的 ftp 服務...或其它服務
若主機架在區網內,沒有 public IP,就需要轉埠 或 DMZ
因為它沒有 public IP(真實IP) 外面 ineternet 是連接不上的
而透過 NAT 轉埠/DMZ,實際上就是讓閘道器把連線轉進來
閘道器等於是接線生這樣子
大大謝謝你,就如你所說我對DNS概念沒有完全懂,還告訴我這麼多概念.
書籤