顯示具有 dns 標籤的文章。 顯示所有文章
顯示具有 dns 標籤的文章。 顯示所有文章

2022年8月23日 星期二

Cloudflare 1.1.1.1 FOR FAMILIES 提供阻擋惡意網站與成人網站的 DNS 查詢服務


最近跟朋友聊天,才發現 Cloudflare 除了提供 1.1.1.1 反應速度極快的 DNS 查詢服務外,還有提供阻擋惡意網站、成人網站的 DNS 查詢服務!當發現是惡意網站時,直接給予 0.0.0.0 (查不到) 的回饋,如此使用者在瀏覽網站時,不小心點擊到的惡意連結也不會瀏覽到,對於家裡有長輩、小孩的環境來說,真的很不錯。

大概五六年前在幫公司做 使用者生成內容 (User-generated content) 時,再加上規劃權限機制,打算從大家公開的資料中,整理出熱門的網站/影片連結出來,這時就會踩到有人擺了色情網站等問題,那時則是做了一套 URL Checker/Filter (SPAM) 機制,透過網域黑名單做的。現在,單純用 Cloudflare 提供的 DNS 來查詢也能直接達到類似的效果。

Cloudflare 1.1.1.1 FOR FAMILIES: https://one.one.one.one/family/
  • 1.1.1.1
    • 與 Google 8.8.8.8, 8.8.4.4 同樣效果但標榜更快、更注重隱私
    • 2018.04.01 開始的服務
  • 1.1.1.2, 1.0.0.2
    • 可阻擋惡意網站: Malware Blocking Only
  • 1.1.1.3, 1.0.0.3
    • 可阻擋惡意網站+成人網站: Malware and Adult Content Blocking Together
如此,在疫情後常態在家上課時,小孩拿手機平板連到家裡的 WIFI AP ,這時在 WIFI AP 的 DHCP 設置 DNS = 1.1.1.3 , 1.0.0.3 後,就可以簡單防護到所有連到此 WIFI AP 的設備,可防止小孩誤點、誤連到惡意網站和成人網站內容,畢竟有不少惡意網站/成人網站仍會買流量的,立即能避開一堆奇怪廣告。當然,對長輩來說也有一樣的效果。

圖:TP-Link WIFI AP 之 DHCP 設定 主要 DNS / 次要 DNS

其他:

2015年12月31日 星期四

使用付費版騰訊企業郵箱以及從 Microsoft Exchange server 轉移心得

騰訊企業郵箱-付費版功能

由於公司有超過一半的人在中國,過去一直請 IT 人員維護 Microsoft Exchange Mail server,而 2016 年有了新計劃,公司服務雲端化!其中 Mail service 是一塊非常令人頭痛的問題,但責任扛起來就不重,只好硬著頭皮衝了!原先規劃十一月進行,因故延至十二月,而真正執行是十二月中,原先把測試期間拉到一個月,但發現新舊帳號在一起造成同事們不少困擾,所以加速處理,在 2015/12/31 大家還忙著修 bug、業務忙著關帳、老闆趕著出新版軟體的當下,終於完成轉換。

原本心中的首選是想要用 Gmail for Work,但實在是有太多人在中國生活,存取太不靠譜,所以進而挑中國第一大咖的服務:騰訊企業郵箱,簡單的概念:QQ 這麼大咖,不太會倒,它倒了全中國的郵箱也倒光了!

騰訊企業郵箱-免費版

起初,公司已經有在使用騰訊企業郵箱免費版好一陣子了,免費版跟付費版差只差在進階功能,例如郵件稽核、管理這類服務,若只是單純有個 Webmail 收發肯定夠用的。打個岔一下,有興趣可以試試免費使用,預設應該有 50~100 個帳號,並且最多可以申請到 200 個免費帳號的額度。 而付費版的差別,包括可以一次管理多個網域(最多五個),以及一卡車的增值功能。

那談談如何從 Microsoft Exchange Server 移轉過去,這可真不是普通的蛋疼。首先,要是用騰訊企業郵箱時,騰訊企業郵箱會先檢驗某個 domain 是不是您擁有,既然跟 mail 相關,最直觀就是 MX Record 的設定,但對於已經營運的郵箱是根本不能停的,為了這個我跟客服吵了很久 XD 整體上沒有驗證的話,所建立的帳號是完全不能登入的!為了轉移勢必需要先讓公司同仁登入,也因此下了決定,該衝了!最大的傷害就是 MX Record 切換到騰訊後,若有人要寄信給公司同仁,信件會跑去騰訊企業郵箱(在這之前當然要先完成帳號的建立,不然騰訊企業郵箱會以帳號不存在,不給寄而退信)。所幸老闆們很支持也接受這個風險,就衝啦!我先請 IT 人員調出公司收郵件最少的時段,接著在轉換前幾天先把 MX Record 的 ttl 設小,最後就快速轉換,做完騰訊郵箱驗證,再轉回舊的。

原先我打好的如意算盤:騰訊企業郵箱認證成功,成員可以登入試用,而舊信箱(exchange server)還是可以工作,真是完美啊!

但沒一個小時我就發現問題了:所有委託騰訊企業郵箱管理的信箱(例如abcd.com),該公司的成員要寄信到敝公司時,走的是騰訊企業郵箱的 SMTP server,而寄信路徑最佳化的結果,就是被騰訊企業郵箱收走!

這是一個滿嚴重的問題,代表信件部分會被騰訊企業郵箱收走,而乖乖看 MX Record 會被舊 exchange server 收走,也是這個關鍵因素,讓我把測試期從一個月縮短至兩個禮拜(原先想要一個禮拜,但因為有其他問題而延後)。騰訊企業郵箱真的很大咖,不少公司、新創都採用他,再加上 qq.com 也是他的!所有 @qq.com 寄信來問問題、橋接業務的,也完完全全被騰訊企業郵箱收走,因為我們在那驗證了 MX Record,騰訊企業郵箱會認定這 domain 由他接手處理。

在認清環境後,開始不斷號召同仁盡快試用,接著開始碰到奇奇怪怪的問題:
  • outlook 20010 以下,會碰到檢視憑證的問題?
  • 同仁都習慣用 outlook ,那聯絡人該怎樣同步?
  • 公司有高規格單位,防火牆包得緊緊的,怎樣用騰訊企業郵箱?
其中最難處理的是防火牆問題,曾經也有一度要自架 mail server,最後透過管理機制討論再討論,解套了!這個影響是:採用各大 mail service 時,其 smtp/pop/imap server 一定都是用認得那幾組,無論騰訊企業郵箱、Office 365還是 GMail 等,將造成想要管理同仁寄信的安全機制出現了漏洞,例如某同仁只要申請個 a123.com 後,把郵箱也交給騰訊企業郵箱代管,那 a123.com 跟敝公司的 smtp server 基本上是同一組的,完全無法限制同仁外寄信件的。

所以花了將近一週是在做溝通,包含提出 mail reply 架構等(類似多架一台 smtp server,而帳號認證可以走騰訊企業郵箱 pop protocol),所幸最後解套,大家認同有這個風險 XD 我就省去架設及多管理一台機器。但一週就過去了 Orz 接下來就是趕緊處理剩下兩個問題

首先是 outlook 檢視憑證問題,單純只是 outlook bug 而已,解法就是試著更新 outlook 吧!例如 outlook 2007 就裝一下 outlook 2007 sp3。這是因為騰訊企業郵箱在多網域上只用了一組憑證(pop.exmail.qq.com, imap.exmail.qq.com, smtp.exmail.qq.com, hwpop.exmail.qq.com, hwimap.exmail.qq.com, hwsmtp.exmail.qq.com),而 outlook 不支援而已。

接著處理聯絡人同步部分,只需把公用聯絡人打開,同仁寄信時就有自動搜尋補齊信箱的功能,而騰訊企業郵箱有提供 outlook 助手,透過 outlook 助手會自動從騰訊企業郵箱下載聯絡人清單並匯入 outlook 中,也就是 outlook 通訊錄可以繼續用,經測試 outlook 2007 必須更新至 sp3 才能完整使用!若使用 outlook 2013 的使用者,可以試試 activesync 協定,也能同步聯絡人

以上算是完成九成的任務了!剩下的則是佛心來的客服服務,負責做 mail server 轉移,不知不覺就會扛上了管理 mail server 責任。

整個移轉的簡易 SOP:
  1. 請 IT 人員會出聯絡人清單
  2. 撰寫程式將聯絡人清單轉成 CSV 可匯入騰訊企業郵箱(過程包括要製作亂數密碼,但密碼格式有錯時,批次匯入不會告知,有同仁登入不進去時,記得幫他改密碼)
  3. 請 IT 人員給予一天哪個時段收信量最少,將進行 MX Record 的快速轉換,用以認證網域擁有者,完成認證後同仁才能登入 webmail 試用
  4. 請同仁儘速登入使用,並告知會有部份郵件被騰訊企業郵箱收走,在測試期間請新舊信箱都要收信
  5. 協助同仁使用,包含解決 outlook 常見問題,或是請他們直接用騰訊維護的 Foxmail
  6. 時機一到時,直接把 MX Record 切換至騰訊企業郵箱,並設置 TXT Record - spf 的部分,降低騰訊企業郵箱寄出信被誤判成垃圾信
  7. 可以嘗試把舊的 smtp server 關閉,或是限制成員發送的能力(例如信件大於1kb無法寄出),進而半強迫同仁轉用騰訊企業郵箱 smtp server
最後,聊點題外話,其實兩年前也差點用 Mail service 這個題目創業,在學生時代我也開發過 mail app 的,這其中的辛酸血淚說都說不完,而讓我想起這件事是因為 Foxmail !我翻了wiki跟百度,才知道這一開始也是一人開發的,就像 openwebmail 吧 :P 負責開發 Foxmail 的是張小龍,一位 1969 年次的高手,釋出三年後就被公司以 1200萬買走,但最猛的是後來被騰訊收購,以及張小龍後續要開發了 QQMail 以及炙手可熱得微信,是的,他是微信創辦人,更是騰訊副總裁。此外,跟生活在中國的朋友閒聊,更能體會騰訊企業郵箱的恐怖,姑且不論費用的便宜,其實還滿多搬的出檯面上的使用者,例如不少學校採用,如北京大學、深圳大學、上海也有,一個單位開的帳號破萬也都很正常,更別說....還有100k的。不禁回想起當年想拿 mail service 創業,還想說該怎樣打入中國生態這件事,真的...還是要先把市調做好 XD 以及中國生態圈中微信佔了很大很大的一部份,而騰訊企業郵箱又可以跟微信無縫結合,這股氣勢真的非常強。

經過這次深度接觸騰訊企業郵箱的經驗,中國的領域真的很威,若不是生活在當下的人,真的很難有所突破,有興趣的,大概可以參考這篇:PTT China_travel [心得] 來到中國你會需要什麼App

其他參考資料:

2015年10月15日 星期四

使用 Firefox 瀏覽器測試 DNS Round Robin 的方式

關於 DNS round robin 得設置可以把 ttl=0 來方便測試,單純測試 DNS record 有沒有正常顯示,可以單純不斷用 ping 查看 ip address 即可:

$ ping test.domain.name

接著想驗證 server site 有沒有 session 相關的問題,單純用 wget/curl 也可以啦,但如果有一些圖片資料是跟 session 有關的(例如驗證碼,產生的來源資料一樣,但輸出每次都不一樣),這時又頭痛了一下 XD 原先一直想用 Chrome browser,但最後反而跑去用 Firefox! 測試 DNS round robin 是否正常!

首先要驗證 web service 跟 dns round robin 的方式,必須先把 http client 關掉 keep-alive 機制,以 firefox 來說,就是在網址列輸入 about:config 後,搜尋 keep 關鍵字就能找到 network.http.keep-alive.timeout ,把它設成 0 即可,但千萬不要把 network.tcp.keepalive.enabled 設成 false ,那會導致上述的所有設定都無效 XD

接著問題就降低成 DNS round robin 的事了,嗯,沒有最佳解,因為 DNS round robin 本來就沒有每一次 requests 都配置不同的 IP,所以為了提升測試效率,只好自行去寫死 /etc/hosts 等類似的位置了 XD 雖然小蠢,但還是堪用啦。總之,最重要的是要先把 http client 的 keep-alive 關掉才能測試。

2014年11月12日 星期三

[Linux] 使用 awk, sort, uniq, grep, dig 批次驗證 email address @ Ubuntu 14.04

工作時中,偶爾會對 UNIX 系統感動! 雖然有時很簡單的任務會龜毛到硬要連續指令來處理,明明寫一小段 code 就好了啊 Orz

取處已知清單中的 email domain:

$ mysql -e "select email from db.user;" > email.log;
$ sort email.log | uniq | awk -F'@' '{print $2}' | sort | uniq | grep "." > email.domain.log


最後的 grep "." 則是要避開 hostname 不合法的項目(如 localhost 等)。

驗證 mx:

$ dig -t mx test.com +short | wc -l
$ test `dig -t mx test.com +short | wc -l` -ne 0 && echo "ok"


批次驗證:

$ awk '{ system("test `dig -t mx "$1" +short | wc -l` -ne 0 && echo "$1)}' email.domain.log > email.validated.log

2014年9月3日 星期三

AWS 筆記 - 使用 Amazon Route53 設定 DNS SPF Record

如果說 MX 是用來提供寄件者得知 mail server 在哪邊,那 SPF 則是提供 mail receiver 驗證寄件者使用的 mail server 是不是接近已知、合法的 server。因此,設定 DNS SPF Record 是會降低信件誤判成垃圾郵件的機率。

採用 Amazon Route53 時,設定 TXT Record (有 SPF Record,但這次沒試)

"v=spf1 a mx a:YourServerHostname  ~all"

最後面的 ~all 代表上述未定義的,可能是錯的。若要強制歸類在錯誤,就用 -all 即可。

驗證方式(此例以 cs.nctu.edu.tw 為例):

$ nslookup -q=txt cs.nctu.edu.tw
...
cs.nctu.edu.tw  text = "v=spf1 a mx a:farewell.cs.nctu.edu.tw a:csmailer.cs.nctu.edu.tw a:tcsmailer.cs.nctu.edu.tw a:csmailgate.cs.nctu.edu.tw a:csmail1.cs.nctu.edu.tw a:csmail2.cs.nctu.edu.tw a:csws1.cs.nctu.edu.tw a:csws2.cs.nctu.edu.tw ~all"
...


可以看到 "v=spf1 ... " 資訊,代表 DNS TXT Record 設定無誤,記得這是有 dns cache 機制,不見得馬上更改或是馬上可以查詢到。

接著,可以用 Gmail 來測試,從自家 mail server 寄信到 Gmail,若沒有設定 DNS SPF Record ,會顯示:

Received-SPF: none (google.com: YourSender@YourMailServer does not designate permitted sender hosts) client-ip=YourMailServerIP;

若有設定 DNS SPF Record 但不在名單內,此例為 ~all 用法:

Received-SPF: softfail (google.com: domain of transitioning YourSender@YourMailServer does not designate YourMailServerIP as permitted sender) client-ip=YourMailServerIP;

若設定正確即在 DNS SPF Record 定義內:

Received-SPF: pass (google.com: domain of YourSender@YourMailServer designates YourMailServerIP as permitted sender) client-ip=YourMailServerIP;

要留意,如果租的機器是在一些常見的 VPS 時,對外走的可能是 IPv6 ,此時記得 DNS Reocrd 中,也要用 AAAA Record (IPv6) 定義。

2014年6月20日 星期五

AWS 筆記 - Amazon Route 53 GeoDNS 用法 (Routing Policy: Latency)



想要讓不同 client 查詢統一個 Domain 時,回應離使用者近的 Data Center 的機器嗎?恰好 AWS 有提供這個功能,用法:
  • 將各個 Data Center 的機器,透過 A Record 指定一個 Domain Name
  • 將使用者真正查詢對象(DomainName)設定多筆 CName Record 對應,在新增時,選擇 Latency 並挑選區域即可,例如服務亞洲可以挑日本(ap-northeast-1), 其他地方挑美國(us-west-1)等,更多區域資訊請查詢:AWS Regions and Endpoints

接著,測試時,可以透過 nslookup 來指定要查詢的 DNS Server 來模擬不同區域的查詢結果,如 Google 8.8.8.8 和最近阿里雲對外公佈的新服務 ALiDNS 235.5.5.5,就可以看到因為地域的不同產生的變化。

連續動作:
  1. 新增 A Record: www-geo-jp.changyy.org/1.1.1.1
  2. 新增 A Record: www-geo-us.changyy.org/2.2.2.2
  3. 新增 CName Record: www-geo.changyy.org/www-geo-jp.changyy.org/Latency/ap-northest-1
  4. 新增 CName Record: www-geo.changyy.org/www-geo-us.changyy.org/Latency/us-west-1
查詢:

$ nslookup www-geo.changyy.org 223.5.5.5
Server:         223.5.5.5
Address:        223.5.5.5#53

Non-authoritative answer:
www-geo.changyy.org       canonical name = www-geo-jp.changyy.org.
Name:   www-geo-jp.changyy.org
Address: 1.1.1.1

$ nslookup www-geo.changyy.org 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
www-geo.changyy.org       canonical name = www-geo-us.changyy.org.
Name:   www-geo-us.changyy.org
Address: 2.2.2.2


別忘了,這種功能是需要額外收費的。

Amazon Route 53 Pricing
  • Standard Queries
    • $0.500 per million queries – first 1 Billion queries / month
    • $0.250 per million queries – over 1 Billion queries / month
  • Latency Based Routing Queries
    • $0.750 per million queries – first 1 Billion queries / month
    • $0.375 per million queries – over 1 Billion queries / month

AWS 筆記 - 從 Godaddy 搬到 AWS Route 53



AWS Route 53 有很多收費機制,但為了 GeoDNS 的使用,開始來搬遷。原先購買的 Domain name 是在 Godaddy 上購買以維護的,整個匯出流程還滿容易的。

  1. AWS Route 53: Create Hosted Zone

  2. AWS Route 53: Import Zone File

  3. Godaddy: Export DNS Setttings

  4. AWS Route 53: Import Zone File 貼上需要的,如 A系列、CNAME系列、MX系列等

  5. Godaddy: Set NameServer,改用 AWS Route 53 提供的清單



最後,可以用 dig 去追蹤看看,是不是真的改用 AWS Route 53 提供的 NS 囉

$ dig +trace example.com

2014年6月5日 星期四

iOS 開發筆記 - DNS Lookup、Host name to IP Address

最近想把玩一下 socket ,過程中需要把 domain name 轉成 ip ,筆記一下:

#include <netdb.h>
#include <arpa/inet.h>

- (NSString*)hostnameToIPAddress:(NSString*)hostname
{
    struct hostent *remoteHostEnt = gethostbyname([hostname UTF8String]);
    struct in_addr *remoteInAddr = (struct in_addr *) remoteHostEnt->h_addr_list[0];
    return [NSString stringWithUTF8String:inet_ntoa(*remoteInAddr)];
}

NSLog(@"IP: %@", [self hostnameToIPAddress:@"tw.yahoo.com"]);
NSLog(@"IP: %@", [self hostnameToIPAddress:@"tw.yahoo.com"]);
NSLog(@"IP: %@", [self hostnameToIPAddress:@"tw.yahoo.com"]);


若看到查到結果不一樣,主因是 DNS 提供的分流服務。