<!--StartFragment -->


1.安装我不讲了,RH9的rpm安装方式非常简单,大家只要在rh的安装源盘找到相应的rpm包就行。

然后rpm-Uvhiptables-?.i386.rpm

2.我们今天调试的环境是一台双网卡的服务器,通过DDN固定ip地址上网,两块网卡分别是
eth0:211.101.251.4外部ip地址,直接上网
eth1:192.168.0.1内部网卡地址,连接192.168.0.0/255.255.255.0网断局域网

3.客户端A是台WWW,地址是192.168.0.2。我们将利用后面的DNAT功能,让外面的机器能访问这台机器的www服务。其他客户端都在192.168.0.0/24网段,且网关都指向192.168.0.1

4.如果大家要使用iptables的NAT功能,之前我们要确保系统内核配置的是正确的,我的iptables好几次就因为内核编译错误,造成客户端不能正常使用SNAT功能,甚至不能加载ip_tables模块。这是一般的内核配置,基本上iptables的NAT功能能正常使用,内核版本不同可能显示不一样,大家灵活掌握就行,应该不会出现麻烦。

Networkingoptions--->
[*]Networkpacketfiltering(replacesipchains)
[*]TCP/IPnetworking
IP:NetfilterConfiguration--->
<M>Connectiontracking(requiredformasq/NAT)(NEW)
<M>FTPprotocolsupport(NEW)
<M>IPtablessupport(requiredforfiltering/masq/NAT)(NEW)
<M>limitmatchsupport(NEW)
<M>MACaddressmatchsupport(NEW)
<M>netfilterMARKmatchsupport(NEW)
<M>Multipleportmatchsupport(NEW)
<M>TOSmatchsupport(NEW)
<M>tcpmssmatchsupport(NEW)
<M>Connectionstatematchsupport(NEW)
<M>Packetfiltering(NEW)
<M>REJECTtargetsupport(NEW)
<M>FullNAT(NEW)
<M>MASQUERADEtargetsupport(NEW)
<M>REDIRECTtargetsupport(NEW)
<M>Packetmangling(NEW)
<M>TOStargetsupport(NEW)
<M>MARKtargetsupport(NEW)
<M>LOGtargetsupport(NEW)
<M>TCPMSStargetsupport(NEW)
<M>ipchains(2.2-style)support(NEW)
<>ipfwadm(2.0-style)support(NEW)

5.我们要打开ip_forward,
直接修改/etc/sysctl.conf这个文档,把net.ipv4.ip_forward=1并把前面的#去掉,或者
echo"1">/proc/sys/net/ipv4/ip_forward,但是下次重起还是变0,所以还是直接修改文档的好。

6.我们在使用iptables之前,先要了解iptables的参数:

ACCEPT
接受这个封包,也就是可以通过规则检验而放行、顺利通过这个链。

DROP
丢弃这个封包,也就不能通过规则检验而被挡掉。

REJECT
与DROP一样,但会向来源地送出ICMP封包,告之对方‘portunreachable’的错误信息。

REDIRECT
将封包重导至本机端的其它port。

SNAT/DNAT/MASQUERADE
这些都是NAT的处理,视要求而修改为特定的SourceSocket或DestinationSocket、或动态的根据路由判断後的界面而修改SourceSocket。

建立一个新的(自定)链(-N)。
删除一个空的(自定)链(-X)。
改变一个内建链的原则(-P)。
列出一个链中的规则(-L)。
清除一个(内建)链中的所有规则(-F)。
在一个链的最後面新增(append)一条规则(-A)。
在链内某个位置插入(insert)一条新规则(-I)。
在链内某个位置替换(replace)一条规则(-R)。
在链内某个位置删除(delete)一条规则(-D)。
删除(delete)链内第一条符合的规则(-D)。
在iptables中,要指定规则是欲作用在那一个规则表上(使用-t来指定,如-tnat),若不指定,则预设是作用在filter这个表。

封包于防火墙中的流向(INPUT、OUTPUT、FORWARD)
相关界面(-i或-o)
所属协定(-p)
连线类型(-mstate)
封包类型(--syn)
来源地(-s)
来源端口(--sport)
目的地(-d)
目的地端口(--dport)

好了,开始工作!

首先查看一下机器上的有关于iptables的设定情况
作法如下:

iptables-L-n或者iptablse-tnat-L-n

定义参数

$DDN_IP="211.101.251.4"

如果你以前调试过iptables那么我们先清除先前的设定

iptables-F清除预设表filter中,所有规则链中的规则

iptables-X清除预设表filter中,使用者自订链中的规则

iptables-F-tmangle清除mangle表中,所有规则链中的规则

以此类推:

iptables-tmangle-X清除mangle表中,使用者自订链中的规则

iptables-F-tnat清除nat表中,所有规则链中的规则

iptables-tnat-X清除nat表中,使用者自订链中的规则

首先我们来设置filtertable的预设策略

iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT

当然我们也可以使用DROP,但一般我们不会这么做

接下来配置nattables表

&&一个典型的例子IP伪装(SNAT应用),即局域网网所有的机器都通过eth0做的透明网关出去,不做其他限制,

iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jMASQUERADE

假如你的上网方式是adsl拨号上网,adsl接口是ppp0,那么也可以这么设置
iptables-tnat-APOSTROUTING-oppp0-s192.168.0.0/24-jMASQUERADE

好了,现在我们要把这些命令保存为策略文件,好让iptables认出

/etc/rc.d/init.d/iptablessave系统会根据你刚才输入的命令保存为一个策略配置文件/etc/sysconfig/iptables

然后我们运行/etc/rc.d/init.d/iptablesstart启动iptables,并加载配置文件

好了现在你的局域网客户端都可以通过这台服务器上网,ftp,qq,www都没有限制,因为我们现在设置的是透明的防火墙。我们总结一下刚才的命令是:

源码:--------------------------------------------------------------------------------
echo1>/proc/sys/net/ipv4/ip_forward
iptables-F
iptables-X
iptables-tnat-F
iptables-tnat-X
iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
iptables-tnat-PPREROUTINGACCEPT
iptables-tnat-POUTPUTACCEPT
iptables-tnat-PPOSTROUTINGACCEPT
iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jMASQUERADE
/etc/rc.d/init.d/iptablessave
/etc/rc.d/init.d/iptablesstart
--------------------------------------------------------------------------------

&&另外一个典型的例子是DNAT,利用转址、转port的方式,使外网的封包,可以到达内网中的服务器主机,俗称虚拟主机。这种方式可保护服务器主机大部份的port不被外界存取,只开放公开服务的通道(如WebServerport80),因此安全性较高。

比如:凡对211.101.251.4:80连线者,则转址至192.168.0.2:80

iptables-tnat-APREROUTING-ieth0-ptcp-d211.101.251.4--dprot80-jDNAT--to-distination192.168.0.2:80

同样DNAT还可以利用在DMZ区域的mail,FTP等服务,大家就安需自己写吧!

以上讲的策略对大多数朋友来说已经绰绰有余了,但有些公司的老板可不是这么想,老板们往往希望员工好好工作,除了能上网收信以外,其他的诸如 FTP,QQ一律静止,这样的话iptables的设置就比较大,我们不能简单的MASQUERADE。比如我们现在只开放53(dns)80,25, 110三个端口用来平时的www和mail服务,那么我们就可以这样设置

源码:--------------------------------------------------------------------------------
ptables-F
iptables-X
iptables-tnat-F
iptables-tnat-X
iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
iptables-tnat-PPREROUTINGACCEPT
iptables-tnat-POUTPUTACCEPT
iptables-tnat-PPOSTROUTINGACCEPT

iptables-tnat-APOSTROUTING-oeth0-s192.168.0.0/24-jSNAT--to-source211.101.251.4
1192.168.0.0/24这个网段,伪装成211.101.251.4出去。

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport80-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport80-d211.101.251.4--dport1024:65535-jACCEPT
开放内网可以观看外网的网站。

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport25-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport25-d211.101.251.4--dport1024:65525-jACCEPT
你可以送信给别人

iptables-AOUTPUT-oeth0-ptcp-s211.101.251.4--sport1024:65535-dany/0--dport110-jACCEPT
iptables-AINPUT-ieth0-ptcp!--syn-sany/0--sport110-d211.101.251.4--dport1024:65535-jACCEPT
开放内网可以对外网的POP3server取信件。

iptables-AOUTPUT-oeth0-pudp-s211.101.251.4--sport1024:65535-dany/0--dport53-jACCEPT
iptables-AINPUT-ieth0-pudp-sany/0--sport53-d211.101.251.4--dport1024:65535-jACCEPT
开放查询外网的DNS主机

iptables-AOUTPUT-oeth0-picmp-s211.101.251.4--icmp-type8-dany/0-jACCEPT
iptables-AINPUT-ieth0-picm-sany/0--icmp-type0-d211.101.251.4-jACCEPT
开放ping功能

--------------------------------------------------------------------------------

好了,差不多了大家学的怎么样,反正这些已经够你用了,其他的你就举一反三吧!

这里还要讲的是我的服务器是运行着squid服务,由于带宽有限,所以虽然开了透明SNAT功能,但还是希望客户端特别是www的访问还是使用 squid服务,这样可以节省不少带宽资源,这里我们就可以用到iptables的Transparent功能,让iptables的客户端80端口的访问强行转移到squid的3128端口,

首先,修改/etc/squid/squid.conf,找到下面几行,并修改为如下样子:

httpd_accel_hostredhat.frankhome.com#请修改为您的squid主机名称
httpd_accel_port80
httpd_accel_with_proxyon
httpd_accel_uses_host_headeron
然后/etc/rc.d/init.d/squidrestart

接着添加以下策略:
iptables-tnat-APREROUTING-ieth1-ptcp-s192.168.0.0/24--dport80-jREDIRECT--to-ports3128

这时候,您的TransparentProxy就起来了!如果您要测试它,可以取消client端的proxy设定,并将 squid关闭,然後测试是否不能连线(建议用一个未曾浏览过的网址来测试)?然则,再将squid打开,如果能这样又能恢复连线的话,那就已经成功了!这样有一个好处是:以後您再也不必跑到client那边设定proxy;而且,更好的地方在於:重复性的连线再也无需占用宝贵的对外频宽,速递当然也能'假性'的获得提高

ok!今天就写到这里,大家学了多少?一定要慢慢消化哦!:)

【发表回复】【查看CU论坛原帖】【关闭】

<!-----------回复----------->


guangdong 回复于:2003-07-29 12:55:40
6月19日,今天就iptables大家比较关心的问题来个补充说明

1.关于DNAT的补充说明!

对于用ADSL拨号上网的用户,外部网卡往往获取的ip地址是不固定的,所以虚拟主机,或者WWW,mail,ftp发布可能会有些问题,在此针对ADSL的不固定IP情况设置相应的DNAT策略,使能正常发布内网的FTP,MAIL,WWW。

我们这里以发布WWW为例,还是192.168.0.2为内部WWW服务器,只不过现在的服务器是通过ADSL上网

所以我们添加以下策略:
ptables-tnat-APREROUTING-ptcp-mtcp--dport80-jDNAT--to-destination192.168.0.2:80
将80请求转发至192.168.0.2:80端口
iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.2-ptcp-mtcp--dport80-jSNAT--to-source192.168.0.1
返回a.b.b.d时数据源来自同一子网,就将其源地址更改为192.168.0.1,从eth0发出,并在连接跟踪表中查出a.b.c.d是从ppp0进来的,又由ppp0将此数据发出。(我也看不明白为何要有这句话)
iptables-AINPUT-ptcp--dport80-ippp0-jACCEPT
允许80端口访问的语句。
然后重新
/etc/rc.d/init.d/iptablessave
/etc/rc.d/init.d/iptablesrestart

其他如FTP发布也可举一反三:
ptables-tnat-APREROUTING-ptcp-mtcp--dport21-jDNAT--to-destination192.168.0.2:21
iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.2-ptcp-mtcp--dport21-jSNAT--to-source192.168.0.1
iptables-AINPUT-ptcp--dport21-ippp0-jACCEPT

上网的时候,用ifconfig看看ppp0的地址,然后用那个地址看看WWW是否正常发布。呵呵,应该是没问题的哦!

2.关于封QQ,联众和边峰游戏的补充说明

相信很多公司的老板会让网管通过防火墙来封锁QQ,联众和边峰游戏,但又不能耽误其他事,我这里有个简单的配置文件服务器也是通过ADSL上网,能简单的实现以上要求:
iptables-PINPUTDROP
iptables-PFORWARDDROP
iptables-AFORWARD-picmp-jACCEPT开放ping功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport80-jACCEPT开放网页浏览功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport25-jACCEPT开放smtp发信功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport110-jACCEPT开放pop3收信功能
iptables-AFORWARD-ptcp-s192.168.0.0/24--dport21-jACCEPT开放默认FTP功能
iptables-AFORWARD-ptcp--dport4000-oppp0-jDROP封锁边峰
iptables-AFORWARD-ptcp--dport2000-oppp0-jDROP封锁联众
iptables-AFORWARD-pudp-s192.168.0.0/24--dport8000-jDROP封锁QQ(有时udp4000端口也要封锁)
iptables-AFORWARD-pudp-jACCEPT允许其他UDP服务,比如DNS等

IPTABLES-AFORWARD-pTCP--dport1863-jACCEPT
IPTABLES-AFORWARD-pTCP--dport7801:7825-jACCEPT
IPTABLES-AFORWARD-pTCP--dport6891:6900-jACCEPT
上面三条是开放了MSN,不知行不行?
iptables-tnat-APOSTROUTING-s192.168.1.0/24-oppp0-jMASQUERADE

3.我不想让人家可以PING到我

这大概是做防火墙用到最多的一种了你可以在iptables写这句话
iptables-AINPUT-picmp--icmp-typeecho-request-ippp0-jDROP

redhat9调试笔记之防火墙相关推荐

  1. OMAPL138调试笔记

    title: Linux 嵌入式使用 tags: 新建,模板,小书匠 grammar_cjkRuby: true Copyright (C) @2018 Widic Filename:File-fun ...

  2. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  3. 调试笔记--keil 测量周期小技巧

    调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...

  4. 调试笔记--keil 断点调试小技巧

    调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...

  5. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  6. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

  7. RK3399 GT1X触摸屏驱动调试笔记

    硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...

  8. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

    1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...

  9. 雅马哈四轴机器人调试笔记

    雅马哈四轴机器人调试笔记 1.0 先简单说下硬件,如下图对着插就行,雅马哈四轴主要硬件有控制器跟机械手,机械手到控制器主要有4跟电机接口电缆,每2个轴有一个编码器接口电缆,每根轴有一个配置的数据备份电 ...

最新文章

  1. 微信小程序开发工具安装、设置
  2. Kubernetes网络一年发展动态与未来趋势
  3. maven学习(中)- 私服nexus搭建
  4. react antd 动态表单
  5. 高级数据结构与算法 | B树、B+树、B*树
  6. sqlsever无法重新启动计算机,有关SqlServer 2008安装及卸载的一些问题,安装检测时显示重新启动计算机....
  7. python diango 并发_python - django Model 并发写数据出现重复值
  8. 【C++11新特性】 C++11智能指针之shared_ptr
  9. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树
  10. docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档
  11. python自动打开浏览器下载zip,并且提取内容写入excel
  12. 18、led驱动程序的实现
  13. 大唐电信[600198]股票
  14. android 图片编辑 画圈,Android种图片圆形化的三种方式
  15. Python基础模块
  16. 微型计算机原理与应用实验指导书,微型计算机技术与应用实验指导书.doc
  17. 多目标遗传优化算法nsga2[python源码实现]
  18. 2022蓝帽杯半决赛电子取证
  19. Unity中的pingpong效果
  20. 李航统计学习方法总结与整理

热门文章

  1. Docker 下载镜像
  2. Java练习使用ActionListener
  3. 雄迈IPC引领智能化时代潮流
  4. 汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案
  5. 下载搭建sparrow
  6. 生活随记 - 鼠年再见 牛年你好
  7. 由一位资深测试人员写的docker性能测试引发的思考(缓存、内存、显存、PCIe)
  8. Word文档中同一行放置两个图片且标题在同一行的方法
  9. 高精度定位的3级精度分类
  10. 基于JavaEE下宠物领养系统的设计与实现