iptables详解--转
如果构建大并发的环境时,NAT并不适用,一般来讲能够并发用户请求的场景来讲,在2-3W 已经非常庞大了,通常都是专业级硬件分发设备或应用来做分发,下面尝试着使client能够访问web服务器,但期望的是今后访问web服务器不是访问192.168.0.110而是iptables服务器10.0.10.62 因为是实验环境,所以清空所有规则 [root@test3~]# iptables -t nat -F [root@test3~]# iptables -F [root@test3~]# iptables -P FORWARD ACCEPT 我们期望网关10.0.10.62为用户访问目标,而不是192.168.0.110,但62上是没有web服务的,所以有人访问62的web服务必须将其转换到110上 所以要在iptables服务器上操作: [root@test3~]# iptables -t nat -A PREROUTING -d 10.0.10.62 -p tcp --dport 80 -j DNAT--to-destination 192.168.0.110 在客户端测试: [root@test~]# curl -dump http://10.0.10.62/test.html111 如果将FORWARD链的规则改为DROP那么该如何来实现: [root@test3~]# iptables -P FORWARD DROP 再次测试,果然无法访问 它可以实现地址转换,但是地址转换后的报文是无法再转发至内部主机中去,因为forward规则给挡住了 可以将已经建立过连接的请求全部放行,于是乎: [root@test3~]# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT[root@test3 ~]# iptables -A FORWARD -d 192.168.0.110 -p tcp --dport 80 -m state--state NEW -j ACCEPT #目标地址必须是内部web地址 因为forward链在路由之后才可知其是否要进行转发 #也就是意味着用户的请求到达PREROUTING的时候,目标的地址已经改过了,当用户的请求FORWARD之后目标地址已经是web地址 放行转发ssh服务: 我们想请求iptables的22端口则转发至web server端的22端口上去 [root@test3~]# iptables -t nat -A PREROUTING -d 10.0.10.62 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.110 [root@test3~]# iptables -A FORWARD -d 192.168.0.110 -p tcp --dport 22 -m state --state NEW-j ACCEPT 进行登录 [root@test~]# ssh 10.0.10.62 由此可见,以后想登陆10.62则登陆不上去了(可以更改为非22端口等,不再说明了哦) 将80端口请求转发至web端8080端口 更改apache服务的监听端口: Listen8080 切换至iptables服务端添加规则: [root@test3~]# iptables -t nat -A PREROUTING -d 10.0.10.62 -p tcp --dport 80 -j DNAT--to-destination 192.168.0.110:8080 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |