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客户端智能代理
2016年3月30日 星期三
Cloudflare 使用心得
原本在 匯智 http://domain.wis.com.tw/ 買的網址,結果內建的代管只能放6筆記錄
看了這篇 https://sofree.cc/cloudflare-free-cdn/ 後,決定試試 Cloudflare
Cloudflare 優點:
DNS代管服務
減少主機流量與資源消耗
阻擋惡意攻擊
加速網站瀏覽速度
免費不限流量的CDN - 查不到你實際網站IP,若是台灣主機,通常就不建議開CDN功能,因為,Cloudflare並沒有台灣的節點,大多數都讀取美國檔案,這樣反而繞路
CDN是什麼呢?
全名是「內容傳遞網路」(Content delivery network或Content distribution network),簡單說就是CDN伺服器會分散於全球各地,而這些伺服器會去抓取你網站的內容快取,而如果你人在美國,讀取了有掛CDN的網站,它就會就近讀取美國節點的網站,儘管網站在台灣,你也會感覺瀏覽速度不差。透過分散式的節點,可以分散網站的資源使用,如果你存取的美國節點失效,它會在就近找一個新的節點存取資料,讓資料不間斷。
先說結論:
因為我的主機用linode,一個月有2 TB Transfer,加上又是自己一個人用。所以只用得到DNS代管服務。
Cloudflare 註冊
前略
最後一步會跟你說把原本的Nameservers 改成 Cloudflare 的Nameservers
然後登入 匯智 後台,把所有DNS記錄刪除,然後點 "A、MX、CNAME紀錄關閉"
再將DNS設成 Cloudflare的DNS
然後開啟Cloudflare後台菜單就可以開始設定DNS了。只是免費版新設定的子網域紀錄反應會比較慢(真的有點慢,我這邊等了20分鐘才ping到)
後台點選DNS菜單後,列表中Status可以切換要不要啟用CDN功能
啟用:
啟用後ping到的ip位址是Cloudflare的ip位址
停用:
會直接ping到你真實ip
使用dnstracer 查你設的 主DNS和次DNS
http://blog.xuite.net/happyman/tips/26266122-dnstracer+%E4%BD%BF%E7%94%A8
$ dnstracer -c -o -q ns your.domain -s . -4
Tracing to your.domain[ns] via A.ROOT-SERVERS.NET, maximum of 3 retries
A.ROOT-SERVERS.NET [.] (198.41.0.4)
|\___ a.gtld-servers.net [com] (192.5.6.30)
| |\___ alice.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3a3c) Not queried
| |\___ alice.ns.cloudflare.com [your.domain] (173.245.58.60) Got authoritative answer
| |\___ rob.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3b8c) Not queried
| \___ rob.ns.cloudflare.com [your.domain] (173.245.59.140) Got authoritative answer
...
但其實不用這麼麻煩,因為dig也可以,而且dig比較通用
$ dig @168.95.1.1 your.domain -t ns
...
;; ANSWER SECTION:
your.domain. 86400 IN NS alice.ns.cloudflare.com.
your.domain. 86400 IN NS rob.ns.cloudflare.com.
看了這篇 https://sofree.cc/cloudflare-free-cdn/ 後,決定試試 Cloudflare
Cloudflare 優點:
DNS代管服務
減少主機流量與資源消耗
阻擋惡意攻擊
加速網站瀏覽速度
免費不限流量的CDN - 查不到你實際網站IP,若是台灣主機,通常就不建議開CDN功能,因為,Cloudflare並沒有台灣的節點,大多數都讀取美國檔案,這樣反而繞路
CDN是什麼呢?
全名是「內容傳遞網路」(Content delivery network或Content distribution network),簡單說就是CDN伺服器會分散於全球各地,而這些伺服器會去抓取你網站的內容快取,而如果你人在美國,讀取了有掛CDN的網站,它就會就近讀取美國節點的網站,儘管網站在台灣,你也會感覺瀏覽速度不差。透過分散式的節點,可以分散網站的資源使用,如果你存取的美國節點失效,它會在就近找一個新的節點存取資料,讓資料不間斷。
先說結論:
因為我的主機用linode,一個月有2 TB Transfer,加上又是自己一個人用。所以只用得到DNS代管服務。
Cloudflare 註冊
前略
最後一步會跟你說把原本的Nameservers 改成 Cloudflare 的Nameservers
然後登入 匯智 後台,把所有DNS記錄刪除,然後點 "A、MX、CNAME紀錄關閉"
再將DNS設成 Cloudflare的DNS
然後開啟Cloudflare後台菜單就可以開始設定DNS了。只是免費版新設定的子網域紀錄反應會比較慢(真的有點慢,我這邊等了20分鐘才ping到)
後台點選DNS菜單後,列表中Status可以切換要不要啟用CDN功能
啟用:
啟用後ping到的ip位址是Cloudflare的ip位址
停用:
會直接ping到你真實ip
使用dnstracer 查你設的 主DNS和次DNS
http://blog.xuite.net/happyman/tips/26266122-dnstracer+%E4%BD%BF%E7%94%A8
$ dnstracer -c -o -q ns your.domain -s . -4
Tracing to your.domain[ns] via A.ROOT-SERVERS.NET, maximum of 3 retries
A.ROOT-SERVERS.NET [.] (198.41.0.4)
|\___ a.gtld-servers.net [com] (192.5.6.30)
| |\___ alice.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3a3c) Not queried
| |\___ alice.ns.cloudflare.com [your.domain] (173.245.58.60) Got authoritative answer
| |\___ rob.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3b8c) Not queried
| \___ rob.ns.cloudflare.com [your.domain] (173.245.59.140) Got authoritative answer
...
但其實不用這麼麻煩,因為dig也可以,而且dig比較通用
$ dig @168.95.1.1 your.domain -t ns
...
;; ANSWER SECTION:
your.domain. 86400 IN NS alice.ns.cloudflare.com.
your.domain. 86400 IN NS rob.ns.cloudflare.com.
訂閱:
文章 (Atom)