Android Pie 私人 DNS 使用教程

来源:https://www.cnblogs.com/hi-linux/archive/2019/08/14/11353256.html
-Advertisement-
Play Games

本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi Linux。 ​「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第 ...


file


本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi-Linux。

​「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一時間獲取最新技術文章,歡迎關註我們!

公眾號作者 Mike,一個月薪 3000 的雜工。從事 IT 相關工作 15+ 年,熱衷於互聯網技術領域,認同開源文化,對運維相關技術有自己獨特的見解。很願意將自己積累的經驗、心得、技能與大家分享交流,篇篇乾貨不要錯過喲。如果你想聯繫到我,可關註公眾號獲取相關信息。


最近手機更新到了最新的 Android Pie (9.0) 系統,隨著系統的更新,就可以體驗到 Android Pie 帶來了一系列的新特性。比如:全新設計的導航欄以及多任務界面、數字應用、安全和隱私等新功能。其中有一項更新是非常實用的,該功能可以提升用戶上網過程中的安全性,它就是:DNS over TLS,在 Android 里叫做 Private DNS(私人 DNS)。

file

預設情況下,如果網路的 DNS 伺服器支持,設備會自動使用 DNS over TLS,但如果用戶不希望使用 DNS over TLS,可選擇將其關閉。

Android Pie 的 新功能簡化了在 Android 配置自定義安全的 DNS 解析程式。當網站提供 DNS 服務時,客戶端和網站伺服器就會自動進行加密,第三方無法窺視 DNS 查詢。因為 Android 9 內置對 DNS over TLS 的支持。同時該 TLS 還負責自動預設 HTTPS 訪問網站,在地址欄可看到綠色安全鎖圖標。這可確保不會被 ISP、移動運營商以及客戶端與 DNS 解析程式之間的第三方篡改內容或無法解析。

在講這個功能之前先來瞭解一下什麼是 DNS 和 DNS 污染。

原理

既然說起 DNS 和其污染問題,就不得不先看看 DNS 系統是如何工作的。

互聯網所有通信都是建立在 TCP/IP 的基礎上,如果想訪問目標網路,就必須知道目標 IP。不過 IP 的數量有限,還有 IP 是由一串數字或十六進位組成的,不是那麼好記,所以有了功能變數名稱。功能變數名稱本身不具有訪問性,它如果想被訪問,必須綁定一個或多個 IP,一個 IP 可以綁定一個或多個功能變數名稱。這時候就有一個問題,如何知道功能變數名稱指向的是哪個 IP。所以需要一項服務,它記載著所有功能變數名稱和IP的關係,需要的時候詢問它就可以了,這就是 DNS(功能變數名稱系統)。

以訪問 Wikipedia 網站為例。

file

DNS 解析流程圖

圖中可以看到我們的 ISP 的 DNS 伺服器在圖中叫做 DNS Recurser,在解析一個功能變數名稱的時候,總共經過了以下的步驟:

  1. 向 root 伺服器獲取該 gTLD 的管轄伺服器,圖中為 org 結尾的功能變數名稱。
  2. root 伺服器返回 org 的管轄伺服器。
  3. 向 org 的管轄伺服器查詢,誰來負責解析 wikipedia.org 這個功能變數名稱的。
  4. org 的管轄伺服器返回解析 wikipedia.org 的伺服器 IP 地址。
  5. 向 wikipedia.org 的解析伺服器發出查詢,解析 www.wikipedia.org 的 IP 地址。
  6. 拿到最終要的 IP 地址。

從上面的 DNS 解析流程可以看出,解析一個功能變數名稱一共要經歷 6 個步驟。

由於 DNS 的數據是以明文傳輸,所以 DNS 伺服器返回的數據在傳輸的過程中是有可能被篡改的,導致功能變數名稱指向錯誤的 IP,引導用戶訪問錯誤或惡意的網站。比如:在最後一次查詢的時候,有人假冒了 wikipedia.org 的解析伺服器,則可以在中間進行欺騙攻擊,致使用戶最後得到的 IP 地址不是真實的地址。如圖所示,

file

解析請求被劫持

為什麼要使用私有 DNS?

從上面的例子我們可以看出,DNS 是存在被劫持和污染的風險的。為了保護用戶的上網安全,一些 DNS 加密查詢技術因此應運而生。常見的有:DNS over HTTPS、DNSCrypt 和 DNS over TLS。這三種的技術原理大致一樣,都是通過一些手段加密用戶與 DNS 伺服器之間的通信,避免 DNS 污染。

TLS (Transport Layer Security,傳輸層安全協議),TLS 是 IETF(Internet Engineering Task Force,Internet 工程任務組)制定的一種新的協議。TLS 是在其前身 SSL (Secure Sockets Layer,安全套接層)的基礎上發展來的。SSL 也是一種安全協議,其目的是為互聯網通信提供安全及數據完整性保障。TLS 它建立在 SSL 3.0 協議規範之上,是 SSL 3.0 的後續版本,可以理解為 SSL 3.1。TLS 協議由兩層組成:TLS 記錄層(TLS Record)和 TLS 傳輸層(TLS Handshake)。較低的層為 TLS 記錄層協議,位於某個可靠的傳輸協議(例如:TCP)上面。記錄層協議確定傳輸層數據的封裝格式。傳輸層安全協議使用 X.509 認證,之後利用非對稱加密演算來對通信方做身份認證,之後交換對稱密鑰作為會談密鑰(Session key)。這個會談密鑰是用來將通信兩方交換的數據做加密,保證兩個應用間通信的保密性和可靠性,使客戶與伺服器應用之間的通信不被攻擊者竊聽。

目前支持 DNS over TLS 的平臺不多, Android Pie 就是其中這一。如果你的系統暫時不支持 DNS over TLS,你可以暫時使用 SmartDNS 這個程式來作為本地 DNS 伺服器,它支持將 DNS over TLS 作為 DNS 上游伺服器。

SmartDNS 項目地址:https://github.com/pymumu/smartdns

在 Android Pie 上啟用 DNS over TLS

在 Android Pie 上啟用 DNS over TLS 的方法非常簡單。下麵以一加 5 為例,大概需要如下步驟:

  1. 打開 [設置] → [WLAN 和互聯網] → [私人 DNS] → [私人 DNS 提供商主機名] → 輸入 DNS over TLS 提供商提供的主機名 → 保存。

file

保存以後,如果私人 DNS 下方顯示主機名代表配置成功。

file

  1. 私有 DNS 欄位並不接受類似 1.1.1.1 這樣簡單的 IP 地址,而是需要一個主機名。如:dns.google。Google 之所以要求私有 DNS 欄位是主機名而非 IP 地址,這是因為考慮到移動運營商需要兼顧 IPv4 和 IPv6 共存的問題。

  2. 如果你使用原生 Android Pie 可使用 [設置] → [網路和互聯網] → [高級] → [私人 DNS] 。

驗證是否生效

  • 如果你使用的是 Cloudflare 提供的私人 DNS,可以訪問 https://1.1.1.1/help 進行驗證。如果 “使用 DNS over TLS(DoT)” 顯示為 “是” 就表示配置成功了。

file

file

一些可用的 DNS over TLS 提供商

Google: dns.google

Cloudflare: 1dot1dot1dot1.cloudflare-dns.com

Quad9: dns.quad9.net

CleanBrowsing: security-filter-dns.cleanbrowsing.org

紅魚 DNS: dns.rubyfish.cn

祝大家早日吃上 Andorid Pie。最後我們來搞個小投票,看看大家所使用的手機品牌和系統。

參考文檔

  1. https://www.google.com
  2. http://t.cn/EicGa97
  3. http://t.cn/EiVVF4K
  4. http://t.cn/EiVfk7i
  5. http://t.cn/EiVc5Uf
  6. http://t.cn/E2m0Ytz



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2019年9月23——25日 .NET Core 3.0即將在.NET Conf上發佈! .NET Core的發佈及成熟重燃了.net程式員的熱情和希望,一些.net大咖也在積極的為推動.NET Core而不懈的努力。在這次.NET Core 3.0中一項新的技術也首次出現在人們的視野,這就是Bla ...
  • 背景描述 最近接到一個需求,就是要求我們的 WPF 客戶端具備本地化功能,實現中英文多語言界面。剛開始接到這個需求,其實我內心是拒絕的的,但是沒辦法,需求是永無止境的。所以只能想辦法解決這個問題。 首先有必要說一下我們的系統架構。我們的系統是基於 Prism 來進行設計的,所以每個業務模塊之間都是相 ...
  • 之前我們有一篇:“動態生成多級菜單”,對使用Html Helper做了詳細講述,並且自定義了一個菜單的 Html Helper: https://www.cnblogs.com/miro/p/5541086.html Html Helper是關聯前後端的一個核心組件,後面的ASP.NET Core ...
  • Ⅰ. 常用系統工作命令 1. echo 命令 echo命令用於在終端輸出字元串貨變數提取後的值,格式為"echo [字元串 | $變數]" 例:把指定字元串"LinxuHat"輸出到終端屏幕的命令為: [root@linuxprobe Desktop]# echo LinuxHat 該命令會在終端屏 ...
  • Linux下載——獲取網路文件的命令 摘抄:本文主要學習了在Linux系統中如何下載文件的命令。 wget命令 wget命令是一個用來下載文件的命令,可以在後臺運行,在用戶退出之後仍能繼續下載,支持代理伺服器和斷點續傳功能,能夠自動遞歸遠程主機的目錄,找到合乎條件的文件並將其下載到本地硬碟上。 基本 ...
  • 本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi Linux。 「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一 ...
  • if條件語句的使用格式: 1、單分支語句 註意:[ 條件 ] :條件與中括弧要用空格分割;下麵的語句同理。 2、雙分支語句 3、多分支語句 退出碼: exit 在某些條件判斷下,如果不滿足該條件,我們必須手動退出程式,否則後面的代碼無法執行; 代碼正確執行完成後,指定 exit 0 為正確退出碼; ...
  • 一、grep程式 Linux下有文本處理三劍客:grep、sed、awk grep:文本 行過濾工具 sed:文本 行編輯器(流編輯器) awk:報告生成器(做文本輸出格式化) 1、grep grep包含三個命令:grep、egrep、fgrep,他們是用來進行 行模式(patten)匹配的 egr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...