以编程方式设置 DNS 服务器(Windows、MacOS)

问题描述 投票:0回答:2

我需要以编程方式在 Windows、MacOS 和 Linux 上的活动网络接口(Wi-fi、以太网等)上设置主机的 DNS 服务器。

我想避免手动更新/污染我在入口上运行的 Kubernetes 服务。

目前,我的流程是为团队中运行我们应用程序的每个人手动设置 DNS 服务器

问题在于,这是一个手动过程,我在尝试自动化它时遇到了麻烦,因为输出的格式很奇怪并且难以解析。这意味着我无法知道哪个是正确使用的网络接口。

本质上,需要做的是以下(在两个平台上)

获取活动网络名称
  1. 将活动网络的 DNS 服务器设置为
  2. /etc/hosts
  3. &
    127.0.0.1
    
    
  4. 目前正在手动完成什么


MacOS

8.8.4.4

    networksetup -setdnsservers Wi-Fi 127.0.0.1 8.8.8.8 sudo killall -HUP mDNSResponder
  • 是在为服务的
    127.0.0.1
    记录提供服务的节点上运行的本地 DNS 服务器
  • A
  • 是 Google 的公共 DNS 服务器
    
    
目前,我假设 MacOS 上的用户正在使用“Wi-Fi”网络,但我想以编程方式确定这一点


Windows

作为管理员: 8.8.8.8

找到您想要更改 DNS 服务器的网络连接(例如:
netsh interface show interface

)。

WiFi


node.js windows macos dns command-line-interface
2个回答
1
投票

您的私人服务器是否位于非标准 TLD 或类似名称下?如果是这样,您可以通过在 /etc/resolver/ 下添加一个文件来将该 TLD 的查询重定向到私有 DNS 服务器来完成这项工作。 无论如何,如果它有用,这里有一种在 macOS 中检测主(活动)网络接口并设置其 DNS 服务器的方法:

netsh interface ipv4 add dns "WiFi" 127.0.0.1 index=1 netsh interface ipv4 add dns "WiFi" 8.8.8.8 index=2 ipconfig /flushdns

您可以在这里找到完整的 bash 实现
https://github.com/vborodulin/wifi-loc-control

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.