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

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

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

我有一个家庭/企业 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 服务器根据 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

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

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

我应该从哪里开始呢?

相关内容