域名、IP等相关的工具

解析到 127.0.0.1 的公网域名

本站提供一个解析到 127.0.0.1 的公网域名:local.lijiaocn.com。

这个域名的好处是可以通过它访问本地的服务,比方说在本地启动一个echoserver,监听地址为 127.0.0.1:9090,可以用下面的方式访问:

$ curl local.lijiaocn.com:9090

Hostname: 57e34b409aa1

Pod Information:
	-no pod information available-

Server values:
	server_version=nginx: 1.13.3 - lua: 10008

Request Information:
	client_address=172.17.0.1
	method=GET
	real path=/
	query=
	request_version=1.1
	request_scheme=http
	request_uri=http://local.lijiaocn.com:8080/
...省略...

当目标应用不支持填入 IP 地址,或者测试通过域名访问的功能时,这个域名特别有用。

dnsmasq

试验一些功能时,譬如 nginx 的透明代理 以及 kubernetes 的一些功能,需要填写可以通过域名服务器解析的域名。可以在本地用 dnsmasq 搭建一个域名服务解析服务。

在 mac 上部署 dnsmasq

  • 部署 dnsmasq:
$ sudo chown -R $(whoami):admin /usr/local
$ brew install dnsmasq
  • 在 /usr/local/etc/dnsmasq.conf 中添加解析,这里将 echo.example 解析到本地地址 127.0.0.1:
port 8053     # 注意,不要用 53 端口,否则需要用 root 运行
address=/echo.example/127.0.0.1

dnsmasq 监听端口最好不用 53 ,mac 的权限要求 53 端口必须用 root 身份监听,见 [Restart dnsmasq without sudo][2]。

  • 启动 dnsmasq:
$ brew services start dnsmasq

验证解析:

$ dig @127.0.0.1 -p 8053 echo.example

; <<>> DiG 9.10.6 <<>> @127.0.0.1 -p 8053 echo.example
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49022
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;echo.example.            IN    A

;; ANSWER SECTION:
echo.example.        0    IN    A    127.0.0.1

;; Query time: 41 msec
;; SERVER: 127.0.0.1#8053(127.0.0.1)
;; WHEN: Wed Oct 30 17:15:03 CST 2019
;; MSG SIZE  rcvd: 57

参考

  1. 李佶澳的博客