1,如何更新本地mac电脑dns
sudo dscacheutil -flushcache
windows
ipconfig -flushdns
linux
/etc/init.d/network restart
2,扫描端口是否开启
nmap -Pn 123.
网页地址:
http://www.yougetsignal.com/tools/open-ports/
3,端口抓包
tcpdump port 53
4,关闭防火墙
centos7防火墙是个坑,如果在虚拟云主机上遇到端口closed的问题,请关闭。低版本的linux主机,用iptables来关闭。就可以了。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled
# sudo iptables -A INPUT -p udp --source-port 8053 -j ACCEPT
# sudo iptables-save
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
sudo iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 53211 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 53211 -j ACCEPT
# sudo service iptables restart
测试
func TestServingResponse(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
dns.HandleFunc("happykonw.com.", HandleReflect)
s, addrstr, err := RunLocalUDPServer("0.0.0.0:53211")
if err != nil {
t.Fatalf("unable to run test server: %v", err)
}
c := new(dns.Client)
m := new(dns.Msg)
m.SetQuestion("happykonw.com.", dns.TypeTXT)
m.Response = false
_, _, err = c.Exchange(m, addrstr)
if err != nil {
t.Fatal("failed to exchange", err)
}
m.Response = true
_, _, err = c.Exchange(m, addrstr)
if err == nil {
t.Fatal("exchanged response message")
}
s.Shutdown()
s, addrstr, err = RunLocalUDPServerUnsafe("0.0.0.0:53211")
if err != nil {
t.Fatalf("unable to run test server: %v", err)
}
defer s.Shutdown()
m.Response = true
_, _, err = c.Exchange(m, addrstr)
if err != nil {
t.Fatal("could exchanged response message in Unsafe mode")
}
}
func RunLocalUDPServer(laddr string) (*dns.Server, string, error) {
server, l, _, err := RunLocalUDPServerWithFinChan(laddr)
return server, l, err
}
func RunLocalUDPServerWithFinChan(laddr string) (*dns.Server, string, chan struct{}, error) {
pc, err := net.ListenPacket("udp", laddr)
if err != nil {
return nil, "", nil, err
}
server := &dns.Server{PacketConn: pc, ReadTimeout: time.Hour, WriteTimeout: time.Hour}
waitLock := sync.Mutex{}
waitLock.Lock()
server.NotifyStartedFunc = waitLock.Unlock
fin := make(chan struct{}, 0)
go func() {
server.ActivateAndServe()
close(fin)
pc.Close()
}()
waitLock.Lock()
return server, pc.LocalAddr().String(), fin, nil
}
func RunLocalUDPServerUnsafe(laddr string) (*dns.Server, string, error) {
pc, err := net.ListenPacket("udp", laddr)
if err != nil {
return nil, "", err
}
server := &dns.Server{PacketConn: pc, Unsafe: true,
ReadTimeout: time.Hour, WriteTimeout: time.Hour}
waitLock := sync.Mutex{}
waitLock.Lock()
server.NotifyStartedFunc = waitLock.Unlock
go func() {
server.ActivateAndServe()
pc.Close()
}()
waitLock.Lock()
return server, pc.LocalAddr().String(), nil
}
清理端口
#!/usr/bin/env bash
echo "Checking for listeners on port 53211"
# There's a dnsmasq container listening under user lxc-dnsmasq.
# This will interfere with our test
for i in $(sudo lsof -i :53211 | awk '{print $2}' | tail -n +2 | xargs); do
echo ""
sleep 1
echo "Killing PID $i cause it's listening on port 53211"
echo "PID $i info:"
sudo ps -p $i -o user -o command
sudo kill $i
echo ""
done