问题
某些操作导致整个 LAN 网络无法解析域,设备无法访问域之外的任何内容局域网网络。
例子
当尝试从自托管服务器中拉取 docker 镜像时GitLab例如,网络上的所有设备都失去互联网连接。还有其他操作也会触发此效果。
拉动最终会成功,但速度要<100Kb/秒。中止拉动将导致所有设备在几分钟内恢复正常运行。
笔记
当所有设备都无法访问互联网时,我仍然能够通过 ssh 进入设备。我还可以访问任何局域网桑巴共享。
问题似乎只发生在目标地址是局域网网络。假设DNS记录示例.com指向99.99.99.99,在本例中是面向公众的地址。浏览到示例.com从内部来看局域网. 从以下位置拉取 docker 镜像registry.example.com将会破坏网络。
数据
系统:
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 19.04
Release: 19.04
Codename: disco
以太网控制器:
$ lspci |grep Ethernet
13:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
路线:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 0 0 0 enp19s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-aa8d8a399367
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-b47396405d84
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-2bac20a2ccb1
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-c1cedda32d4f
172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-db04364eb1ec
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp19s0
网络接口:
$ lshw -C network
*-network DISABLED
description: Wireless interface
product: AR9285 Wireless Network Adapter (PCI-Express)
vendor: Qualcomm Atheros
physical id: 0
bus info: pci@0000:02:00.0
logical name: wlp2s0
version: 01
serial: 74:2f:68:82:81:f6
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ath9k driverversion=5.0.0-27-generic firmware=N/A latency=0 link=no multicast=yes wireless=IEEE 802.11
resources: irq:16 memory:f7d00000-f7d0ffff
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:13:00.0
logical name: enp19s0
version: 06
serial: 38:60:77:be:92:40
size: 1Gbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 duplex=full firmware=rtl_nic/rtl8168e-2.fw ip=192.168.0.92 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
resources: irq:19 ioport:c000(size=256) memory:f1404000-f1404fff memory:f1400000-f1403fff
接下来是一堆docker虚拟接口。
唯一的 netplan 配置文件内容:
$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
# https://netplan.io/reference
network:
version: 2
renderer: networkd
ethernets:
enp19s0:
wakeonlan: true
addresses:
- 192.168.0.92/24
gateway4: 192.168.0.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
- 1.0.0.1
- 8.8.4.4
dhcp4: false
dhcp6: false
accept-ra: false
网络
- 我的 ISP 发放的调制解调器/路由器组合是红色和黄色(一个物理设备)。
- 紫色设备是无线接入点。
- 蓝色设备是网络交换机。
我尝试过
- 断开除两台设备以外的所有设备并进行测试。
- 将这两个设备直接连接到路由器/调制解调器组合以排除交换机故障。
- 关闭两个 Ubuntu 设备上的 IPv6。
- 传递
ipv6.disable=1
内核参数。
- 传递
- 更新网络接口驱动程序。
$ apt install r8168-dkms
- 设置正确的日期/时区。
- 从 netplan 配置中删除名称服务器。
- 查看了 Wireshark 捕获。
- 不确定到底要寻找什么。
答案1
解决方案
我绝对不是网络工程师,所以请谨慎对待此建议。
我通过以下方式解决了我的问题:
- 为我的域创建 AAAA 记录。
- 在所有设备上重新启用 IPv6 支持。
- 创建 IPv6 防火墙规则以允许某些流量到达目标主机;换句话说,创建白名单。
原因
我仍然不确定是什么原因导致在禁用 IPv6 的情况下 DNS 突然失败。我最好的猜测是我的 ISP 更改了他们那边的某些东西(包括调制解调器/路由器)。
补充说明
- 积极的:顺便说一句,我的所有服务现在都完全符合 IPv6 标准。
- 消极的:这或许只是隐藏了真正的问题。