2016年9月16日 星期五
設定Private DNS
有些網址不想讓外面人訪問,所以設定了Private DNS,讓使用VPN連線進來的設備可以直接打開網址訪問私有站。這篇的情況是iPhone 使用AnyConnect 連線openconnect,server系統為 CentOS 7
安裝bind9
# yum install bind bind-utils
編輯 /etc/named.conf 設定檔
# /etc/named.conf
新增 ACL "trusted"區段
acl "trusted" {
10.12.0.1; # ns1 - DNS server
...
10.12.0.190; # iPhone LAN IP
...
10.12.0.254;
};
因為VPN連進來,會自動分配虛擬IP,所以只好窮舉
編輯 options 區段
options {
listen-on port 53 { 127.0.0.1; 10.12.0.1; };
# listen-on-v6 port 53 { ::1; };
...
allow-query { trusted; }; # allows queries from "trusted" clients
...
}
10.12.0.1為我連上VPN後的主要DNS IP
在最底下加入
include "/etc/named/named.conf.local";
設定 local file
# vim /etc/named/named.conf.local
zone "test2.yourdomain.com" {
type master;
file "/etc/named/zones/db.test2.yourdomain.com";
};
zone "test3.yourdomain.com" {
type master;
file "/etc/named/zones/db.test3.yourdomain.com";
};
zone "12.10.in-addr.arpa" {
type master;
file "/etc/named/zones/db.10.12";
};
因為我的 test.yourdomain.com DNS解析是設在CloudFlare 公開的,如果這邊zone只設 yourdomain.com ,然後在正解和反解檔案分別設 test2.yourdomain.com 、test3.yourdomain.com,這樣子連vpn後使用私有VPN 雖然查得到 test2.yourdomain.com和test3.yourdomain.com 但設在代管上的test.yourdomain.com會查詢不到
產生Forward Zone File
# chmod 755 /etc/named
# mkdir /etc/named/zones
編輯 test2.yourdomain.com 正解設定
# vim /etc/named/zones/db.test2.yourdomain.com
$TTL 604800
@ IN SOA ns1.test2.yourdomain.com. admin.test2.yourdomain.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS ns1.test2.yourdomain.com.
; name servers - A records
ns1.test2.yourdomain.com. IN A 10.12.0.1
; 10.12.0.0/16 - A records
test2.yourdomain.com. IN A 10.12.0.1 # 因為我web server和DNS在同一台
編輯 test3.yourdomain.com 正解設定
# vim /etc/named/zones/db.test3.yourdomain.com
$TTL 604800
@ IN SOA ns1.test3.yourdomain.com. admin.test3.yourdomain.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS ns1.test3.yourdomain.com.
; name servers - A records
ns1.test3.yourdomain.com. IN A 10.12.0.1
; 10.12.0.0/16 - A records
test3.yourdomain.com. IN A 10.12.0.1
編輯反解設定
# vim /etc/named/zones/db.10.12
$TTL 604800
@ IN SOA test2.yourdomain.com. test3.yourdomain.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers
IN NS ns1.test2.yourdomain.com.
IN NS ns1.test3.yourdomain.com.
; PTR Records
0.1 IN PTR ns1.test2.yourdomain.com. ; 10.12.0.1
0.1 IN PTR ns1.test3.yourdomain.com. ; 10.12.0.1
0.1 IN PTR test2.yourdomain.com. ; 10.12.0.1
0.1 IN PTR test3.yourdomain.com. ; 10.12.0.1
檢查bind 設定檔語法
# named-checkconf
檢查zone file
# named-checkzone test2.yourdomain.com /etc/named/zones/db.test2.yourdomain.com
zone test2.yourdomain.com/IN: loaded serial 3
OK
這邊 檢查時需特別注意,named-checkzone後的test2.yourdomain.com需換成你正確的域名,否則會報 ignoring out-of-zone data 的警告
# named-checkzone 12.10.in-addr.arpa /etc/named/zones/db.10.12
zone 12.10.in-addr.arpa/IN: loaded serial 3
OK
啟動bind9
# service named start
最後用nslookup檢查是否設定成功
# nslookup
> server 10.12.0.1
Default server: 10.12.0.1
Address: 10.12.0.1#53
> test2.yourdomain.com
Server: 10.12.0.1
Address: 10.12.0.1#53
編輯 /etc/ocserv/ocserv.conf ,讓手機連上VPN後優先選擇內網的DNS
dns = 10.12.0.1
dns = 8.8.8.8
dns = 8.8.4.4
然後重啟oscerv
最後手機連上VPN後訪問 test2.yourdomain.com,成功
參考資料:
https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-centos-7 How To Configure BIND as a Private Network DNS Server on CentOS 7
http://blog.ltns.info/linux/openwrt_ocserv_vpn_client_smart_proxy/ OpenWrt路由器搭建和配置ocserv实现VPN客户端智能代理
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言