内网畅外网墙–再聊Nginx访问权限管理
閱讀本文約花費: 6 (分鐘)
接昨天。
low address bits of 192.168.101.0/16 are meaningless in /usr/local/nginx/conf/nginx.conf:122
location / { allow 192.168.101.0/24; deny all; ... } 12345
网关
网关在网络层以上实现网络互连,是复杂的网络互连设备。网关既可以用于广域网互连,也可以用于局域网互连。
A:IP地址范围 192.168.1.1~192. 168.1.254,子网掩码 255.255.255.0
B:IP地址范围 192.168.2.1~192. 168.2.254,子网掩码 255.255.255.0
计算所得(见下述计算方式):A 网络地址为 192.168.1.0,B网络地址为 192.168.2.0。
两个网络中的主机处在不同的网络里,而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
网关 pk. 路由器
- 网关:一个大概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关
- 路由器:连接两个或多个网络的硬件设备,路由器很显然能够实现网关的功能
- 缺省网关:是子网与外网连接的设备,通常是一个路由器。PC本身不具备路由寻址能力,所以PC要把所有的IP包发送到一个默认的中转地址上面进行转发,也就是默认网关。 这个网关可以在路由器上,可以在三层交换机上,可以在防火墙上,可以在服务器上,所以和物理的设备无关
网络地址
在计算机领域中,网络就是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。网络地址(Network address)则是互联网上的节点在网络中具有的逻辑地址,可对节点进行寻址。
IP地址
IP地址,是指互联网协议地址,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址=网络地址+主机地址
IP地址编址方式
类别 | 最大网络数 | IP地址范围 | 默认掩码 | 单个网段最大主机数 | 私有IP地址范围 |
---|---|---|---|---|---|
A | 126(27−22^7-227−2) | 1.0.0.1-126.255.255.254 | 255.0.0.0/8 | 16777214 | 10.0.0.0-10.255.255.255 |
B | 16384(2142^{14}214) | 128.0.0.0-191.255.255.255 | 255.255.0.0/16 | 65534 | 172.16.0.0-172.31.255.255 |
C | 2097152(2212^{21}221) | 192.0.0.0-223.255.255.255 | 255.255.255.0/24 | 254 | 192.168.0.0-192.168.255.255 |
- D、E类为特殊地址;D用于组播、E用于科研保留。
子网掩码
子网掩码,是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
- 通过子网掩码,就可以判断两个IP在不在一个局域网内部
- 子网掩码可以看出有多少位是网络号,有多少位是主机号
通过IP地址和子网掩码计算网络地址
IP地址:192.168.101.222 (11000000 10101000 01100101 11011110)
子网掩码:255.255.255.0 (11111111 11111111 11111111 00000000)
11000000101010000110010111011110&11111111111111111111111100000000−−−−−−−−−−−−−−−−−1100000010101000011001010000000011000000 10101000 01100101 11011110 \\\& 11111111 11111111 11111111 00000000 \\ —————–\\ 11000000 10101000 01100101 0000000011000000101010000110010111011110&11111111111111111111111100000000−−−−−−−−−−−−−−−−−11000000101010000110010100000000
网络地址:192.168.101.0(11000000 10101000 01100101 00000000)上述计算所得
主机地址:222(11011110)后8位
0/24
是啥意思?
192.168.101.0/24 (11000000 10101000 01100101 00000000)
24 标示了我们的网络号的位数(也就是子网掩码中前多少号为1),8(32-24)是主机号位数,IP地址=网络地址+主机地址。
说明 | 结果 |
---|---|
后8位全0,是子网网络地址(00000000) | 192.168.101.0 |
后8位全1,是子网广播地址(11111111) | 192.168.101.255 |
剩余为有效可分配地址(00000001–11111110 ) | 192.168.101.1-192.168.101.254 |
- 网络地址(Network address)是互联网上的节点在网络中具有的逻辑地址,可对节点进行寻址「见上述」。
- 广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址
回到开始
文章开头,大家看到的那段配置,是对资源访问做限制所配置,基本诉求为:内网可以直接访问,外网需要通过账户密码访问。详见:Nginx 访问权限管理,为了满足场景,我们需要通过 ngx_http_auth_basic_module 来进行控制
通过 IP地址 & 子网掩码
可得知网络地址为 192.168.101.0,网络位数为 24。因此得出如下配置:
location / { allow 192.168.101.0/24; deny all; ... } 12345
IP 为 192.168.101.x 的都可以直接访问,其他 IP 地址需要账号和密码验证。
当然为了可以更大范围的内网允许访问(办公室多内网段:0/101/200/201 => 使用三层交换机打通各子局域网),可以将网络位数控制的更小。
location / { allow 192.168.0.0/16; deny all; ... } 12345
IP 为 192.168.x.x 的都可以直接访问,其他 IP 地址需要账号和密码验证。
三层交换机
出于安全和管理方便的考虑,主要是为了减小广播风暴的危害,必须把大型局域网按功能或地域等因素划成一个个小的局域网,这就使VLAN技术(虚拟局域网)在网络中得以大量应用,而各个不同VLAN间的通信都要经过路由器来完成转发,随着网间互访的不断增加。单纯使用路由器来实现网间访问,不但由于端口数量有限,而且路由速度较慢,从而限制了网络的规模和访问速度。
基于这种情况三层交换机便应运而生,三层交换机是为IP设计的,接口类型简单,拥有很强二层包处理能力,非常适用于大型局域网内的数据路由与交换,它既可以工作在协议第三层替代或部分完成传统路由器的功能,同时又具有几乎第二层交换的速度。