• 回答数

    4

  • 浏览数

    312

waterimilan
首页 > 职称论文 > iptables的实现毕业论文

4个回答 默认排序
  • 默认排序
  • 按时间排序

小统哥9888

已采纳

建议在主机上下载"端口映射器",它会帮你简单实现效果.........

341 评论

gavin70606

准备: 1、内网 ifdown eth0 route add default gw 测试: ping ping 结果应该是不通。 2、网关服务器 eth0: eth1: gw: 修改内核转发: 内核文件/etc/里开启转发功能。 在服务器网关B 机器上开启路由转发功能。 编辑/etc/修改内容为 = 1,然后执行sysctl -p使修改生效。 [root@oldboy ~]# sysctl -p = 1 测试:ping 结果通。 调整iptables环境 iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F 3、生产案例: iptables -t nat -A POSTROUTING -o eth0 -s -j SNAT --to-source 局域网共享的两种方法: 方法1:适合于有固定外网地址的: iptables -t nat -A POSTROUTING -s -o eth0 -j SNAT --to-source (1)-s 办公室或IDC内网网段。 (2)-o eth0 为网关的外网卡接口。 (3)-j SNAT --to-source 是网关外网卡IP地址。 方法2:适合变化外网地址(拨号上网): iptables -t nat -A POSTROUTING -s -j MASQUERADE    ##伪装。 老男孩教育iptables项目案例2:外网IP的端口映射到内网IP的端口 需求:将网关的IP和9000端口映射到内网服务器的22端口 端口映射 --> 实现命令: iptables -t nat -A PREROUTING -d -p tcp --dport 9000 -j DNAT --to-destination (1)-d 目标地址。 (2)-j DNAT 目的地址改写。 老男孩教育iptables项目案例3:IP一对一映射 辅助IP: ip addr add dev eth0 label eth0:0  #<==辅助IP iptables  -t nat -I PREROUTING -d -j DNAT --to-destination iptables  -t nat -I POSTROUTING -s -o eth0 -j SNAT --to-source #适合内网的机器访问NAT外网的IP iptables  -t nat -I POSTROUTING -s -d -j SNAT --to-source 检查: ping -t tcpdump|grep -i icmp(两台机器上分别监测) telnet 873(51上提前配好) 映射多个外网IP上网 方法1: iptables -t nat -A POSTROUTING -s -o eth0 -j SNAT --to-source 三层交换机或路由器,划分VLAN。 方法2: iptables -t nat -A POSTROUTING -s -o eth0 -j SNAT --to-source iptables -t nat -A POSTROUTING -s -o eth0 -j SNAT --to-source 扩大子网,增加广播风暴。 课外阅读: (1)生产环境大于254台机器网段划分及路由解决方案详解01 (2) linux route命令深入浅出与实战案例精讲 必看3遍以上。 有关iptables的内核优化 调整内核参数文件/etc/ 以下是我的生产环境的某个服务器的配置: ------------解决time-wait过多------------- = 2 = 1 = 1 = 1 = 600 = 36000 ---------------------------------- = 4000  65000 = 16384 = 100 = 1 = 1 ---------------------------------- #dmesg里面显示 ip_conntrack: table full, dropping packet.的错误提示,什么原因?如何解决? #iptables优化 = 25000000 = 25000000 = 180 = 120 = 60 = 120 iptables做局域网网关(网络管理、NAT转发): 1、局域网有一个外网IP(包括动态)的前提下。 2、例:企业级路由器的配置 路由连接地址为 默认路由: 分配的公网ip地址: 要求购买企业级路由器: 用zebra(quagga)替代企业级路由器: Linux上配置zebra(quagga)路由: client(config)#int eth0 client(config-if)#ip add client(config-if)#int eth1 client(config-if)#ip add client(config)#ip route client(config)#ip route eth1 重点: 1、老男孩教育iptables项目案例1:局域网共享上网: 2、老男孩教育iptables项目案例2:外网IP的端口映射到内网IP的端口 3、老男孩教育iptables项目案例3:IP一对一映射 4、有关iptables的内核优化 下节课: 1、mysql介绍 2、安装方式,安装 3、多实例安装。 4、常用管理命令。

210 评论

chengongsc

【出处】 【作者】张天成, iptables操作的是以上内核的netfilter,所以需要 linux的内核在以上。其功能与安全性远远比其前辈 ipfwadm, ipchains强大,iptables大致是工作在OSI七层的二、三、四层,其前辈ipchains不能单独实现对tcp/udp port以及对mac地址的的定义与操作,所以我想ipchains应该是仅仅工作在三层的。 我们先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者叫分组、packet,我个人习惯叫包)在到达linux的网络接口的时候 (网卡)如何处理这个包,然后再介绍一下如何用iptables改变或者说控制对这个数据包进行操作。 netfilter内部分为三个表,分别是 filter,nat,mangle,每个表又有不同的操作链(Chains)。 下面有一张图清晰的描绘了netfilter对包的处理流程(该图摘自网上,不知作者是谁,在此深表敬意!),一般情况下,我们用不到这个mangle表,在这里我们就不做介绍了。 当一个包来到Linux的网络接口的时候先执行PREROUTING操作,依次经过mangle、nat的PREROUTING链。从这个Chain的名字我们可以看出,这个Chain是在路由之前(pre-routing)要过的。为什么要在路由之前过呢?因为在这个链里面我们对包的操作是DNAT,也就是改变目的地址和(或端口),通常用在端口转发(修改P ort),或者NAT到内网的DMZ区(修改地址)。 环境配置如下: 我们怎么样能让Internet用户通过公网IP访问内部的web服务器呢? 在这个PREROUTING链上定义一个规则,把访问的用户的目的地址改变一下,改变为,这样就实现了internet用户对内网服务器的访问了。当然,这个端口是比较灵活的,我们可以定义任何一个端口的转发,不一定是80-->80。具 体的命令我们在下面的例子中介绍,这里我们只谈流程与概念上的实现方法。 好了,我们接着往下走,来到图中下方的那个菱形(FORWARD),转发! 默认情况下,当Linux收到了一个目的IP地址不是本地IP的包,Linux会把这个包丢弃。因为默认情况下,Linux的三层包转发功能是关闭的,如果要让我们的Linux实现转发,则需要打开这个转发功能,可以 改变它的一个系统参数,使用如下命令打开转发功能: 处理顺序上,依然是mangle优先、随后流经filter的FORWOARD链。我们操作任何一个链都会影响到这个包的命运,在 下面的介绍中,我们就忽略掉mangle表,我们基本用不到操作它,所以我们假设它是透明的。假设这个包被我们的规则放过去了,也就是ACCEPT了,它将进入POSTROUTING部分。 注意!这里我注意到一个细节问题,也就是上面的图中数据包过了FORWARD链之后直接进入了POSTROUITNG 链,我觉得这中间缺少一个环节,也就是ROUTING。对于转发的包来说,Linux同样需要在选路(路由)之后才能将它送出,这个图却没有标明这一点,我认为它是在过了ROUTING之后才进入的POSTROUITNG。当然了,这对于我们讨论iptables的过滤转发来说不是很重要,只是我觉得流程上有这个问题,还是要说明 一下。 POSTROUTING链是数据包要送出这台Linux的最后一个环节了,也是极其重要的一个环节。这个时候Linux已经完成了对这个包的路由(选路工作),已经找到了合适的接口送出这个包了,在这个链里面我们要进行重要的操作,就是被Linux称为 SNAT的一个动作,修改源IP地址! 为什么修改源IP地址?最常见的就是我们内网多台机器需要共享一个或几个公网IP访问 Internet。因为我们的内网地址是私有的,假如就让Linux给路由出去,源地址也不变,这个包能访问到目的地,但却回不来。因为 Internet上的路由节点不会转发私有地址的数据包,也就是说,不用合法IP,我们的数据包有去无回。 有人会说:“既然是这样,我就不用私有IP了,我自己分配自己合法的地址不行吗?那样包就会回来了吧?”。答案是否定的,IP地址是ICANN来分配的,Internet上的路由器会把这个返回包送到合法的IP去,你同样收不到。而你这种行为有可能被定义为一种ip欺,很多设备会把这样的包在接入端就给滤掉了。 那么Linux如何做SNAT 呢?环境配置如下: 当内网节点需要访问的web服务器,发送数据包时先路由到节点,随后(在节点配置SNAT)将源IP改为后送出。同时在ip_conntrack表里面做一个记录:内网的哪一个ip的哪个端口访问的这个web服务器,自己把它的源地址改成多少了,端口改成多少了,以便这个web服务器返回数据包的时候linux将它准确的送回给发送请求的这个pc. 大体的数据转发流程我们说完了,我们看看iptables使用什么样的参数来完成这些操作。在描述这些具体的操作之前,我还要说几个我对iptables的概念的理解(未必完全正确),这将有助于大家理解这些规则,以实现更精确的控制。 上文中我们提到过,对包的控制是由我们在不同的Chain(链)上面添加不同的规则来实现的。那么既然叫链,一定就是一条或者多条规则组成的了,这时就有一个问题了,如果多个规则对同一种包进行了定义,会发生什么事情呢? 在Chain中,所有的规则都是从上向下来执行的,也就是说,如果匹配了第一行,那么就按照第一行的规则执行,一行一行的往下找,直到找到 符合这个类型的包的规则为止。如果找了一遍没有找到符合这个包的规则怎么办呢?iptables里面有一个概念,就是Policy(策略),如果找了一遍找不到符合处理这个包的规则,就按照policy来办。iptables 使用-P来设置Chain的策略。 对链的操作就那么几种: 比如我们要添加一个规则到filter表的FORWARD链: 在iptables中,默认的表名就是filter,所以这里可以省略-t filter直接写成: iptables中的匹配参数: 我们在这里就介绍几种常用的参数,详细地用法可以man iptables看它的联机文档,你会有意外的收获。 环境信息: 或者使用如下命令 配置完成,在内网节点()发起的服务器节点()请求,会由外网节点修改源ip后转发出去。 在上启动nginx服务,在上通过curl访问效果如下: 可以将上述配置写到一个文件中,以便重复执行。 除此之外,也可以精确控制他的访问地址,比如我就允许访问这个ip 或者只允许他们访问80端口 更多的控制可以自己灵活去做,或者查阅iptables的联机文档。 环境信息: 确保服务监听的是ip是内网ip 或者使用如下命令 同样,可以将这部分配置放到一个文件中: OK,至此配置完成,我们可以尝试在外网节点()上,通过网关节点()访问内网()提供的服务(80端口)。 在前面的配置中,内网节点将互通的外网节点做为网关,由网关节点修改目的地址,源地址保持不变。其实,还存在另外一种配置方式,同时修改源地址、目的地址。将内网地址中的默认路由配置删除 增加一个SNAT配置 这条命令不太好懂?其实很简单,如果使用这条命令,那么你的web server不需要再设置默认网关,就能收到这个请求,只要他和linux的lan ip地址是能互访的(也就是说web server和Linux的Lan ip在一个广播域)。我们在根据上面的netfilter流程图来分析这个包到底被我们怎么样了: 修改目的地址,于是这个包变成了>。 进入route box选路,找到合适路径,此时这个包依旧是>。 原来是一个SNAT,改你的源地址,于是这个包变成了(随机端口)-->。 看了上面的两个例子,不知道大家是否清楚了iptables的转发流程,希望对大家有所帮助。 下面来讲前面提到的ESTABLISHED,RELATED规则是怎么回事,到底有什么用处。 我们知道,网络的访问是双向的,也就是说一个Client与Server之间完成数据交换需要双方的发包与收包。在netfilter中,有几种状态,也就是New, Established,Related,Invalid。 当一个客户端,在本文例一中,内网的一台机器访问外网,我们设置了规则允许他出去,但是没有设置允许回来的规则啊,怎么完成访问呢?这就是netfilter的 状态机制 ,当一个Lan用户通过这个Linux访问外网的时候,它发送了一个请求包,这个包的状态是New(配置了内网IP的转发规则,放行)。当外网回包的时候他的状态就是Established,所以,Linux知道,哦,这个包是我的内网的一台机器发出去的应答包,他就放行了。 而外网试图对内发起一个新的连接的时候,他的状态是New,所以Linux压根不去理会它。这就是我们为什么要加这一句的原因。 还有那个Related,他是一个关联状态,什么会用到呢?sftp、ftp都会用到,因为他们的传输机制决定了,它不像http访问那样,Client_IP: port-->Server:80然后server:80-->Client_IP:port,ftp使用tcp21建立连接,使用20端口发送数据,其中又有两种方式,一种主动active mode,一种被动passive mode。主动模式下,client使用port命令告诉server我用哪一个端口接受数据,然后server主动发起对这个端口的请求。被动模式下,server使用port命令告诉客户端,它用那个端口监听,然后客户端发起对他的数据传输,所以这对于一个防火墙来说就是比较麻烦的事情,因为有可能会有New状态的数据包,但是它又是合理的请求,这个时候就用到这个Related状态了,他就是一种关联,在linux中,有个叫 ftp_conntrack的模块,它能识别port命令,然后对相应的端口进行放行。 对了,还有几个在实际中比较实用(也比较受用:-))的命令参数,写出来供大家参考

310 评论

荷叶圆圆1980

Chain INPUT (policy DROP)target prot opt source destinationACCEPT all -- anywhere anywhereACCEPT all -- anywhere anywhere state RELATED,ESTAB LISHEDinput_ext all -- anywhere anywhereinput_ext all -- anywhere anywhereLOG all -- anywhere anywhere limit: avg 3/min bu rst 5 LOG level warning tcp-options ip-options prefix `SFW2-IN-ILL-TARGET 'DROP all -- anywhere anywhereChain FORWARD (policy DROP)target prot opt source destinationLOG all -- anywhere anywhere limit: avg 3/min bu rst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWD-ILL-ROUTING 'Chain OUTPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- anywhere anywhereACCEPT all -- anywhere anywhere state NEW,RELATED,E STABLISHEDLOG all -- anywhere anywhere limit: avg 3/min bu rst 5 LOG level warning tcp-options ip-options prefix `SFW2-OUT-ERROR 'Chain forward_ext (0 references)target prot opt source destinationChain input_ext (2 references)target prot opt source destinationDROP all -- anywhere anywhere PKTTYPE = broadcast ACCEPT icmp -- anywhere anywhere icmp source-quenchACCEPT icmp -- anywhere anywhere icmp echo-requestACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp echo-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp destination-unreachableACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp time-exceededACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp parameter-problemACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp timestamp-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp address-mask-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp protocol-unreachableACCEPT icmp -- anywhere anywhere state RELATED,ESTAB LISHED icmp redirectLOG tcp -- anywhere anywhere limit: avg 3/min bu rst 5 tcp dpt:5801 flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-op tions prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:5801LOG tcp -- anywhere anywhere limit: avg 3/min bu rst 5 tcp dpt:5901 flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-op tions prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:5901LOG tcp -- anywhere anywhere limit: avg 3/min bu rst 5 tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-opt ions prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:sshreject_func tcp -- anywhere anywhere tcp dpt:ident sta te NEWLOG all -- anywhere anywhere limit: avg 3/min bu rst 5 PKTTYPE = multicast LOG level warning tcp-options ip-options prefix `SFW2- INext-DROP-DEFLT 'DROP all -- anywhere anywhere PKTTYPE = multicast LOG tcp -- anywhere anywhere limit: avg 3/min bu rst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options pre fix `SFW2-INext-DROP-DEFLT 'LOG icmp -- anywhere anywhere limit: avg 3/min bu rst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'LOG udp -- anywhere anywhere limit: avg 3/min bu rst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'LOG all -- anywhere anywhere limit: avg 3/min bu rst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-INext- DROP-DEFLT-INV 'DROP all -- anywhere anywhereChain reject_func (1 references)target prot opt source destinationREJECT tcp -- anywhere anywhere reject-with tcp-res etREJECT udp -- anywhere anywhere reject-with icmp-po rt-unreachableREJECT all -- anywhere anywhere reject-with icmp-pr oto-unreachablehugang:~ # iptables -LChain INPUT (policy DROP)target prot opt source destinationACCEPT all -- anywhere anywhereACCEPT all -- anywhere anywhere state RELATED,ESTABLISHEDinput_ext all -- anywhere anywhereinput_ext all -- anywhere anywhereLOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-IN-ILL-TARGET 'DROP all -- anywhere anywhereChain FORWARD (policy DROP)target prot opt source destinationLOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWD-ILL-ROUTING 'Chain OUTPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- anywhere anywhereACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHEDLOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-OUT-ERROR 'Chain forward_ext (0 references)target prot opt source destinationChain input_ext (2 references)target prot opt source destinationDROP all -- anywhere anywhere PKTTYPE = broadcastACCEPT icmp -- anywhere anywhere icmp source-quenchACCEPT icmp -- anywhere anywhere icmp echo-requestACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp echo-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp destination-unreachableACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp time-exceededACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp parameter-problemACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp timestamp-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp address-mask-replyACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp protocol-unreachableACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp redirectLOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp dpt:5801 flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:5801LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp dpt:5901 flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:5901LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-ACC-TCP 'ACCEPT tcp -- anywhere anywhere tcp dpt:sshreject_func tcp -- anywhere anywhere tcp dpt:ident state NEWLOG all -- anywhere anywhere limit: avg 3/min burst 5 PKTTYPE = multicast LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'DROP all -- anywhere anywhere PKTTYPE = multicastLOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'LOG icmp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'LOG udp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT 'LOG all -- anywhere anywhere limit: avg 3/min burst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT-INV 'DROP all -- anywhere anywhereChain reject_func (1 references)target prot opt source destinationREJECT tcp -- anywhere anywhere reject-with tcp-resetREJECT udp -- anywhere anywhere reject-with icmp-port-unreachableREJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

354 评论

相关问答

  • 树莓派实现的毕业论文

    我毕业设计做的是基于物联网控制的机器人,如果你是计算机专业的,二选一的话,我推荐用raspberry PI B+,如果计算机基础不是很好,可以用Arduino,

    囩囩囡囡 4人参与回答 2023-12-06
  • 现实一种毕业论文

    一、毕业论文的选题选题是论文写作的首要环节。选题的好坏直接关系到论文的学术价值和使用价值,新颖性、先进性、开创性、适用性以及写作的难易程度等。下面重点谈谈选题的

    sherilyxia 4人参与回答 2023-12-09
  • 毕业论文的实现途径

    撰写毕业论文开题报告的几个要点 一、论文题目 (一)名称要准确 准确就是论文的名称要准确地把论文所研究的对象、问题概括出来。 比如有一篇论文名称叫“电网公司财务

    末末很烦躁 4人参与回答 2023-12-06
  • 毕业论文增强现实

    1 如何在小学教学中实施素质教育2 幼小衔接、小学与初中衔接研究3 小学课程改革的现状调查4 小学艺术课程对促进学生全面发展的意义5 小学教师队伍中的性别问题研

    道生一,三代二 5人参与回答 2023-12-08
  • 毕业论文的现实意义

    大学生需要撰写毕业论文,其理由有三种, 第一是撰写毕业论文,可以对大学时期所学的专业知识进行整体总结,知识薄弱的地方也可以进行完善,目前教育资源相对有限,学生可

    大尾巴狼外婆 3人参与回答 2023-12-10