iptables配置——NAT地址转换
来源:互联网 发布:怎么发网络短信 编辑:程序博客网 时间:2024/06/05 05:25
同filter表一样,nat表也有三条缺省的"链"(chains):
-
PREROUTING:目的DNAT规则
-
POSTROUTING:源SNAT规则
其match 源地址是翻译前的。
-
OUTPUT:定义对本地产生的数据包的目的NAT规则
========================内网访问外网
-
a single new source IP address -
range of IP addresses -
or you can add several --to-source options. a simple round-robin takes place between these adresses.
iptables -t nat
iptables -t nat
only valid if the rule also specifies -p tcp or -p udp.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 你的eth0地址
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
================================外网访问内网 –J DNAT===========================
DNAT
DNAT:目的网络地址转换,重写包的目的IP地址
外部接口ip:210.83.2.206
内部接口ip:192.168.1.1
ftp服务器 : ip 192.168.1.3
web服务器 : ip 192.168.1.4iptables -t nat -A PREROUTING -d 210.83.2.206 -p tcp --dport 21 -j DNAT --to 192.168.1.3
iptables -t nat -A PREROUTING -d 210.83.2.206 -p tcp --dport 80 -j DNAT --to 192.168.1.4
iptables –t nat –A PREROUTING –d 219.142.217.161 –j DNAT --to-destination 192.168.1.24-192.168.1.25
一个FTP SERVER从内部192.168.100.125:21映射到216.94.87.37:2121的例子
iptables -t nat -A PREROUTING -p tcp -d 216.94.87.37 --dport 2121 -j DNAT --to-destination 192.168.100.125:21通常外网DNAT访问内网SERVER,内网SERV ER回包的源地址是经过另一个单独的SNAT进程的。而不属于DNAT STATIC进程的一部分。
这样对于P-t-P的网络应用,就必须另设一个和DNAT相适应的SNAT。
对于穿过NAT,被NAT映射改变端口号的应用,也必须用一个单独的SNAT对回包的端口进行映射
iptables -t nat -A POSTROUTING -p tcp -s 192.168.100.125 --sport 21 -j SNAT --to-source 216.94.87.37:2121不这样做的话,FTP SERVER会返回21到外网的客户机,外网用户发出一个to 2121的FTP request,收到一个from 21的,会不认
上面的好象不必,做过实验了:
/sbin/iptables -t nat -A POSTROUTING -s 10.4.0.0/16 -o $WAN_INT -j SNAT --to 124.126.86.137
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 2022 -j DNAT --to-destination 10.4.3.150:22
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9000 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9001 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 22 -j ACCEPT
##########NAT CHAIN###############
/sbin/iptables -t nat -A POSTROUTING -s 10.4.0.0/16 -o $WAN_INT -j SNAT --to 124.126.86.137
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 2022 -j DNAT --to-destination 10.4.3.150:22
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9001 -j DNAT --to-destination 10.4.3.150:9001
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9000 -j DNAT --to-destination 10.4.3.150:9000
一开始按翻译前的原始接口做RULE,发觉9000和9001都通过,但2022总通不过
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9000 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9001 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 2022 -j ACCEPT
##########NAT CHAIN###############
/sbin/iptables -t nat -A POSTROUTING -s 10.4.0.0/16 -o $WAN_INT -j SNAT --to 124.126.86.137
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 2022 -j DNAT --to-destination 10.4.3.150:22
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9001 -j DNAT --to-destination 10.4.3.150:9001
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9000 -j DNAT --to-destination 10.4.3.150:9000后来发现原来9000和9001都是端口不变的翻译,只有2022是由2022到22的翻译。
而FORWARD是在PREROUTING执行后执行的,此时2022已经被翻译成22了,当然不匹配2022那个rule了
改正:
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9000 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 9001 -j ACCEPT
/sbin/iptables -A FORWARD -i $WAN_INT -m state --state NEW -p tcp --dport 22 -j ACCEPT
==============================NAT
对于PREROUTING链,只能用-i,通常是外网口
对于POSTROUTING和OUTPUT,只能用-o,通常也是外网口
用非外网口的同网段地址做DNAT public地址,失败
失败原因是,非外网口地址为DNAT用,必须要绑定到接口上,如eth0 :1,eth0 :2
iptables –t nat –A POSTROUTING –s 192.168.1.0 –j SNAT --to-source 219.142.217.161-219.142.217.166一段连续的地址,这样可以实现负载平衡。每个流会被随机分配一个IP。
PAT是CISCO自己的概念
但是端口并没有bind到本地协议栈上。所以不受本地端口资源65535的限制。
iptables –t nat –A POSTROUTING -p tcp,udp –s 192.168.1.0 –j SNAT --to-source 219.142.217.161:1024-32000这样包的源端口就被限制在1024-32000了
iptables –A POSTROUTING –o eth1 –s 192.168.1.0/24 –j MASQUERADE
o
o
o
o
/sbin/iptables -t nat -A POSTROUTING -s 10.4.0.0/16 -o $WAN_INT -j SNAT --to 124.126.86.137
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 2022 -j DNAT --to-destination 10.4.3.150:22
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9001 -j DNAT --to-destination 10.4.3.150:9001
/sbin/iptables -t nat -A PREROUTING -d 124.126.86.138 -p tcp --dport 9000 -j DNAT --to-destination 10.4.3.150:9000/sbin/iptables -t nat -A POSTROUTING
把发往内部server ip 10.4.3.150的包的源地址改成FW内网口地址10.4.0.198
这样就能从内部访问内部SERVER的外部地址
iptables -t nat -A PREROUTING -d 219.142.217.161 -j DNAT --to 192.168.1.24
iptables -t nat -A PREROUTING -d 210.83.2.206 -s ! 192.168.1.24 -p tcp --dport 21 -j DNAT --to 192.168.1.24
-s !内网SERVER地址 DNAT --to 内网server地址
0 0
- iptables配置——NAT地址转换
- iptables配置——NAT地址转换
- iptables配置——NAT地址转换
- iptables配置关于NAT地址转换
- iptables实现nat地址转换
- NAT地址转换配置
- NAT、用iptables配置NAT
- 路由器配置静态的NAT地址转换
- iptables的NAT配置
- iptables配置NAT
- iptables NAT地址池中的地址选取
- 使用iptables配置目的NAT
- 使用iptables进行NAT配置
- NAT地址转换
- NAT地址转换过程
- 【地址转换】NAT
- NAT地址转换
- 地址转换NAT
- 联合体
- Java开发网站总结——Servlet实现图片上传、验证码实现
- 你了解Cisco的PVST、PVST+和Rapid-PVST+吗
- vs2010 使用备忘
- 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
- iptables配置——NAT地址转换
- IllegalArgumentException: Comparison method violates its general contract错误详细内容
- [Win32]获取当前系统可用磁盘空间最大的盘符
- 20141208 用js做个打飞机游戏 , 用div和img就够了 , ie8也能够支持
- 三十.内存初始化
- Fragment 完全解析(下)
- Java线程(五):线程池
- 多条件查询
- 了解黑客攻与防