当前位置: 首页 > article >正文

Linux防火墙-nat表

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主,而云服务器基本上就不会使用系统自带的防火墙,而是使用安全组来代替了防火墙的功能,可以简单理解安全组就是web版的防火墙,我们主要从以下几个方面来讲解Linux防火墙:

Linux防火墙-什么是防火墙

Linux防火墙-4表5链

Linux防火墙-filter表

Linux防火墙-nat表(本章节)

Linux防火墙-常用命令

Linux防火墙-案例(一)

Linux防火墙-案例(二)

Linux防火墙-小结

上一小节,我们介绍了filter表,主要功能就是作为服务器入口,主要功能就是限制或者屏蔽服务器的端口,确保服务器的安全,今天就来介绍下nat表,实际上nat表和我们家庭的路由器有相似的功能。

nat

NAT (Network Address Translation) 表在 iptables 中用于实现网络地址转换的功能。NAT 表允许您修改 IP 数据包中的源地址或目的地址,这对于私有网络与公共互联网之间的通信非常有用。NAT 表通常用于以下几种场景:

一、关联链及作用位置

NAT 表包含三个主要链:PREROUTING:处理所有进入接口的数据包,在它们被路由之前。POSTROUTING:处理所有离开接口的数据包,在它们被路由之后。OUTPUT:处理由本地系统生成的数据包。

  • PREROUTING 链:在数据包进入路由决策之前对其进行操作。主要用于 DNAT(目的网络地址转换),比如将外部网络发往特定公网 IP 和端口的数据包转换到内部服务器的私有 IP 和端口。例如,当有外部请求访问公司的网站服务器时,可在该链将公网 IP 对应端口的请求转发到内部的 Web 服务器的私有 IP 和端口。

  • POSTROUTING 链:在数据包经过路由决策准备离开本机时进行操作。主要用于 SNAT(源网络地址转换),通常用于让内网主机能够使用一个公网 IP 访问外部网络。比如将内网多个设备的私有 IP 地址转换为路由器的公网 IP 地址进行通信。

  • OUTPUT 链:用于处理本机产生的数据包。也可以用于一些特殊的 NAT 场景,例如本机作为一个代理服务器时,对本机发出的数据包进行地址转换操作。但相对前两个链,在 NAT 场景中使用频率稍低一些。

二、规则设置及示例

1.基本语法

SNAT
iptables -t nat -A POSTROUTING -s 源地址范围 -o 输出网卡接口 --to-source 转换后的源地址

假设要将内网 192.168.1.0/24 网段的所有流量的源地址转换为路由器的公网 IP 1.2.3.4,命令如下:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
DNAT
iptables -t nat -A PREROUTING -d 公网 IP 及端口 -j DNAT --to-destination 内部服务器私有 IP 及端口

如果要将外部访问公网 IP 的 8080 端口的流量转发到内网 IP 为 10.0.0.2 的 80 端口,命令如下:

 iptables -t nat -A PREROUTING -d 公网 IP -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.2:80

-t nat  添加到nat表,如果不输入则是默认filter表

三、重要性及应用场景

  • 内网访问互联网:企业内部通常拥有大量的计算机、服务器和其他网络设备,这些设备一般使用私有 IP 地址范围(如 192.168.x.x、10.x.x.x 等)。通过在企业的网络出口设备(如路由器、防火墙等)上配置 NAT,将内部设备的私有 IP 地址转换为企业的公网 IP 地址,实现内部设备访问互联网上的各种资源。

  • 服务器对外发布:当企业内部有服务器需要对外提供服务时,如 Web 服务器、邮件服务器等,可以使用 NAT 的 DNAT(Destination Network Address Translation,目的网络地址转换)功能。将外部网络对企业公网 IP 特定端口的访问请求,转发到内部服务器的私有 IP 和相应端口上,使得外部用户能够访问到企业内部的服务器。

总结

1.家庭路由器实际上就是sant最典型的代表,dnat是由于运营商限制,没有对普通用户开放。

2.snat如下,服务器B就可以当成路由器,前提是服务器A需要把网关设置成服务器B。

图片

3.dnat如下,实际访问服务器A的端口,如果命中dnat规则最终请求会转发到服务器B。

图片

4.以上规则都是范例,并不能真实实现snat和dnat,仅仅是方便了解对应的原理。后面的案例部分会对他进行演示。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。


http://www.kler.cn/a/325259.html

相关文章:

  • Python中的with语句
  • Linux dpkg命令详解
  • 杰控通过 OPCproxy 获取数据发送到服务器
  • 使用win32com将ppt(x)文件转换为pdf文件
  • 鸿蒙实战:页面跳转
  • 【jvm】HotSpot中方法区的演进
  • 828华为云征文 | 使用 Memtester 对华为云 X 实例进行内存性能测试
  • 深入探讨AI 神经网络:类型、特点与创新应用
  • AGI interior designer丨OPENAIGC开发者大赛高校组AI创作力奖
  • C++【类和对象】(取地址运算符重载与实现Date类)
  • 无人机之物流货运篇
  • PDCA优化任务流程
  • OpenCV图像文件读写(2) 检查 OpenCV 是否支持某种图像格式的写入功能函数haveImageWriter()的使用
  • 画个心,写个花!Python Turtle库带你玩转创意绘图!
  • bluefs _flush_range allocated: osd用空间但是显示ceph_bluefs_db_used_bytes is 100%
  • 【国庆要来了】基于Leaflet的旅游路线WebGIS可视化实践
  • 240924-通过服务器代理ip地址及port端口wget等下载文件
  • 如何判断IP有没有被污染过
  • 产品管理 - 互联网产品(3) : 迭代管理
  • 小米笔记本电脑笔记
  • es7.13.2请求体过大
  • java8:处理数据stream并传值
  • 瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法
  • pysim-1
  • [Redis][集群][上]详细讲解
  • ComfyUI 速度更快,显存占用更低的图像反推模型Florence2PromptGen,效果媲美JoyCaption,还支持Flux训练打标