我们已经建立了一个小型的 IPv6 测试网络。设置如下所示:
::/0
+----------+
| Firewall | Router to the public net
+----------+
| 2001:...::/106
| +----------+
+-------| SIT GW | sit Tunnel gatway to the some test users
| +----------+
|
+----------+
| Test Sys | Testsystem
+----------+
Run Code Online (Sandbox Code Playgroud)
这个想法是通告来自防火墙的默认路由和来自坐网关的 SIT 子网的路由。radvd 的配置是:
# Firewall
interface eth0
{
AdvSendAdvert on;
route ::/0
{
};
};
# SIT Gatway
interface eth0
{
AdvSendAdvert on;
route 2001:...::/106
{
};
};
Run Code Online (Sandbox Code Playgroud)
我们已经捕获了 adv。带有 tcpdump 的包,这些包看起来不错。我们看到来自 fw 的默认路由和来自 SIT 网关的子网路由。
但是,如果我们查看测试系统,则两个网关上都有两条默认路由。没有子网路由。路由当然不起作用。这里我们得到的路线:
2001:.....::/64 dev …
Run Code Online (Sandbox Code Playgroud) 因此,我们最近从 LIR 获得了 /48 前缀,并开始在实验室中进行小规模部署。
让我感到奇怪的是,像http://ipv6-test.com/这样的网站坚持要求您允许传入的 ICMP Echo 请求。我明白为什么你应该允许 ICMPv6 传出,但传入?即使它只是一个ping?
所以,我的问题是:除了可能使用 ICMP 的 DDoS 攻击之外,允许传入的 ICMP 回声请求是否有任何缺点?
我阅读了 RFC4890 ( https://www.ietf.org/rfc/rfc4890.txt ),但在那里找不到明确的答案。
A.5. ICMPv6 回声请求和回声响应
表明
人们认为对设计良好的 IPv6 网络(参见第 3.2 节)进行扫描攻击不会带来重大风险,因此默认情况下应允许连接检查。
鉴于 RFC 已经快 10 年了,这一点仍然有效吗?此外,RFC 不区分传出和传入方向。
我一直觉得 v4 的建议是在网关阻止 ICMP,但话说回来,v6 严重依赖 ICMP。
那么,有什么建议吗?
我正在寻找一种方法来检索 LAN 网络上特定主机的 MAC 地址。我知道它的 IPv6 地址。理想情况下,我想要一种方法来触发 Linux 内核为我执行邻居请求,然后我可以通过命令检索主机 MAC 地址ip -6 neighbour
目前,我发现触发邻居请求的唯一方法是尝试在随机端口上建立到主机的 TCP 连接。但我觉得这个解决方案并不漂亮:
curl --connect-timeout 1 "http://[fe80::1234%eth0]:12345"
Run Code Online (Sandbox Code Playgroud) 我的网络上设置了两个“路由器”类型的设备。
一个是我实际的 IPv6 路由器 - Cisco 2621 ( fe80::xxxx:3e60
)。这是正确的默认路由器。
另一个是 DLINK DIR-615 ( fe80::xxxx:5760
)。它支持 IPv6,但目前仅配置为链路本地寻址,因为它仅用作 WAP。
两个设备都在发送 ICMPv6 RA 消息,因此它们都被添加到我客户端的路由表中:
$ ip -f inet6 route | grep default
default via fe80::xxxx:3e60 dev wlan0 proto kernel metric 1024 expires 1741sec mtu 1500 advmss 1440 hoplimit 64
default via fe80::xxxx:5760 dev wlan0 proto kernel metric 1024 expires 1791sec mtu 1500 advmss 1440 hoplimit 64
Run Code Online (Sandbox Code Playgroud)
问题在于我的客户现在可以选择默认路由器。一个在途中愉快地发送数据包,另一个则没有。我可以删除不正确的路线,但它只会在下一个 RA 出现时重新添加。
fe80::xxxx:3e60
(正确的路由器)正在发送 RA,广告前缀为 2001:xxxx:xxxx::/64(我的网络)
fe80::xxxx:5760
(不正确的路由器)正在发送 RA,通告前缀为 fe80::/64(本地链路)
那么……这是谁的错?
fe80::xxxx:5760
用于在无法提供有效前缀时发送 RA?fe80::xxxx:5760 …
所以我在我的家庭网络上更多地使用 IPv6,而且我做的事情有点老式 - 设置静态地址等。这意味着我并不真正想要或关心通过各种 ICMPv6 消息内置到 IPv6 中的所有自动配置。但是运行wireshark并仅捕获IPv6流量,我的两个运行Linux的IPv6系统被证明是闲聊的小东西。他们不断地交换“邻居请求”、“邻居广告”和 ICMPv6 多播侦听器报告“数据包。他们在我为每台机器设置的静态分配的 ULA 地址和自动配置的本地链路地址上执行此操作.
我的问题是,如何在 Linux 中禁用这些功能?我通过“netsh”命令找到了几个适用于 Windows 的指南(这让我很惊讶——Windows 在这方面似乎比 Linux 更可调)。到目前为止,我在 Linux 中的唯一选择似乎是使用 ip6tables 来阻止特定的 ICMPv6 消息类型。但是,查看 RFC4890,它们暗示如果 IPv6 主机要成功加入 IPv6 网络,就不能阻止这些消息。
我对 IPv6 协议的阅读表明,它深受大型企业网络面临的问题的影响。协议工程师似乎不太关心小型专用网络。如果您是大型公司或其他此类企业网络的系统管理员,这很好,但如果您只是“某个人”试图在家庭网络上玩弄协议来学习它,那就有点烦人了。我的学习方法意味着建立像我的 IPv4 网络这样的东西作为基线,然后根据需要启用功能。
所以我问专家,我应该在我的 Linux 和 Windows 主机上禁用这三种消息类型吗?如果我这样做,它会严重破坏我的内部 IPv6 设置吗?当我到达那个阶段时,它将如何影响外部 IPv6(我的 ISP 还没有为客户分配 IPv6 地址,因此目前还没有外部 IPv6 路由,也没有 6 到 4 隧道)?ip6tables 是我在 Linux 中唯一的选择吗?
我还假设我被链接本地地址卡住了,对吧?没有办法摆脱它们吗?他们不可能记住......(也许这就是他的意思?)
我运行 ICMPv6 协议,并使用wireshark 进行了捕获。在捕获中,我有一些多播侦听器报告消息 v2。有些有源ip,ipv6链接本地地址,但有些有::作为源地址?请您告诉我为什么发送带有 :: 源地址的多播侦听器报告消息 v2?
谢谢!
Debian 服务器具有eth0
, eth1
. eth2
,ppp0
设备:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
Run Code Online (Sandbox Code Playgroud)
到处都启用转发:
/proc/sys/net/ipv6/conf ~
all/forwarding=1 default/forwarding=1
eth0/forwarding=1 eth1/forwarding=1
eth2/forwarding=1 ppp0/forwarding=1
Run Code Online (Sandbox Code Playgroud)
并且 autoconf 也被激活:
/proc/sys/net/ipv6/conf …
Run Code Online (Sandbox Code Playgroud) icmpv6 ×7
ipv6 ×7
linux ×2
forwarding ×1
icmp ×1
mld ×1
multicast ×1
ndp ×1
networking ×1
radvd ×1