M1 mac miniでDNSサーバーの情報を取得・変更する


Table of Contents

はじめに

  • macbook proだとDNSサーバーの情報を下記のように取得できる
 ~ networksetup -listallhardwareports | grep 'Hardware Port' 
Hardware Port: USB 10/100/1000 LAN
Hardware Port: Ethernet Adapter (en4)
Hardware Port: Ethernet Adapter (en5)
Hardware Port: Ethernet Adapter (en6)
Hardware Port: Thunderbolt Bridge
Hardware Port: Wi-Fi
Hardware Port: Thunderbolt 1
Hardware Port: Thunderbolt 2
Hardware Port: Thunderbolt 3
 ~ networksetup -getdnsservers 'USB 10/100/1000 LAN'
MYIPADDRESS
  • しかしmacminiだとポートの情報がmacbook proのそれと異なる
  • どのインターフェースが使われているのか判別できない
➜  ~ networksetup -listallhardwareports | grep 'Hardware Port' 
Hardware Port: Ethernet
Hardware Port: Ethernet Adapter (en5)
Hardware Port: Ethernet Adapter (en6)
Hardware Port: Thunderboltブリッジ
Hardware Port: Wi-Fi
Hardware Port: Thunderbolt 1
Hardware Port: Thunderbolt 2
➜  ~ networksetup -getdnsservers 'Ethernet'                   
There aren't any DNS Servers set on Ethernet.
➜  ~ networksetup -getdnsservers 'Wi-Fi'   
There aren't any DNS Servers set on Wi-Fi.

対応

  • 下記からen0: Ethernetが使われているとわかる
ifconfig | awk '/^[a-z0-9]+:/{iface=$1} /status: active/{print iface}' | sed 's/://' | while read iface; do
  port=$(networksetup -listallhardwareports | awk -v dev="$iface" '
    BEGIN {port=""}
    /Hardware Port/ {port=$3; for (i=4; i<=NF; i++) port=port " " $i}
    /Device/ && $2==dev {print port}
  ')
  echo "$iface : $port"
done

# 出力結果
# en0 : Ethernet
# en1 : Wi-Fi
# awdl0 : 

gistにも残しておいた。

Show active network interfaces on macOS and map them to their corresponding Hardware Port names using ifconfig and networksetup.

  • DNS情報の取得、変更は下記のようにできる
➜  ~ networksetup -getdnsservers 'Ethernet'

There aren't any DNS Servers set on Ethernet.

➜  ~ networksetup -setdnsservers 'Ethernet' DNSIPADDRESS
, , ,