zoukankan      html  css  js  c++  java
  • Centos环境下部署游戏服务器-iptables

    简介:  

    图1
           Centos做为服务器级操作系统,防火墙是不可缺少的。防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例的路人,将被拒绝在小区外面。看来防火墙到作用还是非常大的。平常大家用的windows机器上也有防火墙,只不过普通用户是不会关注这个防火墙的,默认情况下windows是不会开启防火墙,因为对于普通用户很难理解防火墙的工作原理,以及如何使用。但做为专业的程序员还是必须要理解的。

    原因:
        这篇文章我不想照着Centos官方文档翻译出来如何使用iptables,而是先告诉大家我是如何通过对网络编程到理解,以及对Linux的理解来看待Centos的iptables的使用。通过对这些基本概念的理解,就不会再对Iptables规则感到是如此的复杂。

    理解:

    图2
    网络通信的过程为,信息源,媒介,路由,接收端。Centos在这里可以扮演信息源,接收端,路由这三个角色。对应iptables里的:

    INPUT:网络包的目标ip地址为本地计算机

    FORWARD:网络包路过本地计算机

    OUTPUT:从本地计算机发出的网络包

    为啥官方文档要用chain这个单词,因为在每一个消息包映射到相应的策略的时候,都要从第一条往下走,如果没有遇到匹配的策略,数据包就会被丢弃。因此每种策略也被叫做chain。通过一个数据包修带的数据信息,iptables可以从协议,ip地址,端口号。以及网络网络状态来对网络包进行处理了。下面简单说下iptables命令。

    $iptables -L -v

    这个很容易理解,就是列出iptables 所有规则, -v 就是详细信息

    $iptables -P INPUT ACCEPT

    -P对应的是(policy)策略的意思,对应所有进入的数据包接受,为啥要执行这个命令?因为很多时候都是远程ssh登录主机的,如果没有这条,后面执行的命令,可能将关闭ssh连接,到时候只能去机房从新配置iptables了。

    $iptables -F

    -F 对应刷新iptables规则,对应的英文为flush。

    $iptables -A INPUT -i lo -j ACCEPT

    -A 对应增加(append)一条规则, -i对应设备,接口(interface), lo对应localhost, -j对应(jump)。为啥会这样设计。还是开头说的,数据包都是从对应策略的第一条开始走的,一旦遇到匹配的规则,自然是跳转到对应的命令执行上。

    $iptables -A INPUT -m state --state  ESTABLISHED, RELATED -j ACCEPT

    -m对对应的是加载state模块(module),来检测相应的网络包状态(--state)。ESTABLISHED,和RELATED 对应的是应经建立连接的,或者和建立连接的网络包相关的网络包,直接可以放行。

    $iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    这条对应的是协议(protocol)为tcp协议,端口为22的网络放行,22不就是ssh默认的端口吗。

    $iptables -P INPUT DROP

    这条对应所有目的地到本地的数据包,全部丢弃

    $iptables -P FORWARD DROP

    路过本地的所有数据包丢弃。

    $iptables -P OUTPUT ACCEPT

    所有从本地发出的数据包,放行。


         上面是如何通过命令行添加一条命令,参考官方网站对iptables的定义,但这种方法不是那么智能,因为这种方法,是刷新整个iptables的规则,如果你ssh链接上去,你以为是你添加了一条规则,然后执行了DROP,很显然你被坑了,你被永久的拒之门外,只能让机房的同学重启机器,因为你没执行iptables save,所以还是上次的规则。
         更安全可靠的方法应给是直接编辑:vi /etc/sysconfig/iptables , 添加一条,保存,这样比较安全。也比较方便,如果通过命令行,就得将所有得规则写成shell,每次得往shell里添加一条命令,然后保存,重启。

    总结:
        如果对网络通信比较了解,知道两台机器是如何连通的,如何发送网络数据包的。其实还是很容易理解iptalbes涉及的策略为啥要这么设计了。对于里面的各种参数,如果经常使用linux的话,都是很容易记住和理解的。计算机的知识很杂也很多,如果全靠记忆去学习,那随着时间的冲洗很快就将你学习过的东西洗刷的干干净净。只有当你理解了,为啥人家要这样设计,而不是那样设计,这样在你遇到这个问题的时候,你是站在设计者的角度看待问题的,只需要简单的查询下,就可以很快对这东西上手了。还有学习计算机英语也是相当重要,计算机本来就是英语国家人民发明的,所以很多词汇啊,命令啊,参数啊,都是英语单词,或者英语简写。这也是为啥外国人比咱学计算机的一个重要优势。

    参考:

  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/fengju/p/6174316.html
Copyright © 2011-2022 走看看