IPv4/IPv6 网络

 

DNS

  • DoH: DNS over Https
  • DoT: DNS over TLS

公共 DNS 服务

DNS 服务器 IPv4 IPv6 DoH DoT
DNSPod Public DNS 129.29.29.29 2402:4e00:: https://doh.pub/dns-query dot.pub
阿里云 Public DNS 223.5.5.5 2400:3200::1 dns.alidns.com dns.alidns.com
Cloudflare DNS 1.1.1.1      

需要注意,DNS 能否够解析 IPv6 地址和 DNS 本身是否使用 IPv6 地址没有关系。即是说,只要 DNS 支持 IPv6 地址解析,那么访问 IPv4 的 DNS 也可以得到 IPv6 的地址。

解析 ipw.cn 的 IPv4 地址

dig +noall +answer ipw.cn @129.29.29.29 A
;; ANSWER SECTION:
# Name                            TTL    CLASS   TYPE    Returned VALUE
ipw.cn.                           266    IN      CNAME   ipw.cn.cdn.dnsv1.com.cn.
ipw.cn.cdn.dnsv1.com.cn.          266    IN      CNAME   66f782g2.slt-dk.sched.tdnsv8.com.
66f782g2.slt-dk.sched.tdnsv8.com. 60     IN      A       27.185.233.62
66f782g2.slt-dk.sched.tdnsv8.com. 60     IN      A       182.40.99.133
66f782g2.slt-dk.sched.tdnsv8.com. 60     IN      A       182.40.98.6

解析 ipw.cn 的 IPv6 地址

dig +noall +answer ipw.cn @129.29.29.29 AAAA
;; ANSWER SECTION:
# Name                            TTL    CLASS   TYPE    Returned VALUE
ipw.cn.                           232    IN      CNAME   ipw.cn.cdn.dnsv1.com.cn.
ipw.cn.cdn.dnsv1.com.cn.          232    IN      CNAME   66f782g2.slt-dk.sched.tdnsv8.com.
66f782g2.slt-dk.sched.tdnsv8.com. 60     IN      AAAA    240e:940:e011:9::54
66f782g2.slt-dk.sched.tdnsv8.com. 60     IN      AAAA    240e:945:f:10::3a

返回信息中的 IN 是一种 CLASS,这里表示 Internet。

dig 命令默认查询 A record,另外如果只想看查询的返回值,可以使用 +short 选项

dig +short ipw.cn @129.29.29.29

IPv6 DNS 解析

  1. 如果DNS支持AAAA记录,并且域名有对应的IPv6地址,那么立即返回 IPv6 地址;
  2. 如果DNS支持AAAA记录,但是域名没有对应的IPv6地址,那么立即返回空的AAAA记录,同时立即返回 IPv4 地址;
  3. 如果DNS不支持AAAA记录,则无法处理IPv6解析,也不会响应,最终超时后返回,然后才会返回 IPv4 地址。

以上 1,2 两种情况都不会造成访问网站卡顿,第 3 种情况则会造成卡顿。解决第 3 种情况可以做以下检查:

  1. 使用支持 AAAA 记录的 DNS 服务器;
  2. 路由器本身开启了 DNS 缓存但对 IPv6 支持不好;
  3. 科学上网,但机场不支持 IPv6

对于问题 2,如果在路由器的 DHCP 中不指定 DNS,路由器下发给各终端的 DNS 地址一般是路由器本身,为避免使用使用路由器的 DNS 缓存,可以在 DHCP 中指定公共 DNS 服务器,这样下发到终端的 DNS 地址直接就是公共 DNS 地址,避免再经过路由器。

路由器如果使用的是 Dnsmasq 作为缓存 DNS,一般是支持 AAAA 记录的。

DNS 记录

NAME TYPE VALUE
bar.example.com. CNAME foo.example.com.
foo.example.com. A 192.0.2.23
foo.example.com. AAAA 2007:f8b0:400a:800b::200e

A 记录

DNS A record 的 “A” 代表 “Address”,记录域名对应的 IPv4 地址,是最基本的 DNS 记录类型。

AAAA 记录

DNS AAAA record 记录域名对应的 IPv6 地址。

CNAME 记录

以上面表格为例,bar.example.com 的 CNAME 是 foo.example.com,CNAME 的意思是 真实名称,而右侧才是真实名称,才是 CNAME。上面的 CNAME 记录应当读作: bar.example.com 的真实名称是 foo.example.com。请求访问 bar.example.com 的客户端会得到 foo.example.com 返回的结果。

当要查询 bar.example.com 的 A 记录时,域名解析器会查到对应的 CNAME 记录,即 foo.example.com,随即开始查询该域名的 A 记录,查到 192.0.2.23 则返回结果。

IPv4 Addressing

IP address

8位二进制对应的十进制

128 64 32 16 8 4 2 1
$2^{7}$ $2^{6}$ $2^{5}$ $2^{4}$ $2^{3}$ $2^{2}$ $2^{1}$ $2^{0}$
1 0 0 0 0 0 0 0
  1 0 0 0 0 0 0
    1 0 0 0 0 0
      1 0 0 0 0
        1 0 0 0
          1 0 0
            1 0
              1

十进制: 128

128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0

十进制: 127

128 64 32 16 8 4 2 1
0 1 1 1 1 1 1 1

NetworkIDs and Subnet Masks

255.255.255.0 or /24 is not a IP address, it just tells you how many binary number of a network id should have.

IPv4 Classes

IP classes provide a default mask based on the number in the first octet.

Class $1^{st}$ Octet range Default Mask
Class A 1 - 126 255.0.0.0
Class B 128 - 191 255.255.0.0
Class C 192 - 223 255.255.255.0
Loopback 127  
Class D 224 - 239 Multicasting
Class E 240 - 255.255.255.254 Experimental

按位来表示

  • n 表示该二进制位是网络位
  • H 表示该二进制位是主机位
  • X 表示该二进制位无特定作用
A类地址
  0.  0.  0.  0 = 00000000.00000000.00000000.00000000
127.255.255.255 = 01111111.11111111.11111111.11111111
                  0nnnnnnn.HHHHHHHH.HHHHHHHH.HHHHHHHH
B类地址
128.  0.  0.  0 = 10000000.00000000.00000000.00000000
191.255.255.255 = 10111111.11111111.11111111.11111111
                  10nnnnnn.nnnnnnnn.HHHHHHHH.HHHHHHHH

C类地址
192.  0.  0.  0 = 11000000.00000000.00000000.00000000
223.255.255.255 = 11011111.11111111.11111111.11111111
                  110nnnnn.nnnnnnnn.nnnnnnnn.HHHHHHHH

D类地址
224.  0.  0.  0 = 11100000.00000000.00000000.00000000
239.255.255.255 = 11101111.11111111.11111111.11111111
                  1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

E类地址
240.  0.  0.  0 = 11110000.00000000.00000000.00000000
255.255.255.255 = 11111111.11111111.11111111.11111111
                  1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

IPv4 Private network

RFC1918 规定区块名 IP地址区块 IP数量 分类网络说明 最大 CIDR 区块(子网掩码) 主机端位长
24位区块 10.0.0.0 – 10.255.255.255 16,777,216 单个A类网络 10.0.0.0/8 (255.0.0.0) 24位
20位区块 172.16.0.0 – 172.31.255.255 1,048,576 16个连续B类网络 172.16.0.0/12 (255.240.0.0) 20位
16位区块 192.168.0.0 – 192.168.255.255 65,536 256个连续C类网络 192.168.0.0/16 (255.255.0.0) 16位

B类地址私网

172.16.  0.  0 = 10101100.00010000.00000000.00000000
172.31.255.255 = 10101100.00011111.11111111.11111111
                 10nnnnnn.nnnnHHHH.HHHHHHHH.HHHHHHHH

Shared Address Space(RFC 6598)

IANA 于 2012 年将 100.64.0.0/10 定义用于电信级 NAT 场景。这些地址与 RFC1918 中定义的私有 IP 是不同的,只能用于运营商的内部网络,虽然在某些特性中与私有 IP 相同,但在定义上不能划为私有地址(更不是公用地址)。

VLAN

  • Multiple networks/LANs on the same physical network switch.

  • Traffic is logically separated between VLANs.

  • VLANs provide logical segmentation of networks.

F5 Local Traffic Manager (LTM)

Virtual Server

A virtual server is one of the most important components of any BIG-IP Local Traffic Manager configuration. When you configure a virtual server, you create two Local Traffic Manager (LTM) objects: a virtual server and a virtual address.

A virtual server is a traffic-management object on the BIG-IP system that is represented by an IP address and a service.

A primary purpose of a virtual server is to load balance traffic across a pool of servers on an internal network. Virtual servers increase the availability of resources for processing client requests.

Virtual addresses

A virtual address is the IP address with which you associate a virtual server. For example, if a virtual server’s IP address and service are 10.10.10.2:80, then the IP address 10.10.10.2 is a virtual address.

You can create a many-to-one relationship between virtual servers and a virtual address. For example, you can create the three virtual servers 10.10.10.2:80, 10.10.10.2:443, and 10.10.10.2:161 for the same virtual address, 10.10.10.2.