iptables之NAT
来源:互联网 发布:如何申请网址域名 编辑:程序博客网 时间:2024/05/22 15:58
在传统的标准的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端口
- iptables之NAT
- iptables NAT
- Iptables+NAT
- iptables---NAT
- iptables NAT
- IPTABLES NAT
- iptables nat
- IPtables之四:NAT原理和配置
- IPtables之四:NAT原理和配置
- 负载均衡之iptables/nat模式
- IPtables之四:NAT原理和配置
- linux防火墙之iptables和NAT
- iptables之NAT端口转发设置
- NAT、用iptables配置NAT
- iptables NAT脚本
- 用iptables实现NAT
- iptables+NAT+端口映射
- iptables之类NAT篇
- iOS 策略设计模式
- 小白看单例模式
- Convolution model
- 数据结构之链表(一)
- ubuntu 16.04下calibre2014破解问题
- iptables之NAT
- 类间关系之—内部类及在Android应用的初步延伸
- 【Mybatis】通过自动回复机器人学Mybatis---基础版(4上)
- ECharts 环形饼图 动态获取json数据
- Image uImage与zImage的区别【转】
- restful到底是什么?
- SpringBoot学习记录三、整合MyBatis
- CMMI定量管理级
- 深度学习中的图像的灰度值相关概念:图像灰度值 灰度值与像素值的关系