内网畅外网墙–再聊Nginx访问权限管理

内网畅外网墙–再聊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的某个主机。

gateway.png

网关 pk. 路由器

  • 网关:一个大概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关
  • 路由器:连接两个或多个网络的硬件设备,路由器很显然能够实现网关的功能
  • 缺省网关:是子网与外网连接的设备,通常是一个路由器。PC本身不具备路由寻址能力,所以PC要把所有的IP包发送到一个默认的中转地址上面进行转发,也就是默认网关。 这个网关可以在路由器上,可以在三层交换机上,可以在防火墙上,可以在服务器上,所以和物理的设备无关

网络地址

在计算机领域中,网络就是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。网络地址(Network address)则是互联网上的节点在网络中具有的逻辑地址,可对节点进行寻址。

IP地址

IP地址,是指互联网协议地址,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址=网络地址+主机地址

IP地址编址方式

类别最大网络数IP地址范围默认掩码单个网段最大主机数私有IP地址范围
A126(27−22^7-227−2)1.0.0.1-126.255.255.254255.0.0.0/81677721410.0.0.0-10.255.255.255
B16384(2142^{14}214)128.0.0.0-191.255.255.255255.255.0.0/1665534172.16.0.0-172.31.255.255
C2097152(2212^{21}221)192.0.0.0-223.255.255.255255.255.255.0/24254192.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 来进行控制
个人网络信息.png
通过 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设计的,接口类型简单,拥有很强二层包处理能力,非常适用于大型局域网内的数据路由与交换,它既可以工作在协议第三层替代或部分完成传统路由器的功能,同时又具有几乎第二层交换的速度。

发表评论

电子邮件地址不会被公开。 必填项已用*标注