IPv6 转发在外部以单向方式工作

IPv6 转发在外部以单向方式工作

最初在网络工程上询问,但被告知改为在这里询问。

我在路由我自己的 IPv6 前缀以进行任播时遇到了问题。我的 ASN 和 IPV6/48 由 RIPE 赞助,我正在努力使其正常工作。任何需要检查的事项的指示都将不胜感激。

我目前的问题是目标服务器(VPS)正在接收请求并处理它们但没有发送响应。

我已经在目标 vps 上设置了一个 dns 服务器,它通过提供商提供的 IPv4 和 IPv6 地址工作正常,并且通过 lan 也能正常工作,但是当我尝试通过外部连接使用它时它就挂起了。

我已使用 ping dot pe mtr6 测试,它一旦到达我的“边缘路由器”就会停止响应,并从远程机器发出挖掘请求来测试 dns 服务器是否响应,但没有运气。

我使用 sshdump 在与“边缘路由器”通信的 lan vnic 上运行了 wireshark,并且可以看到 icmp6 和 dns 请求通过我设置的 ipv6 ip 进入正确的服务器,因此入站可以正常工作。

Wireshark 显示 icmp6 请求:

126 17.162128   2001:19f0:7401:885e:5400:4ff:fe1e:3ed8  2001:67c:2284::1    ICMPv6  78  Echo (ping) request id=0x3532, seq=33089, hop limit=12 (no response found!)

NIC:enp1s0(wan)NIC:enp6s0(lan)NIC:bgp0(我的 IP 范围的虚拟接口,我确实尝试将其作为 enp6s0 的附加 IP,结果相同)

设置如下;边缘路由器:带有虚拟专用网络的 Vultr VPS 操作系统:Fedora 36 路由:Bird2 宣布我的 /48 前缀并监听 ospfv3 数据防火墙:iptables

ip-6r:

::1 dev lo proto kernel metric 256 pref medium
unreachable ::/96 dev lo metric 1024 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 pref medium
2001:67c:2284::/64 via fe80::1eb1:e0d5:55fd:df73 dev enp6s0 proto bird metric 32 pref medium
unreachable 2001:67c:2284::/48 dev lo proto bird metric 32 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 pref medium
2a05:f480:1000:3ba::/64 dev enp1s0 proto ra metric 100 pref medium
2a05:f480:1000:3ba::/64 dev enp1s0 proto kernel metric 256 expires 2591658sec pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 pref medium
fd28:e0d9:543c:c651::/64 dev enp6s0 proto bird metric 32 pref medium
fd28:e0d9:543c:c651::/64 dev enp6s0 proto kernel metric 101 pref medium
fe80::/64 dev enp1s0 proto kernel metric 1024 pref medium
fe80::/64 dev enp6s0 proto kernel metric 1024 pref medium
default via fe80::fc00:4ff:fe1c:740d dev enp1s0 proto ra metric 100 pref medium
default via fe80::fc00:4ff:fe1c:740d dev enp1s0 proto ra metric 1024 expires 1458sec hoplimit 64 pref medium

ip6tables:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp1s0 -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -p ipv6-icmp -j ACCEPT
-A FORWARD -i enp1s0 -o enp6s0 -j ACCEPT
-A FORWARD -i enp6s0 -o enp1so -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

SystemD 将以下内容作为 StartExecPost 运行到 bird:

#!/bin/bash
/usr/sbin/sysctl -w net.ipv4.ip_forward=1
/usr/sbin/sysctl -w net.ipv6.conf.all.forwarding=1
/usr/sbin/sysctl -w net.ipv6.conf.default.forwarding=1
/usr/sbin/sysctl -w net.ipv6.conf.enp1s0.accept_ra=2

DNS 服务器:带有虚拟专用网络的 Vultr VPS 操作系统:Fedora 36 路由:Bird2 通过 OSPFv3 更新“边缘路由器”路由表 防火墙:iptables DNS 服务器:PowerDNS

ip-6r:

::1 dev lo proto kernel metric 256 pref medium
unreachable ::/96 dev lo metric 1024 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 pref medium
2001:67c:2284::/64 dev bgp0 proto kernel metric 550 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 pref medium
2a05:f480:1000:210::/64 dev enp1s0 proto ra metric 100 pref medium
2a05:f480:1000:210::/64 dev enp1s0 proto kernel metric 256 expires 2591532sec pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 pref medium
fd28:e0d9:543c:c651::/64 dev enp6s0 proto kernel metric 101 pref medium
fe80::/64 dev enp1s0 proto kernel metric 1024 pref medium
fe80::/64 dev enp6s0 proto kernel metric 1024 pref medium
fe80::/64 dev bgp0 proto kernel metric 1024 pref medium
default via fe80::fc00:4ff:fe17:2945 dev enp1s0 proto ra metric 100 pref medium
default via fe80::fc00:4ff:fe17:2945 dev enp1s0 proto ra metric 1024 expires 1332sec hoplimit 64 pref medium

ip6tables:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A INPUT -p tcp --dport 53 -j ACCEPT
-A INPUT -i enp1s0 -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

答案1

我发现有一个打字错误会破坏出口流量:

-A FORWARD -i enp6s0 -o enp1so -j ACCEPT

输出接口名称为 ,但enp1so实际应为enp1s0。 其效果是传入流量可以正常工作,但任何传出流量(包括回复)都会被拒绝:外部世界将看不到任何内容,而内部世界的尝试(或回复)将被拒绝,甚至可能不会留下使用 的持续连接的痕迹netstat

发现这类问题ip6tables-save -c(重点-c) 可以通过显示规则应该匹配但实际不匹配的地方(没有反击)来提供帮助。

相关内容