iptables实现nat地址转换

本文详细介绍了iptables中的SNAT和DNAT地址转换。SNAT用于源地址转换,常用于解决内网用户共享公网地址上网问题,DNAT则用于目标地址转换。在数据包流转过程中,SNAT在POSTROUTING链中执行,DNAT在PREROUTING链中执行,以确保正确的地址转换和通信完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

SNAT:源地址转换:目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机目前大多都是解决内网用户用同一个公网地址上网的情况
DNAT:目标地址转换:和SNAT相反,源地址不变,重新修改目标地址,在本机建立NAT表项,当数据返回时,根据NAT表将源地址修改为数据发送过来时的目标地址,并发给远程主机

原理

同filter表一样,nat表也有三条缺省的”链
(1)PREROUTING:目的DNAT。规则:把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ。因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING转换
(2)POSTROUTING:源SNAT。规则:在路由以后在执行该链中的规则。系统先路由——>再过滤(FORWARD)——>最后才进行POSTROUTING SNAT地址翻译其match 源地址是翻译前的。

工作机制

SNAT的数据流向过程

首先进入prerouting,发现不是本网段的地址,而后开始查找路由表(查找路由的过程在prerouting和forword之间),于是经过forword链进行转发,在通过postrouting时进行NAT转换。在这个流程中,NAT转换的步骤在postrouting链上实现,之所以不再prerouting上做nat是因为数据包在进来之前,还不知道是本网段地址还是外网地址
这里写图片描述
如图,假设中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值