啊!我的内网!
原来的内网主要使用10.0.0.0/8
网段,但随着后期设备的增加内网的使用越来越感到力不从心.
基于网络安全的压力,设备都分配的乱糟糟,IPv6的普及等等因素,重画子网!
网络环境
整体上是以Proxmox Virutal Environment为基础的虚拟化平台,通过容器化部署了网关,Web等应用.具体可以参考这篇(还没写,估计要鸽好几年:innocent:)文章.
前置知识
你需要学习二进制,十进制,十六进制的转换和表示;CIDR,专用网络,虚拟局域网计算机网络基础知识
划分思路
可用区块
RFC1918 规定区块名 | IP地址区块 | IP数量 | 分类网络 说明 | 最大CIDR区块 (子网掩码) | 主机端位长 |
---|---|---|---|---|---|
24位区块 | 10.0.0.0 – 10.255.255.255 | 16,777,216 | 单个A类网络 | 10.0.0.0/8 (255.0.0.0) | 24位 |
20位区块 | 172.16.0.0 – 172.31.255.255 | 1,048,576 | 16个连续B类网络 | 172.16.0.0/12 (255.240.0.0) | 20位 |
16位区块 | 192.168.0.0 – 192.168.255.255 | 65,536 | 256个连续C类网络 | 192.168.0.0/16 (255.255.0.0) | 16位 |
22位区块 | 100.64.0.0 - 100.127.255.255 | 4,194,304 | 64个连续 B 类网络 | 100.64.0.0/10 (255.192.0.0) | 22位 |
通过应用划分
首先对需要进行网络通信的应用进行分类,我把我需要联网的设备分为以下几类:
1. 生活用网
2. 虚拟化平台底层互联
3. 虚拟化存储互联
4. 虚拟应用联网
- 容器联网
- 容器互联
5. IPv6支持
分配子网
生活用网
这个子网主要用于手机电脑等设备上网使用,与服务器分离开,并且设备不会太多,不会超过255个,看心情在专用网络中划分一个8位区块足够.
我在192.168.0.0/16
这个子网中相中了192.168.8.0/24
这个区块,前面11
位留给运营商的设备.
考虑到物联网的需求,物联网设备最好单独划出一片区块,但问题是我没有这个需求
虚拟化平台底层互联
PVE的集群真的超棒啊
虽然说PVE一个集群最多32台服务器,但是我还是按照512台主机规格划子网,毕竟可以用不了,不能没得用
再为了好看区分出来,这次划了172.16.0.0/23
这个区块,(emm有点奢侈)
虚拟化存储互联
说实话到不了高可用级别就不用单独搞分布式存储吧
子网只管画出来,总比用的时候没有强->172.16.2.0/23
虚拟应用联网
这算是最大的问题了,应用我有虚拟机
和容器
两种,为了便于区分,虚拟机单独放在一起,容器单独放在一起
虚拟机:
规划最大数量16383
台,预留空间后分配:172.16.64.0/18
当初刚学CIDR的时候还在想,能不能把
172.16.4.0-172.16.126.255.255
放在一起,后来通过二进制画1的方式发现这根本不可能...emm,学知识一定要学原理
容器:
啊容器的数量就多了,65535个应该不是问题->172.17.0.0/16
但是这和Docker的网段会有冲突,详见
(又没写)Baidu.com
群晖的Docker可以看这篇
容器互联:
在学kubernetes的时候,发现容器间互联需要子网.因为对外提供服务有网关,所以多组容器IP冲突也不要紧(反正不会互相访问到内网去)
RFC6598中定义100.64.0.0/10
用于电信级NAT场景,虽然说只能用于运营商的内部网络,但拿来用一下应该问题不大吧,反正公网上不会寻址
它也被我拿来做Docker Bridge的网段
IPv6支持
这么说吧,一开始我是拒绝接受全面部署IPv6的,因为我觉得IPv6公网都可以访问,它不安全.
我又不想说,每台主机都搞那个防火墙,那个端口开得啊,Duang~,很乱,很杂.结果用起来一点都不爽
上面就是第一次部署完IPv6的感受
后来,我发现可以单独搞一个IPv6Only网段,运营商分配的是68位前缀(::/60
),我们SLAAC的默认前缀大小只需要64位前缀(::/64
)
So,我们可以分配16个子网欸:smirk:
给生活用网分配一个子网,给IPv6Only分配一个子网,就解决了地址分配的问题
但是Ipv6防火墙的问题还没有解决啊,我不想每一个主机都配置防火墙啊QAQ
但还是天无绝人之路啊
MyNote:
General Settings 的 Forward 默认规则改为 drop, 影响从外网访问内网lan,不开放的ipv6地址和端口。
ipv6地址掩码比v4灵活,v6可以掩前面,也可以掩后面。v4就只能掩前面
Zones 的 WAN => [--] 的 Input 默认规则改为 drop,影响从外网访问路由器本身的wan(ipv4/6),lan(ipv6)地址,不开放的端口。不影响端口映射。
Zones 的 WAN => [--] 的 Forward 默认规则改为 drop,影响从外网访问非lan(包括wan,未设置为lan的其他接口),不开放的地址和端口。
emm内网依赖Openwrt部署IPv6的文章咕咕咕啦
注意事项
部署端口映射的时候要注意NAT 环回
(发夹NAT
),但是我用了更讨巧的方法解决互访的的问题,详见这篇文章
分配Vlan
我们使用IEEE 802.1Q来将局域网划分开
在IEEE 802.1Q下,给定以太网网络上的VLAN的最大数量为4,094(由12位VID字段提供的4,096个值减去范围两端的保留值,即0和4,095)。
考虑到网络设备内部可能会使用到vlan,使所以我们把vlan1-128
保留给设备
- 129-131: 电信上行
- 132-134: 联通上行
- 135-137: 移动上行
- 138-140: 其他上行
- 141-161: 保留
- 162-169: 客户端内网
- 170-173: 虚拟化平台底层互联
- 174-177: 虚拟化存储互联
- 178-193: 保留
- 194-197: 虚拟机
- 198-201: 容器
- 202-229: 保留
- 230-245: IPv6
各网段互联
在网关上配置好转发规则,防火墙规则即可