Overview
負荷分散装置でDNSの負荷分散の動作試験をするツールの解説をする
Installation
dnsping help
$ dnsping --help dnsping version 1.6.3 usage: dnsping [-ehqv] [-s server] [-p port] [-P port] [-S address] [-c count] [-t type] [-w wait] hostname -h --help Show this help -q --quiet Quiet -v --verbose Print actual dns response -s --server DNS server to use (default: first entry from /etc/resolv.conf) -p --port DNS server port number (default: 53) -T --tcp Use TCP instead of UDP -4 --ipv4 Use IPv4 as default network protocol -6 --ipv6 Use IPv6 as default network protocol -P --srcport Query source port number (default: 0) -S --srcip Query source IP address (default: default interface address) -c --count Number of requests to send (default: 10) -w --wait Maximum wait time for a reply (default: 2 seconds) -i --interval Time between each request (default: 0 seconds) -t --type DNS request record type (default: A) -e --edns Disable EDNS0 (default: Enabled) $
Source Code
ipaddress.txtを読み取り一行ずつ source ip address 指定で dnsping を実行する。
事前にip addr add xxx.xxx.xxx.xxx dev ifname を実行しておく必要がある。
ip address
$ sudo ip address add 192.168.1.16/24 dev wlp2s0
$ sudo ip address add 192.168.1.17/24 dev wlp2s0
$
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether f0:de:f1:2e:f9:93 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:26:c7:7f:c0:2a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.15/24 brd 192.168.1.255 scope global noprefixroute wlp2s0
valid_lft forever preferred_lft forever
inet 192.168.1.16/24 scope global secondary wlp2s0
valid_lft forever preferred_lft forever
inet 192.168.1.17/24 scope global secondary wlp2s0
valid_lft forever preferred_lft forever
inet6 2408:211:540:ca00:aba8:fe9e:79f:e783/64 scope global dynamic noprefixroute
valid_lft 14375sec preferred_lft 12575sec
inet6 fe80::3596:e0d8:75e7:b1f6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:53:e9:f4 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:53:e9:f4 brd ff:ff:ff:ff:ff:ff
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:b8:5d:92:2e brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
7: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
$
script
$ cat dns.sh #!/bin/bash while IFG= read -r line; do echo -e "\n" echo -e "souce ip:" $line "\n" dnsping -v -i 1 -c 1 -s 192.168.1.10 -S $line git.travelersmedia.jp done < ipaddress.txt $
IP Address list
$ cat ipaddress.txt 192.168.1.15 192.168.1.16 192.168.1.17 $
Result
$ bash dns.sh souce ip: 192.168.1.15 dnsping DNS: 192.168.1.10:53, hostname: git.travelersmedia.jp, rdatatype: A 54 bytes from 192.168.1.10: seq=0 time=6.327 ms svr-gitlab.travelersmedia.jp. 86400 IN A 192.168.1.115 flags: QR AA RD RA --- 192.168.1.10 dnsping statistics --- 1 requests transmitted, 1 responses received, 0% lost min=6.327 ms, avg=6.327 ms, max=6.327 ms, stddev=0.000 ms souce ip: 192.168.1.16 dnsping DNS: 192.168.1.10:53, hostname: git.travelersmedia.jp, rdatatype: A 54 bytes from 192.168.1.10: seq=0 time=6.146 ms svr-gitlab.travelersmedia.jp. 86400 IN A 192.168.1.115 flags: QR AA RD RA --- 192.168.1.10 dnsping statistics --- 1 requests transmitted, 1 responses received, 0% lost min=6.146 ms, avg=6.146 ms, max=6.146 ms, stddev=0.000 ms souce ip: 192.168.1.17 dnsping DNS: 192.168.1.10:53, hostname: git.travelersmedia.jp, rdatatype: A 54 bytes from 192.168.1.10: seq=0 time=7.071 ms svr-gitlab.travelersmedia.jp. 86400 IN A 192.168.1.115 flags: QR AA RD RA --- 192.168.1.10 dnsping statistics --- 1 requests transmitted, 1 responses received, 0% lost min=7.071 ms, avg=7.071 ms, max=7.071 ms, stddev=0.000 ms $ vim dns.sh $