设置:
我们是一个公寓大楼,大约有 1700 个单位。每间公寓都有互联网,每间公寓都带有以太网插头。该网络有 60 台 HP 2910al-48G 交换机连接到中央 HP 5412 核心交换机。
租户可以将他们的 PC 直接插入网络,或者他们可以购买自己的家庭网关并将其插入。租户还可以选择使用转储 L2 交换机来连接多台 PC。一些租户拥有带有内置 2 端口交换机的 SIP 电话。
问题:
我们希望为 IPv4 和 IPv6 提供公寓之间的 L2 分离。我们希望避免在多个公寓之间共享一个 VLAN。我们希望避免公寓之间的广播聊天。例如,Windows PC 不应自动发现邻居的任何设备。
由于 IPv4 耗尽问题,我们无法为每个公寓分配一个完整的 IPv4 子网。我们不希望部署 NAT。
我们想为每个公寓分配一个唯一的 /64 IPv6 子网。此外,我们希望为通过 DHCPv6 前缀委派请求此类请求的家庭网关提供 /60 子网。
如何配置 DHCP/DHCPv6 服务器不在此问题的范围内。这只是关于如何配置交换机。但假设 DHCP 服务器可以运行脚本作为地址分配和其他事件的触发器。
有人建议我们应该为每个公寓配置一个唯一的 VLAN。然后在每个 VLAN 上部署一个静态 IPv6 /64 子网。应该是 5412 还是 2910 做路由?交换机如何获知DHCPv6-PD分配的/60路由?
假设 RIPE 分配了一个 /21(2048 个地址)IPv4 子网。问题是在所有 1700 个 VLAN 中分配单个地址。
有人建议我们使用 proxy-arp 选项。这将允许我们使用整个 /21 使用主机路由将流量发送到正确的端口。proxy-arp 解决了一个租户向另一个租户发送数据包的情况。
交换机如何获知主机路由?DHCP …
我正在尝试设置一个鱿鱼代理,该代理将通过一系列端口接受一个 IPv4 上的多个入站连接,并且每个端口连接都连接到唯一的 IPv6 地址。
我已经命名了每个端口连接,并根据连接名称指定了一个 ACL,然后我尝试为每个端口定义一个传出 IPv6。下面的脚本有效,因为它接受不同端口上的连接并通过 IPv6 路由出去,但是,即使每个用户定义了不同的 ipv6,所有出站连接都使用相同的 IPv6(user5) - 奇怪的是,即使我评论- 从 squid.conf 中删除 user5 IPv6,它仍然用于出站连接。
任何人都可以看到这里有什么问题吗?(在 Centos 6 64 位上使用 Squid 3.1.1)
## declare an acl that is true for all ipv6 destinations
acl to_ipv6 dst ipv6
##tell Squid to listen on sequential ports and to designate a name for each inbound connection.
http_port 241.xxx.xxx.101:3128 name=3128
http_port 241.xxx.xxx.101:3129 name=3129
http_port 241.xxx.xxx.101:3130 name=3130
http_port 241.xxx.xxx.101:3131 name=3131
http_port 241.xxx.xxx.101:3132 name=3132
## designate acl based on inbound connection name …Run Code Online (Sandbox Code Playgroud) 由于更新我的 nginx 服务器只能通过 IPv6 而不是 IPv4,而我的配置包含
listen [::]:80 default_server;
Run Code Online (Sandbox Code Playgroud)
现在我已将其更改为
listen [::]:80 default_server ipv6only=off;
Run Code Online (Sandbox Code Playgroud)
并且服务器再次通过 IPv4 可用。这接缝是由于nginx 1.3.4 中的更改(“nginx 1.3.4 的更改”部分)。
由于我在同一台机器上有多个服务器配置,我想ipv6only=off全局设置是否有可能这样做?
我正在尝试使用 NGINX 在 CentOS 7.2 上设置 IPv6 Web 服务器。我已经测试了我的 IPv6 连接传出和传入 - 一切正常。我的 IP、AAAA 记录等也很好。基本上一切正常,直到我启用 FirewallD。
我已将其设置为默认为具有 eth0 接口的放置区。我已启用 dhcpv6-client、http、https 和 ssh(ssh 在自定义端口上)。启用防火墙后,没有 IPv6 流量可以离开或进入机器。Traceroute6 到任何东西(甚至网关)只到本地主机。如果我禁用防火墙,一切都很好。
我不知道为什么会这样。我在网上找不到任何东西以使 FirewallD 将相同的 IPv4 配置应用于 IPv6 流量。我个人认为,它会自动执行此操作,因为它的所有命令都与 IP 协议无关。
任何帮助深表感谢。
因此,我们最近从 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。
那么,有什么建议吗?
我们的办公网络在内部是双栈的,但与 Internet 其余部分的连接仅支持 IPv4。我在 Linux 机器上设置了 BIND 9.9 来处理 DNS 解析。
有没有办法在不禁用 IPv6 的情况下将 BIND 配置为在联系其他 DNS 服务器时更喜欢使用 IPv4?我想启用 IPv6,以便在我们与外界建立 IPv6 连接后一切正常,但同时不会用error (network unreachable) resolving 'microsoft.com/DS/IN': 2001:7fd::1#53消息堵塞日志。
鉴于阻止单个 IPv6 地址似乎有些无意义,因为最终用户通常至少拥有 2**64 个地址,我们需要阻止一个范围,该范围标识“站点”。
在此上下文中,“站点”类似于家庭或小型办公室用户。RFC 6177 讨论了将地址块分配给小型站点:
... 给家庭站点一个单一的 /64 可能很诱人,因为与今天的 IPv4 实践相比,这已经是更多的地址空间。
然而,这排除了即使是主站点也会增长以支持未来多个子网的期望。因此,默认情况下,强烈希望即使是主站点也能获得多个子网的空间。因此,本文档仍然建议为主站点提供多于一个 /64 的位置,但也不建议为每个主站点提供一个 /48。
也就是说,我在网上讨论中看到 /64 和 /56 都是国内用户的常见分配。
如果我阻止一个 /64,而攻击者有一个 /56,那么他们还有 255 个子网可以攻击我。
相反,如果我阻止 /56,结果 ISP 分配了 /64 的块,我可能还会排除 255 个其他用户。现在,如果考虑随机分布,通过随机排除 255 个站点而实际影响流量的可能性非常低。然而,根据定义,它不是随机的。从这个意义上说,我可以阻止我的网站受欢迎的一个小地理区域是可行的。
我使用阻塞的例子,但实际上这是一个更普遍的问题,它扩展到速率限制、分析等。
简而言之,识别“站点”的最佳前缀大小是多少?是否有任何指导方针?
我可以打字
echo bbr > /proc/sys/net/ipv4/tcp_congestion_control
Run Code Online (Sandbox Code Playgroud)
更改在 IPv4 上运行的 TCP 连接的拥塞控制算法,但是对于那些通过 IPv6 到达的连接,我该如何做呢?
上面的命令是否为两者都设置了它?
我在 Hetzner 设置了 KVM 虚拟化服务器。Hetzner 为我提供了一个主 IP (95.xxx.xxx.235) 和一个 /29 IPv4 子网 (95.xxx.xxx.184/29) 和一个 /64 IPv6 网络 (2a01:xxxx:xxxx:xxxx::/ 64)。
KVM 来宾 (Debian Stretch) 在网络服务重新启动时重新启动 20 分钟后恰好失去 IPv6 连接。即使连接丢失,我也可以 ping 默认网关 (fe80::1)。IPv4 连接始终保持正常运行,没有任何问题。
目前接口设置为桥接模式下的 macvlan,我也尝试过 VEPA 和私有模式,但都没有成功。此外,NIC 类型设置为 e1000,但我也尝试过 virtio,但没有成功。
连接丢失后,我从主机上的物理网卡获取了 TCP 转储,它显示有回显请求离开和回显回复到达接口,但是从来宾网卡获取的 tcpdump 我只能看到离开的请求网卡。
主机上的 /etc/network/interfaces:
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp2s0
iface enp2s0 inet static
address 95.xxx.xxx.235
netmask 255.255.255.192
gateway 95.xxx.xxx.193
up route add -net 95.xxx.xxx.192 netmask 255.255.255.192 gw 95.xxx.xxx.193 dev enp2s0
iface …Run Code Online (Sandbox Code Playgroud) 全新且完全打补丁的 Ubuntu 18.04 实例(在 Linode VPS 上),带有从官方 Docker 存储库安装的 Docker 18.09.0(构建 4d60db4)。
IPv4 网络运行良好,无论是在容器之间还是内部到外部(一旦我设置了net.ipv4.ip_forward=1)。
然而,IPv6 甚至不会在容器之间进行通信,更不用说在外部进行通信了。
我尝试了很多东西,但发现本指南是最好的(除了它不起作用:-))
因此我有...
更新/etc/docker/daemon.json了以下内容并重新启动:
{
“ipv6”: true,
“fixed-cidr-v6”: “2001:db8:1::/64”
}
Run Code Online (Sandbox Code Playgroud)
检查了 MTU。
运行两个 docker 容器来测试这个:
sudo docker run -itd ajeetraina/ubuntu-iproute bash
sudo docker run -itd ajeetraina/centos-iproute bash
Run Code Online (Sandbox Code Playgroud)
两者都在内部显示出完美的连接性:
$ sudo docker exec -it b1cbb63b4e88 ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:acff:fe11:3 prefixlen 64 scopeid 0x20<link>
inet6 2001:db8:1::242:ac11:3 prefixlen 64 scopeid 0x0<global>
ether …Run Code Online (Sandbox Code Playgroud)