用iptable完成端口映射

2016-01-29 18:10 36 1 收藏

用iptable完成端口映射,用iptable完成端口映射

【 tulaoshi.com - Linux 】

用iptable完成端口映射
问:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10、192.168.1.11,网关linux,内网eth0,IP为192.168.1.1,外网eth1,IP为a.b.c.d,怎样作NAT能使内外网都能访问公司的服务器? 答:# web # 用DNAT作端口映射 iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10 # 用SNAT作源地址转换(关键),以使回应包能正确返回 iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1 # 一些人经常忘了打开FORWARD链的相关端口,特此增加 iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT # ftp modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块 # 用DNAT作端口映射 iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.1.11 iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT # 用SNAT作源地址转换(关键),以使回应包能正确返回 iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.1.1 问:网络环境如上一问题,还在网关上用squid进行透明代理,也作了SNAT了,为什么内网还是不能访问公司的web服务器?iptables如下: iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128 iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10 iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1 答:问题主要在PREROUTING链中REDIRECT和DNAT的顺序,由于先进行了REDIRECT(重定向),则到第二句DNAT时,端口已变为3128,不匹配第二句的目的端口80,DNAT也就不会执行,不能到达正确的目的地。解决的办法有两个: 1、把REDIRECT语句放到DNAT语句的后面,如下: iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10 iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128 2、在REDIRECT语句中增加匹配目的地址"-d ! a.b.c.d",如下: iptables -t nat -A PREROUTING -s 192.168.1.0/24 -d ! a.b.c.d -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128

来源:http://www.tulaoshi.com/n/20160129/1504688.html

延伸阅读
快车的TCP端口/UDP端口是什么 快车的TCP端口/UDP端口说明如下: TCP和UDP服务通常有一个用户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet用户程序与服务进程建立一个连接。用户程序向服务进程写入信息,服务进程读出信息并发出响应,用户程序读出响应并向用户报告。因而,这个...
所有在防火墙和路由器上开放的端口都是一种安全风险。这也是一种称之为"端口碰撞(port knocking )"技术的价值所在。端口碰撞技术是一种允许访问预先配置好"碰撞"的防火墙服务的技术。所谓的碰撞是由一个尝试访问系统上关闭端口的序列组成。这些尝试要么记录在一个日志中,要么保存在一个后台进程中,通过预先配置这个日志或者进程来...
用镜头完成孩童的心愿   对于患有肌肉萎缩症的孩童来说,走楼梯、投篮球、玩滑板、潜水、跳舞,都是遥不可及的梦想,摄影师 Matej Peljhan 决定利用摄影,来完成患有肌肉萎缩症孩童的小小心愿。不使用大量后制,也没有运用大量的摄影技巧,只需发挥创意巧思、改变一点拍摄角度,就能完成感人的作品。 单纯的影像,也能实现他人...
所有的.Net编译器在产生模块(Modules)的目标代码时都会产生有关类型的元数据(metadata), 这种元数据被捆绑在模块目标代码上(多个模块组成assemblies, 一个assembly是.Net下安全控制的基本单位,也是类型对象识别的基本单位), 这种元数据可以通过.Net环境下的reflection对象访问. System.Reflection名字空间下包含了可以访问这种数据的多种类. ...
标签: 电脑入门
Excel中汇总统计符合指定条件单元格数据之和是经常遇到的事情。例如,统计学生的成绩表时,我们也许要在一张有多个班级多个学科的成绩总表中求某一指定班级某一学科学生的总分。这种情况我们一般使用SUMIF函数或SUM函数配合使用IF函数来完成汇总统计,如果指定的条件已经存放在另外的某单元格区域,那么在Excel 2007中,使用DSUM函数来完成指定...

经验教程

22

收藏

67
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部