iptables之NAT

iptables NAT 实践与配置详解
本文介绍了iptables的NAT功能,用于改变数据包的源和目标IP地址及端口。详细讲解了NAT的PREROUTING、POSTROUTING、OUTPUT三个链,以及如何通过SNAT、DNAT、MASQUERADE和REDIRECT实现地址转换和端口映射。通过开启Linux系统的IP转发,并配置相应的iptables规则,可以实现内网主机的公网访问和共享IP上网等功能。
部署运行你感兴趣的模型镜像

在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进行修改,更为确切的说,除了将源MAC地址换成自己的MAC地址以外,路由器不会对转发的数据包做任何修改。NAT (Network Address Translation,网络地址转换)恰恰是出于某种特殊需要而对数据包的源ip地址、目标ip地址、源端口、目标端口进行改写的操作。利用iptables的内置表NAT可以实现上述功能

iptables NAT的三个链:PREROUTING,POSTROUTING,OUTPUT

  PREROUTING:可以在这里定义进行目标地址NAT的规则,因为路由器进行路由时只检查数据包的目标ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT
  POSTROUTING:可以在这里定义进行源地址NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则
  OUTPUT:定义对本地产生的数据包的目的NAT规则

注:在CentOS 7中NAT表增加了INPUT链,源地址转换(SNAT)也可以写在INPUT链上

NAT处理的动作选项

  SNAT:源地址转换,改变数据包的源地址,常接选项--to-source
  DNAT:目标址转换,改变数据包的目标地址,常接选项--to-destination
  MASQUERADE:地址伪装,适用于ADSL等动态拨号上网的IP伪装
  REDIRECT:端口映射,通常用实现透明代理和对外开放内网某些服务,常接选项--to-ports

三个链支持的处理动作

  PRERROUTING:DNAT,REDIRECT  对目标地址进行修改,支持-o选项(路由之前)
  POSTROUTING:SNAT,MASQUERADE  对源地址进行修改,支持-i选项(路由之后)
  OUTPUT:DNAT,REDIRECT     处理来自NAT主机本身生成的出站数据包(本机)    

要实现NAT,首先要打开核心转发功能

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

想要永久生效的话,编辑/etc/sysctl.conf文件,修改成net.ipv4.ip_forward = 1,然后执行sysctl -p可以立即生效

NAT不同处理动作的配置

1.SNAT:隐藏内网主机ip地址,也可以实现共享公网ip上网

eg:

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 172.16.8.9

源地址是192.168.1.0/24转化成172.16.8.9

2.DNAT:可以通过公网ip访问局域网内的服务

eg:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 172.16.8.9 -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.9:8080

访问172.16.8.9的80端口时,会映射到192.168.1.9的8080端口

3.MASQUERADE:ADSL拨号上网,可以认为是SNAT的一种特殊情况(转换地址是动态的)

eg:

[root@localhost ~]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

4.REDIRECT:在本机上进行端口映射,可以认为是DNAT的一种特殊情况(目标地址是本机)

eg:

[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j REDIRECT --to-ports 2121

访问本机21端口时,会被映射到2121端口

您可能感兴趣的与本文相关的镜像

Dify

Dify

AI应用
Agent编排

Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了 后端即服务(Backend as a Service) 和LLMOps 的理念,让开发者能快速、高效地构建和部署生产级的生成式AI应用。 它提供了包含模型兼容支持、Prompt 编排界面、RAG 引擎、Agent 框架、工作流编排等核心技术栈,并且提供了易用的界面和API,让技术和非技术人员都能参与到AI应用的开发过程中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值