BlackHole开发日记-Mac下动态修改DNS服务器

研究了下Mac下DNS的修改方法。Mac下虽然有/etc/resovled.conf文件,但是这个文件是自动生成的,好像也不起什么作用。后来搜到一个帖子Configure DNS lookups from the terminal 讲的比较详细。我大概整理下帖子的内容:

首先,Mac下网络配置存在/Library/Preferences/SystemConfiguration/preferences.plist这个文件中,每次系统重启会读取这个文件。但是尝试直接修改文件后,发现配置不能立刻生效,搜索之后,也没有找到好的办法使它立刻生效。

还有一个办法是使用scutil。scutil修改的结果在下次重启后会失效,希望持久化修改,请修改/Library/Preferences/SystemConfiguration/preferences.plist文件。网上还搜到一篇关于使用scutil修改DNS的病毒,很好玩。这里贴上帖子里的一段修改DNS的代码,感谢原作者emzy(10.7下测试通过):

#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste <[email protected]>

if [ $# -lt 2 ] ; then
echo "Use: $0 <domain> <1.Nameserver> [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3 
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF

你可能感兴趣的:(mac,dns,BlackHoleJ)