Configuration

在命令行代理 dns 查詢

  • January 14, 2022

我想為某些終端命令使用不同的 dns 伺服器(不是 tor,我設置的任何 dns 伺服器)。說它看起來像

$ DNS_SERVER=8.8.8.8 dnsify ping example.com

它使用Google dns。我知道有 socksify、torrify 和其他類似的工具。我尋找可以為我的命令明確設置或至少僅限於終端會話的任何工具、hack 或其他方式。因此,我在命令或終端會話中使用不同的 dns,對所有其他軟體使用主 dns。

我嘗試了代理鏈,但不能強制它使用非系統代理。

那麼,dns代理有什麼用嗎?

我不知道有任何方法可以簡單地通過使用環境變數來覆蓋系統解析器。您可以resolv.conf使用RES*環境變數覆蓋選項,但這些選項不能用於覆蓋nameserver定義(有關更多資訊,請參閱resolv.conf手冊頁)。

最好的選擇是使用LD_PRELOAD動態連結器的機制來預載入一個庫,該庫允許您覆蓋各種解析器呼叫以使用您自己的 DNS 伺服器而不是系統伺服器。

我發現的一個是resolvconf-override。從自述文件:

resolvconf override 提供了一個共享庫,用作 LD_PRELOAD 以覆蓋基於 glibc 的系統(例如大多數 Linux 發行版)上 /etc/resolv.conf 中列出的名稱伺服器。

要使用 Google DNS 代替 /etc/resolv.conf 中提到的那些,您將執行: LD_PRELOAD=/usr/lib64/libresolvconf-override.so NAMESERVER1=8.8.8.8 NAMESERVER2=8.8.4.4 myapplication

您需要從原始碼編譯它,但它看起來完全符合您的需要。

**注意:**您沒有指定作業系統,但我假設是 Linux。

引用自:https://unix.stackexchange.com/questions/222972