如何识别 LAN 上的恶意 IPv6 DHCP 服务器?

sur*_*k66 5 networking dhcp ipv6

这将是一篇很长的文章,但我想提供完整的信息。

我有一个家庭/企业 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$ 
Run Code Online (Sandbox Code Playgroud)

这些系统上没有 ipv6。因此,我认为这是一个不相关的说明,我的 Android 和 chromecast 设备出现了 wifi 问题。我看到的主要问题是连接速度过慢,这可能会导致超时和失败。好吧,我正在做一些故障排除并执行了 iperf...iperf 应用程序列出了 ipv6 地址和 ipv4 地址。果然,进一步查看...每个有缓慢问题的设备都有一个来自某个地方的 ipv6 地址!

ipv6 禁用应用程序解决了我的连接问题,但会在连接中断并重新建立时恢复。这里真正的解决方案是杀死流氓 DHCP 服务器,或者建立我自己的 ipv6 dhcp 解决方案。后者是我的最终计划,但目前我想阻止当前设备获取 ipv6 地址。

网关关闭了所有 DHCP 服务(ipv4 和 ipv6,它们位于不同的屏幕上)。DHCP 服务器是 LAN 的成员,它作为默认路由指向网关。

康卡斯特企业级网关不是 Wifi AP;而是 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。我可以将所有 MAC 地址识别为我所知道的设备,除了 3 个:

  • 61:AD:F8:15:56:CC
  • 16:0A:EB:A3:10:A4
  • 61:AD:F8:51:15:25

不知道那三个是什么;我对整个 LAN 进行了 ipv4 扫描,没有显示相应的 ipv4 设备。没有 MAC 查找可以让我知道制造商可能是谁。

我的 DHCP 服务器根据 MA​​C 分配地址;所以我知道 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
Run Code Online (Sandbox Code Playgroud)

我没有 ipv6 的 dhcp 租约,唯一的 DHCP 优惠是我本周在医院使用访客 wifi 时提供的。

我无法再解析没有缓存 DNS 条目的任何内容。我在笔记本电脑上重新禁用了 ipv6,以进行更多故障排除研究。

我应该从哪里开始?