LDNS

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值