作者 主題: 請問NAT內的伺服器的domain name如何與外部統一  (閱讀 9494 次)

0 會員 與 1 訪客 正在閱讀本文。

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
我的伺服器放在NAT內,用轉IP的方式讓外部電腦何以進入(不是用轉PORT的方式),但是卻造成內部電腦要連線,必須用192.X.X.X,而外部用真實IP,造成網址不統一的問題,請問,要如何解決,聽說可以用DNS解決,可是搞了很久,還是宣告投降,請問各位先進,幫我解決,謝謝

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #1 於: 2003-05-27 13:46 »
若您是用iptables的話,可以用iptables解決,下面是port的方式,改一下應該就可以了,想知道什麼原因導致的話,看看"架設NAT"

同一個網路上的Destination NAT

環境:
internal network=192.168.0.0/24

NAT server:
wan ip(eth0)=123.123.123.123
lan ip(eth1)=192.168.0.254

Internal server(www)=192.168.0.253

目的:
在internal network中的end user能以http://123.123.123.123的方式,進入實際為192.168.0.253的www server

iptables solution:

iptables -t nat -A POSTROUTING -d 192.168.0.253 -s 192.168.0.0/24 -p tcp --dport 80 -j SNAT --to 192.168.0.254


iptables -t nat -A PREROUTING -i eth1 -d 123.123.123.123 -p tcp --dport 80 -j DNAT --to 192.168.0.253:80

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #2 於: 2003-05-27 14:15 »
謝謝ericshei的指教
但是,我的問題是NAT內與NAT外的使用者,輸入的網址不一樣,導致使用者無所適從,例如NAT內要輸入http://192.X.X.X  在NAT外卻要輸入http://163.X.X.X
有什麼方法可以解決 :-?

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #3 於: 2003-05-27 14:25 »
引述: "smf161"
謝謝ericshei的指教
但是,我的問題是NAT內與NAT外的使用者,輸入的網不一樣,導致使用者無所適從,例如NAT內要輸入http://192.X.X.X  在NAT外卻要輸入http://163.X.X.X
有什麼方法可以解決 :-?


就是上面的方法呀!只是把port的部份拿掉呀!

iptables -t nat -A POSTROUTING -d [internal server private ip] -s [internal private network] -j SNAT --to [nat server internal nic private ip]

iptables -t nat -A POSTROUTING -d 192.168.0.253 -s 192.168.0.0/24  -j SNAT --to 192.168.0.254

iptables -t nat -A PREROUTING -i eth1 -d [internal server public ip] -j DNAT --to [internal server private ip]

iptables -t nat -A PREROUTING -i eth1 -d 123.123.123.123 -j DNAT --to 192.168.0.253

clchang

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #4 於: 2003-05-27 14:27 »
使用ericshei那二行iptable rule,不管NAT內外,輸入http://real-ip
,it works

aloysius

  • 活潑的大學生
  • ***
  • 文章數: 403
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #5 於: 2003-05-27 14:28 »
引述: "smf161"
謝謝ericshei的指教
但是,我的問題是NAT內與NAT外的使用者,輸入的網不一樣,導致使用者無所適從,例如NAT內要輸入http://192.X.X.X  在NAT外卻要輸入http://163.X.X.X
有什麼方法可以解決 :-?


自己有架設DNS嗎?如果有,用BIND 8 的 VIEW 可以做到..

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #6 於: 2003-05-27 14:58 »
對不起,因為我不慬iptables,請問要使用iptable要安裝嗎?如何設定,以上的設定要放在那裏?
我所使用的轉IP方式是用nat的-redirect_address
會有衝突嗎?
我用的系統是freebsd,也可以用iptable嗎?
又,請問aloysius,用bind的view,怎麼做?
謝謝各位先進

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #7 於: 2003-05-27 15:40 »
引述: "smf161"
對不起,因為我不慬iptables,請問要使用iptable要安裝嗎?如何設定,以上的設定要放在那裏?
我所使用的轉IP方式是用nat的-redirect_address
會有衝突嗎?
我用的系統是freebsd,也可以用iptable嗎?
又,請問aloysius,用bind的view,怎麼做?
謝謝各位先進


freebsd我不會:p
用bind的view吧!!

http://linuxnews.idv.tw/Documents/DNS-view.htm

Tim

  • 活潑的大學生
  • ***
  • 文章數: 450
  • 性別: 男
    • 檢視個人資料
    • http://www.lab.mlc.edu.tw/
引述: "smf161"
我的伺服器放在NAT內,用轉IP的方式讓外部電腦何以進入(不是用轉PORT的方式),但是卻造成內部電腦要連線,必須用192.X.X.X,而外部用真實IP,造成網址不統一的問題

是哪個網站?貼個名稱吧!

ahtry

  • 活潑的大學生
  • ***
  • 文章數: 365
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #9 於: 2003-05-27 22:07 »
lan 裡加一個 DNS server 就可以解決, 小弟目前也是如此使用.
lan 裡要使用 private ip , internet 用網址或 public ip .
目前 dns =>168.95.1.1 , 裝好你的 dns ,再把所有電腦的dns 指向這部dns 就可以, net 要開放 dns 的 port.

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #10 於: 2003-05-28 12:02 »
引述: "ahtry"
lan 裡加一個 DNS server 就可以解決, 小弟目前也是如此使用.
lan 裡要使用 private ip , internet 用網址或 public ip .
目前 dns =>168.95.1.1 , 裝好你的 dns ,再把所有電腦的dns 指向這部dns 就可以, net 要開放 dns 的 port.

非常感謝,但我還是有問題:
因為我的NAT外部已有一個正式的DNS,我希望Client端先查我的DNS,查不到,再查外部的DNS,但郤因內部的DNS和外部的DNS同屬同一個zone,所以Client查不到就不到外部查了,即使我用了forwarders 指到外部的DNS,仍無效,除非把外部的DNS的資料併入內的DNS,但缺點是,外部的正式DNS資料改了,內部client就ping不到IP了
我曾想過將外部DNS設成內部DNS的slave,內部DNS將外部DNS的資料抓回來後,再改我要的IP,可是slave資料會定時更新,我改過的資料又被蓋掉了,我乾脆將slave的master IP 改掉,讓它抓不到新資料,可是,它更新時,資料雖沒有更新,但cache資料卻已是外部真實IP的了,不知是不是我設了forwarders的關係
不知有那位大德知道如何讓slave不更新,但不知這樣cache會不會又更新了
 :cry:

Tim

  • 活潑的大學生
  • ***
  • 文章數: 450
  • 性別: 男
    • 檢視個人資料
    • http://www.lab.mlc.edu.tw/
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #11 於: 2003-05-28 12:39 »
這兒有一份簡單的設定例子
希望對你有幫助:
http://home.kimo.com.tw/boatleo/namedb/

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #12 於: 2003-05-28 13:52 »
引述: "Tim"
這兒有一份簡單的設定例子
希望對你有幫助:
http://home.kimo.com.tw/boatleo/namedb/

非常感謝!但是,問題在於內部及外部的DNS同屬同一個網域,所以DNS只會找內部的資料,找不到時,不會再去找外部同網域的DNS的資料,而且外部DNS是正式註冊的DNS,也是外部client預設DNS,而且我也無權去修改
,也就是說,我的需求是:
當client端在外部時輸入abc.bsdlab.idv.tw 時ping到的IP是public IP,例如163.18.21.21,而在內部的client端,同樣輸入abc.bsdlab.idv.tw時,ping到的IP是private IP,例如192.168.0.22,因為NAT只會對外部對163.18.21.21的需求轉向到192.168.0.22,卻不會對內部client端對163.18.21.21的需求轉向到192.168.0.22
或者,是否可從firewall下手呢?????怎麼做呢?若用firewall的fwd好像只能轉到proxy,其他port仍是無效(不確定是不是這樣);從前面的留言中,好像IPtables就沒有NAT這種問題,可是freeBSD有IPtables的做法嗎? :lol:

ahtry

  • 活潑的大學生
  • ***
  • 文章數: 365
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #13 於: 2003-05-28 15:01 »
你的問題應該是master 與 slave DNS .搜尋一下吧!

clchang

  • 懷疑的國中生
  • **
  • 文章數: 30
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #14 於: 2003-05-28 15:34 »
你的問題應該是不管在NAT內外使用者均可以使用http://abc.bsdlab.idv.tw
要達到此功能上面學長們已經說的很清楚,方法有二
case1: 使用DNS view功能,
case2: 使用ericshei學長iptable rule

1. 使用case1方法,你需獲得授權可以設定你的domain DNS,由你的回答知,你的DOMAIN非你所管,因此case1不可行,也更不用說master/slave DNS,不需在自己DNS servers上努力, forget it
2. 何不try ericshei's  iptable rule method,再來tell us what happens

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #15 於: 2003-05-28 16:12 »
引述: "clchang"
你的問題應該是不管在NAT內外使用者均可以使用http://abc.bsdlab.idv.tw
要達到此功能上面學長們已經說的很清楚,方法有二
case1: 使用DNS view功能,
case2: 使用ericshei學長iptable rule

1. 使用case1方法,你需獲得授權可以設定你的domain DNS,由你的回答知,你的DOMAIN非你所管,因此case1不可行,也更不用說master/slave DNS,不需在自己DNS servers上努力, forget it
2. 何不try ericshei's  iptable rule method,再來tell us what happens


clchang兄,smf161兄是用freebsd啦!!

Tim

  • 活潑的大學生
  • ***
  • 文章數: 450
  • 性別: 男
    • 檢視個人資料
    • http://www.lab.mlc.edu.tw/
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #16 於: 2003-05-28 16:53 »
引述: "smf161"
問題在於內部及外部的DNS同屬同一個網域,所以DNS只會找內部的資料

所以說,你一定沒仔細看這份文件。
這份DNS文件是針對NAT分為內外網域的設定文件。
原理則再簡單不過了。
對外的zone是註冊的網域名稱。
既然是經過註冊與正式授權的網域名稱,所以再宣告屬於自己的子網域名稱。
子網域名稱就給內部網域使用。
內外網域不僅嚴格地區隔開來,而且從內部打 http://www.bsdlab.idv.tw/ 絕對找到真實IP的那一個。

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #17 於: 2003-05-29 10:04 »
引述: "Tim"
所以說,你一定沒仔細看這份文件。......

您用心post上去的資料我有很認真的看過,但問題就在於DNS找到的是真實IP
因為我的伺服器放在內部,是Private IP,所以DNS給的真實IP,在內部的使用者,找不到Private IP的伺服器,因為NAT不會對內部的client諯,將http://www.bsdlab.idv.tw/的需求轉向到Private IP的伺服器上
這可能是freebsd的NAT的缺點吧???或者是我的NAT的設定不對呢? :cry:

Tim

  • 活潑的大學生
  • ***
  • 文章數: 450
  • 性別: 男
    • 檢視個人資料
    • http://www.lab.mlc.edu.tw/
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #18 於: 2003-05-29 10:10 »
是否請您將網路環境與資料詳細描述一遍,你沒講清楚的話,大家都在「猜」。

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #19 於: 2003-05-29 10:40 »
引述: "smf161"
引述: "Tim"
所以說,你一定沒仔細看這份文件。......

您用心post上去的資料我有很認真的看過,但問題就在於DNS找到的是真實IP
因為我的伺服器放在內部,是Private IP,所以DNS給的真實IP,在內部的使用者,找不到Private IP的伺服器,因為NAT不會對內部的client諯,將http://www.bsdlab.idv.tw/的需求轉向到Private IP的伺服器上
這可能是freebsd的NAT的缺點吧???或者是我的NAT的設定不對呢? :cry:


不是早說了嗎?用band的view功能嗎??還是dns不是您管的??

http://linuxnews.idv.tw/Documents/DNS-view.htm

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #20 於: 2003-05-29 11:17 »
引述: "Tim"
是否請您將網路環境與資料詳細描述一遍,你沒講清楚的話,大家都在「猜」。

我的情形是:
做NAT的系統是freebsd5.0 release, NAT內部有一台伺服器,freebsd 這台用alias再取得一個真實IP(這樣,freebsd這一台就有2個IP),再將這個alias的真實IP,透過NAT的-redirect_address 將它轉向到內部的伺服器,所以外部只要輸入這個alias的真實IP,NAT就會轉向到內部的伺服器,但是,在內部的使用者,要進入內部的這台伺服器,卻需要輸入private IP,才能進入,否則,如果輸入真實IP,進入的卻是freebsd這一台,因為freebsd這一台有二個真實IP,對內部而言,這二個真實IP都會指向freebsd這一台,對外部而言,一個IP是freebsd這一台,另一個IP,會被NAT轉向到內部的伺服器,但是,在內部,卻不會被轉向,所以才會產生我的問題:
"NAT內的伺服器,在內外網址不統一",因為問了很多人,有人提示我用DNS轉向的方式,所以我才會從DNS下手,可是卻碰到"內外DNS同網域,搜尋時只會搜尋其中一台的網域"的問題(如上所述),所以我現在的做法是:將外部DNS的IP表,copy 一份到我的freebsd這一台DNS,然後再修改DNS表中內部伺服器的IP為Private IP,而且讓內部的電腦的DNS設成freebsd這一台,但這並不是根本的辦法,因外部的DNS表改了,我的DNS卻不知道
現在,不知從DNS下手或NAT下手或其他方式,那一種比較好

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #21 於: 2003-05-29 11:23 »
引述: "ericshei"
不是早說了嗎?用band的view功能嗎??還是dns不是您管的??

外部有一個正式註冊的DNS,不歸我管,所以....,而且是win2000的DNS
不過您的band的 view我有試,也讓我知道,原來DNS可以針對不同網段給不同DNS表,謝謝

CFSun

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #22 於: 2003-06-01 10:10 »
在NAT那台架DMZ試試 ~~~

smf161

  • 可愛的小學生
  • *
  • 文章數: 18
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #23 於: 2003-06-06 12:06 »
引述: "CFSun"
在NAT那台架DMZ試試 ~~~

請問,在freebsd上如何架DMZ

ericshei

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 2257
    • 檢視個人資料
請問NAT內的伺服器的domain name如何與外部統一
« 回覆 #24 於: 2003-06-06 13:06 »
引述: "smf161"
引述: "CFSun"
在NAT那台架DMZ試試 ~~~

請問,在freebsd上如何架DMZ


或許說說看,什麼是DMZ