如何使linux與windows 搭配使用



贊助商連結


kuohal
2008-03-30, 11:34 AM
小弟最近使用Linux 架DNS ,用Windows 2003 架FTP,但問題來了, 要怎麼搭配使FTP在DNS上被找到?

贊助商連結


linux_xp
2008-03-30, 05:02 PM
樓主的問題敘述不夠清楚,但猜測是內部解析的問題

參考 "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 設定即可

kuohal
2008-03-31, 03:11 PM
大大謝謝你,不過小弟的windows 2003 是不加入任何網域,是workgroup,這樣在linux dns有辦法作查詢嗎?

linux_xp
2008-03-31, 04:12 PM
大大謝謝你,不過小弟的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
都是隨意控制囉,只是正向解析檔資料改一改而已

kuohal
2008-03-31, 04:49 PM
抱歉小弟描訴不清楚,小弟的意思是.用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 ?

linux_xp
2008-03-31, 06:28 PM
抱歉小弟描訴不清楚,小弟的意思是.用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 ?

假設 IP 是 11.22.33.44
且只有一個 Public IP

正解檔 named.xxx.idv.tw


$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,可以都設 A 紀錄上去

在單一 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 這一項而已

kuohal
2008-03-31, 07:09 PM
大大再次謝謝你,這樣我大概知道了,不過小弟還有個疑問,就是假如有用IE或FTP軟體打ftp://ftp.xxx.idv.tw,而不是打IP, 這樣的話也是有辦法對到我的win 2003嗎?

linux_xp
2008-04-01, 12:23 AM
大大再次謝謝你,這樣我大概知道了,不過小弟還有個疑問,就是假如有用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,實際上就是讓閘道器把連線轉進來
閘道器等於是接線生這樣子

kuohal
2008-04-01, 04:34 PM
大大謝謝你,就如你所說我對DNS概念沒有完全懂,還告訴我這麼多概念.