1|0NAT
1|1一. 什么是 NAT
NAT(Network Address Translation)译为网络地址转换。通常路由器在转发我们的数据包时,仅仅会将源MAC地址换成自己的MAC地址,但是NAT技术可以修改数据包的源地址、目的地址以及源端口、目的端口等信息。
1|2二. NAT的作用
NAT技术最常见的应用就是通过修改源IP地址实现内网多主机使用一个公网地址接入互联网。NAT技术通常用于端口和流量的转发、重定向,实现如端口映射、跨网络访问、流量代理等功能。
1|3二. iptables实现NAT转发
1.语法及参数介绍
要使用iptables的NAT功能,我们首先需要启用网卡的IP转发功能
如果想要永久生效,我们要编辑/etc/sysctl.conf
文件,设置net.ipv4.ip_forward = 1
,然后用sysctl -p
命令使配置文件生效。
我们使用-t nat
参数指明使用nat表,因为iptables默认使用filter表。
nat表同filter表一样有三条缺省的"链"(chains):
我们要利用iptables进行NAT转换时,使用的动作主要为SNAT、DNAT和REDIRECT:
(1)规则操作
(2)源/目的IP地址
(3)网络接口
(4)动作
1|4三. 源/目的转发实例
1.源NAT(SNAT)
更改所有来自192.168.1.0/24的数据包的源IP地址为123.4.5.100
2.目的NAT(DNAT)
更改所有来自192.168.1.0/24的数据包的目的ip地址为123.4.5.100
3.IP映射实例
假设有这样的情况:A、B单位给自内网中部分用户要求建立自己的Web服务器对外发布信息。我们可以在防火墙的外部网卡上绑定多个合法公网IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的Web服务器上,并将该内部Web服务器的响应包伪装成该公网IP发出的包。
节点 | 内网IP | 公网IP |
---|---|---|
A单位Web服务器 | 192.168.1.100 | 123.4.5.100 |
B单位Web服务器 | 192.168.1.200 | 123.4.5.200 |
linux防火墙 | 192.168.1.1(eth1) | 123.4.5.1(eth0) |
在进行NAT之前,我们需要先将分配给A、B单位的公网ip绑定到防火墙的外网接口:
对防火墙接收到的目的ip为123.4.5.100和123.4.5.200的所有数据包进行目的NAT(DNAT):
其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):
这样,所有目的ip为123.4.5.100和123.4.5.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;
而所有来自192.168.1.100和192.168.1.200的数据包都将分别被伪装成由123.4.5.100和123.4.5.200,从而也就实现了ip映射。
节点 | 内网IP(eth0) | 公网IP(eth1) |
---|---|---|
网关 | 10.0.0.1 | 123.4.5.100 |
内网主机 | 10.0.0.20 |
例:把内网ssh服务映射到外网。iptables规则配置如下:
把访问公网123.4.5.100:2222的数据包转发到了内网10.0.0.20:22
1|5四.端口转发实例
1.本机端口转发
把发往本机80端口的数据重定向到8080端口
2.远程端口转发
把访问123.4.5.100:8080的数据包转发到123.4.5.200:80
多网卡问题:iptables学习笔记:端口转发命令优化
__EOF__
作 者:ssooking
出 处:https://www.cnblogs.com/ssooking/p/7890192.html