linux转发请求命令 linux转发数据包( 三 )


修改目的地址,于是这个包变成了8.1.234.73:1333--192.168.234.72:80 。
进入route box选路,找到合适路径 , 此时这个包依旧是8.1.234.73:1333--192.168.234.72:80 。
原来是一个SNAT,改你的源地址,于是这个包变成了192.168.234.71:xxxx(随机端口)--192.168.234.72:80 。
看了上面的两个例子 , 不知道大家是否清楚了iptables的转发流程,希望对大家有所帮助 。
下面来讲前面提到的ESTABLISHED,RELATED规则是怎么回事,到底有什么用处 。
我们知道,网络的访问是双向的,也就是说一个Client与Server之间完成数据交换需要双方的发包与收包 。在netfilter中 , 有几种状态,也就是New, Established,Related,Invalid 。
当一个客户端,在本文例一中 , 内网的一台机器访问外网,我们设置了规则允许他出去,但是没有设置允许回来的规则?。趺赐瓿煞梦誓兀空饩褪莕etfilter的 状态机制  , 当一个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命令,然后对相应的端口进行放行 。
对了,还有几个在实际中比较实用(也比较受用:-))的命令参数,写出来供大家参考
linux永久开启防火墙路由转发需求:以其中一台linux主机作为服务器,对其他主机提供路由转发功能,实现网络共享 。
实现:由于本次学习是在虚拟机中实现,共有两台linux主机,其中作为服务器的linux主机先称作vm1,要共享网络的linux主机称作vm2,vm2为在vm1中建立的虚拟机
环境:redhalt 6.5
vm2配置:
由于是模拟网络共享的客户机,在vm设置里将网络模式改为host-only(仅主机模式),并记录下vm2的网段 。实际需求中只需配置服务器vm1即可
1.
2.点击确定保存后,可以看到此时的vm2已无法访问网络 。
3.在虚拟机菜单栏点击 编辑虚拟网络编辑器,可在此查看或编辑你的vm2网段信息 。
vm1配置(服务器):
1.修改/etc/sysctl.conf文件 , 将配置文件中net.ipv4.ip_forward = 0值改为= 1,开启数据包的转发
[root@localhost ~]# sysctl -p-----使配置文件生效
也可直接输入命令:echo 1/proc/sys/net/ipv4/ip_forward重启会失效
2.启动防火墙:/etc/init.d/iptables start
3.依次输入下列两条命令:
[root@localhost ~]# iptables -S查看红帽防火墙默认的规则链
[root@localhost ~]# iptables -D FORWARD 1删除FORWARD里序号为1的规则

推荐阅读