iptables 之NAT

实验前必知道

1 linux主机IP地址是属于主机的不是属于网卡的

2 linux主机需要进行转发路由数据包,需要开启ip_forward 功能

3 iptables 原理

当一台 服务器设备作为 防火墙设备的功能的时候,其 数据包经过的各个链的流向图,因为不经过本机所以不经过INPUT 和 OUTPUT链

实验图: 利用虚拟机 设备A linux    设备Firewall: linux 主机   设备B: winXP 主机

1 ip_forward 功能

完成了 所有主机的 ip地址配置

1 A 上ping 192.168.204.11  可以通信,但是ping 192.168.204.10 不可以通信

原因: Firewall 主机上的 ip_forward 功能没有开启

开启方法

  暂时开启: echo 1 > /proc/sys/net/ipv4/ip_forword

  永久启用: vim /etc/sysctl.conf 编辑  ip_forward 为1

        sysctl -p

结果如:

注意: A ping Firewall 的 eth0接口的192.168.204.11地址,尽管Firewall没有开启ip_forward功能依然可以ping通,原因在于 IP地址是内核的,属于主机不是属于网卡的,所有 pingFirewall主机上的IP地址,和 ip_forward没有任何关系

2 模拟NAT功能

需求: 192.168.100.0/24 网段属于私有网段,192.168.204.0/24 属于公网(虽然该地址是私有地址,这里只是模拟而已)

私有网络内的地址需要上网,则需要进行地址装换,此时让firewall的iptables 实现地址转换功能

1 rule应该在nat 表中,POSTROUTING 链上 进行

[[email protected]rewall ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 192.168.204.11

操作:

A 主机上 ping 192.168.204.10

Firewall 上进行tcpdump 抓包 验证

[[email protected] ~]# tcpdump -n -vv -p icmp

192.168.204.11 > 192.168.204.10: ICMP echo request, id 57620, seq 21, length 64
19:09:29.034864 IP (tos 0x0, ttl 128, id 2131, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.204.10 > 192.168.204.11: ICMP echo reply, id 57620, seq 21, length 64
19:09:30.035808 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto ICMP (1), length 84)

可见 iptables 规则已经将 192.168.100.0/24 网段的 地址 转换成 192.168.204.11

192.168.204.11 代替 100.0 网段的地址进行访问外网,并且通过ip_nat等会话表等记录这个转换

注:

-j SNAT 和 -j MASQUERADE 的区别

SNAT用在使用静态地址进行转换

MASQUERADE 是使用在当公网的那个地址是个动态的时候,如每次adsl拨号上网每次拨到的公网地址不相同是,使用-j MASQUERADE 这样它会动态的获取当前地址让私网转换,但是效率不高,开销比SNAT高

[[email protected] ~]# iptables -t nat -R POSTROUTING 1 -s 192.168.100.0/24 -j MASQUERADE     修改成这条规则可以取代SNAT
[[email protected] ~]# iptables -t nat -nvL

时间: 2024-08-27 01:35:51

iptables 之NAT的相关文章

iptables配置——NAT地址转换

iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ.           因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT;          系统先PREROUTING DNAT翻译——>再过滤(FORWARD)——>最后路由.           路由和过滤(FORW

IPtables(5)NAT

nat:NetworkAddress Translation,安全性,网络层+传输层 SNAT(只修改请求报文的原地址;),DNAT(只修改请求报文的目标地址,端口映射,任何做一个DNAT需要对应一个SNAT) proxy:代理,应用层 DNAT\SNAT 核心转发.路由,不修改头部报文 修改源地址,NAT,修改头部报文,最初设计目标是为了安全性 nat表 PREROUTING(DNAT) OUTPUT POSTROUTING(SNAT) 源地址转换:iptables -t nat -A POS

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

linyux iptables SNAt NAT 【原创】

rpm -ql iptables 查看安装的模块 iptables -t filter -L –n iptables -L –n这两个命令的效果是一样的 iptables -t nat -L –n查nat表 iptables -t mangle -L –n查mangle表 ============================================== [[email protected] ~]# iptables -help Usage: iptables -[AD] chain 

Linux主机上通过iptables实现NAT功能

实验:如下模型,node1为内网主机,IP地址为192.168.10.2:node3为外网主机,IP地址为10.72.37.177(假设此地址为公网地址),node3上提供web server和FTP Server的功能:内网主机node2主机有2块网卡,地址分别为eth0:192.168.10.1和eth2:10.72.37.91(假设此地址为公网地址): 现要求在node2上通过iptables配置实现SNAT功能,并做如下限制: 1.node1可以访问node3提供的web服务和ftp服务

iptables之nat

网络结构如下: NAT,即网络地址转换.如上图中三台机器,C服务器配置内网IP,B服务器可以正常上网同时打开了核心转发功能,B.C之间可以互相通信.但C无法访问外网,原因是当192.168.2.10访问192.168.1.10时(即内网访问外网),C的数据包可以正常发送给A,但是C是内网地址,服务器A的响应包是无法发送C的,所以需要进行地址转换.步骤如下: 1.服务器B打开核心转发功能(略): 2.在服务器B的防火墙上配置NAT,我们要让C可以正常访问外网,防火墙配置如下: # iptables

iptables 的NAT使用实验

+----------------------+                  +--------------------------+                +------------------+|  192.168.1.12 |   <-------->    |  192.168.1.11   |   <-------->  |  10.1.1.2    ||                         |                  |    10.

iptables之nat转发

主要分为路由前转发PREROUTING,和路由后转发POSTROUTING. 何为路由前?也就是从外部传入数据,在到达主机网卡,还未进入网卡的瞬间. 何为路由后?也就是从外部传入数据,进入并经过主机某个网卡后,向外传出数据的瞬间. 一个简单的模型如下: 外部数据------>主机网卡(如eth0.eth1等)------>目的地 路由前                           路由后 首先把转发策略打开 [[email protected]~]# vi /etc/sysctl.co

can&#39;t initialize iptables table `nat&#39;: Table does not exist

第一种 如果说nat名字是大写的NAT 试试iptables -tnat -L 原因是如果使用命令iptables -tNAT -L 是没有NAT表的也会出现这个错误 第二种:该错误完整应该是这样的: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. 首先 [[email

iptables 之 NAT 中的DNAT 介

iptables 有地址转换的NAT功能 1 常用在  SNAT 将私有地址转换为公有地址 进行私有内的地址可以顺利访问外网 2 DNAT呢? 假设一个这样的场景,私有网络有两个服务器很繁忙,并且没有使用公网地址,现在需要对外提供服务!此时如何让外网的Client 访问到内网的WEB服务和FTP等服务? 答案: iptables 的DNAT功能,进行目标地址转换 模拟网络场景 192.168.100.0/24 私有 192.168.204.0/24 公网 web 服务器 192.168.100.