« 出差第五天 | 首頁 | MIS 雜記 »

2006年05月29日

BIND9 - "view" statement 應用備忘

最近掛上新的網路設備後, 由於不明原因造成內部使用者透過 Domain name (DNS 解析為 public ip) 收發 e-mail 時, 發生 mail server 服務中斷的問題. 於是在網路上找到這篇將 Domain 分成內外部不同解析的文章, 讓外部查詢一樣回應 public ip, 內部使用者同樣以 Domain name 設置 pop3/smtp, 但實際是以內部 IP 來連線的解決方案.

環境:

  • Linux with BIND v9.x
  • bind 設定檔: /etc/named.conf
  • zone file 路徑: /var/named

vi /etc/named.conf

acl "lan" {

10.0.0.0/24; 192.168.0.0/24; // LAN IP 範圍標示

};

 

view "internal" { // 給內部使用者查詢的設置

match-clients { lan; }; // lan 的 IP 範圍是在 acl "lan" 敘述中所設定

zone "." IN {
    type hint;
    file "named.ca";
};

zone "mydomain.com" {
    type master;
    file "internal.mydomain.com";
    allow-transfer { none; };
};

};

 

view "external" { // 給外部使用者查詢的設置

match-clients { any; }; // any 表示任何 IP, 毋需以 acl 設定

zone "." IN {
    type hint;
    file "named.ca";
};

zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
    allow-update { none; };
};

zone "mydomain.com" IN {
    type master;
    file "named.mydomain.com";
    allow-transfer { none; };
};

};

vi /var/named/internal.mydomain.com (給內部查詢的 zone file)

$TTL	1H
mydomain.com.		IN SOA	myhost.mydomain.com. root.mydomain.com. (
					2006052901
					3H
					15M
					1W
					1H)

			IN NS		myhost.mydomain.com.
			IN MX 10	mail.mydomain.com.

myhost			IN A	10.0.0.1
mail			IN A	10.0.0.1
www			IN A	10.0.0.1
ftp			IN A	10.0.0.2

vi /var/named/named.mydomain.com (給外部查詢的 zone fie)

$TTL	1H
mydomain.com.		IN SOA	myhost.mydomain.com. root.mydomain.com. (
					2006052901
					3H
					15M
					1W
					1H)

			IN NS		myhost.mydomain.com.
			IN MX 10	mail.mydomain.com.

myhost			IN A	123.123.123.123
mail			IN A	123.123.123.123
www			IN A	123.123.123.123
ftp			IN A	123.123.123.123


測試:

  • 在區域網路 ping mail.mydomain.com 得到的回應為: 10.0.0.1 (lan ip)
  • 外部電腦 ping mail.mydomain.com 得到的回應為: 123.123.123.123 (public ip)

其他備忘:

  • 若要讓 dns server (myhost.mydomain.com) 本身使用內部 ip 解析 domain name, 在 acl "lan" 加入 localhost, 並將 localhost 的正反解 zone 設定加入 internal view 即可
  • 若有兩個以上 domain name, 各區域網路以 lan-to-lan vpn 串連者, 可在 /etc/named.conf 的 internal view 加入多個 zone 設置 (當然也要在 /var/named 建立相關 zone file), 就能讓 dns server 解析成內部 ip, 透過 vpn 連入遠端 server

參考資料:

相關網頁:

Posted by Jamyy at 2006年05月29日 21:09

Trackback Pings

TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/201