简介:  

图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. Linux 系统Telnet服务

    Linux 系统Telnet服务 telnet与ssh相比,安全性能并不高,但是在ssh版本升级或者其他的情况下还是需要开启这一项服务.linux提供服务是由运行在后台的守护进程daemon来执行的, ...

  2. .NET-提取字符串实践总结

    前阶段工作时遇到一个截取字符串的问题,由于字符串比较长,大概得几万字符吧(XML形式),要提取中间两个节点之间的内容,在网上费了好大功夫才找到能用的正则.工作当用的时候碰到这样的事最蛋疼了,网上的资源 ...

  3. php图形图像处理之生成验证码

    \(^o^)/~ 现在网上越来越离不开验证码了,不知道小伙伴们知不知利用php的GD库就可以生成验证码,Σ(⊙▽⊙"a ...... 首先介绍几个需要用的函数. 1.imagesetpixe ...

  4. 百分比布局实现响应式布局在 IE6 中填坑思路

    最近接了个政府项目,政府项目要求响应式,并且兼容IE6,不想用媒体监测的方法,于是用了百分比布局的方法,但是IE6真是名不虚传,做第一个界面就遇到了个bug ①两张宽度各占50%的图片无法在同一横排, ...

  5. MySQL 分组

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...

  6. HTML 表格生成

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 【Python】Eclipse和pydev搭建Python开发环境

    参考资料:         http://www.dotnet120.com/page/10545/   1.准备工作:         下载32位的JDK6 Java的开发包          下载 ...

  8. cf 496B Secret Combination

    题目链接:B. Secret Combination You got a box with a combination lock. The lock has a display showing n d ...

  9. nsight 初级使用指南

    1.安装,没有什么特殊设置 2.打开vs,编译生成你需要分析的.exe,在vs上方菜单,有nsight menu, choose Start Graphics Debugging. 3.在弹出对话框中 ...

  10. tomcat集群 (自带Cluster集群)

    不用借助其他任何工具,tomcat自身就可以实现session共享,实现集群.以下为大概步骤 1,如果是在同一台机器上,请保持多个tomcat端口(一个tomcat对应三个端口)不相同:如果是不同机器 ...