简介:  

图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的话,都是很容易记住和理解的。计算机的知识很杂也很多,如果全靠记忆去学习,那随着时间的冲洗很快就将你学习过的东西洗刷的干干净净。只有当你理解了,为啥人家要这样设计,而不是那样设计,这样在你遇到这个问题的时候,你是站在设计者的角度看待问题的,只需要简单的查询下,就可以很快对这东西上手了。还有学习计算机英语也是相当重要,计算机本来就是英语国家人民发明的,所以很多词汇啊,命令啊,参数啊,都是英语单词,或者英语简写。这也是为啥外国人比咱学计算机的一个重要优势。

参考:

Centos环境下部署游戏服务器-iptables的更多相关文章

  1. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  2. Centos环境下部署游戏服务器-常用命令

         图1     在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...

  3. Centos环境下部署游戏服务器-自动化

    计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...

  4. Centos环境下部署游戏服务器-编译

    游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译.这里涉及到的软件分别为:Centos版本为6.4,Visual ...

  5. Centos环境下部署游戏服务器-权限

    部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...

  6. Centos环境下部署游戏服务器-简介

    一.前言      在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...

  7. Centos环境下部署游戏服务器-SVN

    版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...

  8. Centos环境下部署游戏服务器-SSH

    在这个*nix大行其道的年代,SSH绝对值得你拥有,虽说它的语法真的很简单,可用途相当大.比如说你在登山,突然公司一个电话告诉你服务器出问题了,在登山的过程中,肯定不能背个几公斤的笔记本吧,这个时候只 ...

  9. Centos环境下部署游戏服务器-Eclipse

    一直在想这篇文章该不该写,因为这篇文章更像是教你如何使用一个ide这种文章,毫无价值可言.但思来想去还是应给写.上篇文章主要说了编译原理和过程,这篇文章就是理论联系实际的典范.并且很多工程师一辈子都不 ...

随机推荐

  1. iOS 进阶 第二十一天(0531)

    0531 - Autolayout 不仅可以做屏幕适配还可以做系统适配 uidynamic 做物理动画.能做的效果如下图: Autolayout Autolayout 是一种“自动布局”技术,专门用来 ...

  2. 骇客(Hacker)用语

                     什么是TCP/IP 是一种网络通信协议,他规范了网络上所有的通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.,TCP/IP是INTERNET的基础 ...

  3. 动态链接库知识点总结之三(如何以显示的方式加载DLL)

    总结一下如何显示加载方式加载DLL, 首先,我们新建一个win32项目,选择dll,空项目,再添加一个源文件,一个模块定义文件(.def),具体如下图.(详细方法已经在前两篇文章中讲述,如有不懂,打开 ...

  4. 20145103 《Java程序设计》第2周学习总结

    20145103 <Java程序设计>第2周学习总结 教材学习内容总结 在第三章主要学习了Java语言中的类型及其变量主要类型为:整数(1字节的byte,2字节的short,4字节的int ...

  5. Netsharp产品标识自定义设置:产品名称、版权、LOGO等

    阅读本文请先阅读Netsharp下载及环境搭建 Netsharp本身是一个业务基础平台,Netsharp本身基础上开发的业务产品对客户才有价值,客户看到的产品应该不是Netsharp而是具体的业务产品 ...

  6. 【CentOS】安装chrome

    参考资料:http://www.cnblogs.com/xia520pi/p/3545715.html 问题描述: 出现如下错误: 升级glibc任然无效,最后在博客园:http://www.cnbl ...

  7. JS 学习笔记--7---正则表达式

    正则表达式中的内容很多,也很深,下面只是一些基本的知识点,练习中使用的浏览器是IE10,若有不当处请各位朋友指正,我会在第一时间修改错误之处. 匹配的概念:是包含的意思,不是相等的意思 1.正则表达式 ...

  8. 【BZOJ】【1004】【HNOI2008】Cards

    Burnside/Polya+背包DP 这道题目是等价类计数裸题吧……>_> 题解:http://m.blog.csdn.net/blog/njlcazl_11109/8316340 啊其 ...

  9. Java获取项目中的路径 分类: Java Game 2014-08-14 10:17 122人阅读 评论(0) 收藏

    在项目中经常需要获取某个文件的路径: 在这里提供一些获取路径的方法.. 1.此种方式获取的路径,是当前类所在的路径: UserDAOTest.class.getResource("UserD ...

  10. 简单的表视图UITableView

    1.建一个Single View application 2.在故事板中放置一个Table View控件 3.在.h文件中加入协议 <UITableViewDataSource,UITableV ...