这将是一篇很长的文章,但我想提供完整的信息。
我有一个家庭/企业 LAN,其中 isc-dhcp-server 运行 ipv4 dhcp 服务器,并绑定为在 ubuntu 服务器盒上运行的 DNS 服务器。我有 comcast 业务,网关已禁用所有 dhcp 功能。为了在我准备好处理它之前关闭 ipv6,在我的所有 linux 机器上,我使用 grub 命令和 sysctl 参数禁用了 ipv6:
surfrock66@sr66-hp2:~/.scripts$ cat /etc/default/grub | grep -v "#"
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1 acpi_backlight=vendor"
GRUB_CMDLINE_LINUX=""
surfrock66@sr66-hp2:~/.scripts$ cat /etc/sysctl.conf | grep -v "#"
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.wlo0.disable_ipv6 = 1
surfrock66@sr66-hp2:~/.scripts$
这些系统上没有 ipv6。所以,我认为无关紧要的是,我的 android 和 chromecast 设备出现了 wifi 问题。我看到的主要问题是连接速度过慢,这可能导致超时和失败。好吧,我正在进行一些故障排除并执行了 iperf...iperf 应用程序列出了一个 ipv6 地址和一个 ipv4 地址。果然,进一步查看...每个出现速度缓慢问题的设备都有一个来自某个地方的 ipv6 地址!
ipv6 disable 应用程序解决了我的连接问题,但每次连接中断并重新建立时都会恢复。真正的解决方案是关闭流氓 DHCP 服务器,或者设置我自己的 ipv6 dhcp 解决方案。后者是我的最终计划,但目前我想阻止当前设备获取 ipv6 地址。
网关已关闭所有 DHCP 服务(ipv4 和 ipv6,位于不同的屏幕上)。DHCP 服务器是 LAN 的成员,它指向网关作为默认路由。
康卡斯特商务级网关不是 Wifi AP;我有 3 个 Netis AP,所有路由功能均已禁用。它们是哑设备。
我能够从 Android 设备运行网络扫描,并找到具有 ipv6 地址的客户端列表...其中 3 个具有我无法识别的 MAC 地址,并且无法使用 MAC 查找进行解析。我将在我的其中一台笔记本电脑上重新启用 ipv6,但我很确定当我这样做时,该设备不会立即建立网络连接。我想制定一个计划来弄清楚这些客户端如何获取其 ipv6 地址。
https://goo.gl/photos/Z7yuXnL7C38tBA2z8
https://goo.gl/photos/urwY6rXUYs5d9mjP8
不过,我不确定如何从 Android 上辨别哪个是 DHCP 服务器;在 ipv4 上,它是 192.168.1.22。除了 3 个之外,我可以将所有 MAC 地址识别为我知道的设备:
- 61:AD:F8:15:56:CC
- 16:0A:EB:A3:10:A4
- 61:AD:F8:51:15:25
不知道这三个是什么;我对整个 LAN 进行了 ipv4 扫描,没有出现相应的 ipv4 设备。没有 MAC 查找能让我确定制造商是谁。
我的 DHCP 服务器根据 MAC 分配地址;因此我知道 LAN 上的每个 MAC。访客(又称未知 MAC)获得 192.168.1.197-254 地址,因此很容易识别他们。
我在笔记本电脑上重新启用了 IPv6,现在我的 WiFi 适配器获得了 IPv6 地址:
surfrock66@sr66-hp2:~$ sudo ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 10:1f:74:1b:ec:cb txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 3581 bytes 464169 (453.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3581 bytes 464169 (453.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.46 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2601:204:cd00:e200:1c5d:6970:a767:9c9e prefixlen 64 scopeid 0x0<global>
inet6 fe80::c1b6:f422:a87d:4f49 prefixlen 64 scopeid 0x20<link>
ether 74:e5:0b:1d:62:90 txqueuelen 1000 (Ethernet)
RX packets 4151 bytes 2333517 (2.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3531 bytes 651073 (635.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
surfrock66@sr66-hp2:/var/lib/dhcp$ for i in `\ls /var/lib/dhcp`; do echo $i; cat $i; done
dhclient.eth0.leases
lease {
interface "eth0";
fixed-address 192.168.1.227;
filename "pxelinux.0";
option subnet-mask 255.255.255.0;
option time-offset -25200;
option routers 192.168.1.1;
option dhcp-lease-time 3600;
option dhcp-message-type 5;
option domain-name-servers 8.8.8.8,8.8.4.4;
option dhcp-server-identifier 192.168.1.22;
option domain-name "hda.surfrock66.com";
renew 3 2016/06/01 04:01:58;
rebind 3 2016/06/01 04:01:58;
expire 3 2016/06/01 04:01:58;
}
dhclient.leases
surfrock66@sr66-hp2:/var/lib/dhcp$ sudo grep -R "DHCPOFFER" /var/log/*
/var/log/auth.log:Jul 9 14:32:23 sr66-hp2 sudo: surfrock66 : TTY=pts/1 ; PWD=/var/lib/dhcp ; USER=root ; COMMAND=/bin/grep -R DHCPOFFER /var/log/alternatives.log /var/log/alternatives.log.1 /var/log/alternatives.log.2.gz /var/log/apt /var/log/auth.log /var/log/auth.log.1 /var/log/auth.log.2.gz /var/log/auth.log.3.gz /var/log/auth.log.4.gz /var/log/btmp /var/log/btmp.1 /var/log/cups /var/log/daemon.log /var/log/daemon.log.1 /var/log/daemon.log.2.gz /var/log/daemon.log.3.gz /var/log/daemon.log.4.gz /var/log/debug /var/log/debug.1 /var/log/debug.2.gz /var/log/debug.3.gz /var/log/debug.4.gz /var/log/dmesg /var/log/dpkg.log /var/log/dpkg.log.1 /var/log/dpkg.log.2.gz /var/log/exim4 /var/log/faillog /var/log/firebird /var/log/fontconfig.log /var/log/fsck /var/log/hp /var/log/installer /var/log/kern.log /var/log/kern.log.1 /var/log/kern.log.2.gz /var/log/kern.log.3.gz /var/log/kern.log.4.gz /var/log/lastlog /var/log/lightdm /var/log/mail.err /var/log/mail.err.1 /var/log/mail.err.2.gz
/var/log/daemon.log:Jul 5 09:18:22 sr66-hp2 dhclient[6017]: DHCPOFFER of 192.168.110.50 from 192.168.108.2
我没有 ipv6 的 dhcp 租约,唯一的 DHCP 提供来自我本周在医院使用访客 wifi 时。
我无法再解析没有缓存 DNS 条目的任何东西。我已在笔记本电脑上重新禁用 ipv6,以进行更多故障排除研究。
我应该从哪里开始呢?