Presentation is loading. Please wait.

Presentation is loading. Please wait.

ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 2009.6.20 西安.

Similar presentations


Presentation on theme: "ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 2009.6.20 西安."— Presentation transcript:

1 ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 2009.6.20 西安

2 主 题 大 纲 一、防火墙的作用及分类 二、 iptables 概述 三、 iptables 流程图 四、 iptables 语法 五、 iptables 模块应用 六、实例分析

3 说明 参考文档 : CU_platinum 的《 2 小时玩转 iptables 讲义企业版 v1.5.4 》 http://linux.chinaunix.net/bbs/thread-722462-1-1.html iptables 指南 1.1.19 http://iptables-tutorial.frozentux.net/cn/iptables-tutorial-cn-1.1.19.html iptables 的 man 文档 互联网 测试平台: CentOS 5.3 ( kernel-2.6.27 、 iptables-1.4.1.1 )

4 一、防火墙的作用 作用: 过滤两个网络间流入流出的数据包,由 预先制定的策略来控制访问行为。

5 防火墙种类(一) 1 、简单包过滤防火墙; 优点:速度快、性能高,对应用程序透明; 缺点:只检查报头,不检查数据区,不建立连接状态表,安 全性低,应用控制层很弱; 2 、状态检测包过滤防火墙; 优点:安全性高,性能高, 缺点:只检查报头,但建立连接状态表,不检查数据区,安 全性高,应用控制层很弱;

6 防火墙种类(二) 3 、应用代理防火墙; 优点:安全性高,提供应用层的安全; 缺点:性能差,只支持有限的应用,不透明,不检查报头, 不建立连接状态表,检查数据区,网络层保护较弱; 4 、核检测防火墙; 优点:重组并检查会话内容,建立连接状态表;网络层保护 强、应用层保护强、会话保护强; 缺点:性能差,不透明。

7 二、 iptables 概述 Kernel 0.01(1991.9) Kernel 2.0(1994.3.14) ipfwadm Kernel 2.2(1999.1.25) ipfwadm Kernel 2.4(2001.1.4) Netfilter/iptables Kernel 2.6(2003.12.17) Netfilter/iptables

8 三、 iptables 流程图  PREROUTING—[Route]  FORWARD  POSTROUTING  ︱ ↑ ︱ ↓ ︱ INPUT OUTPUT ↓ ↑ ---——— local ———---

9 四、 iptables 基本语法 iptables 基本语法: iptables [-t table] command [match] [target] 1 、 table ,表, filter 、 nat 、 mangle 、 raw ; 2 、 command , iptables 最重要的部分; 3 、 match ,匹配数据包的特征; 4 、 target ,对匹配的数据包进行的操作;

10 4.1 、表 filter ,用于一般的数据包过滤,针对本机; iptables 默认的 表;链 :INPUT 、 FORWARD 、 OUTPUT ; nat ,仅用于 NAT ,也就是转换数据包的源地址或目标地址; 链 :PREROUTING 、 POSTROUTING 、 OUT ; mangle ,用来修改流经防火墙的数据包内容,不能做任何 NAT ,它只是改变数据包的 TTL , TOS 或 MARK ,而不是其 源目地址。强烈建议你不要在这个表里做任何过滤; 链 :PREROUTING 、 POSTROUTING 、 OUTPUT 、 INPUT 和 FORWARD ; raw , 负责加快数据包穿越防火墙的速度,借此提高防火 墙的性能;

11 4.2 、命令 (1) -L :查看规则; iptables -L iptables -L -n iptables -t nat -L -n iptables -L -n --line-number iptables -t nat -L -n --line-number -P :修改默认规则; iptables -P INPUT DROP 备注:为链设置默认的 target ( 可用的是 DROP 和 ACCEPT ) ,做为最后一条 规则被执行

12 4.2 、命令 (2) -A :追加规则,做为最后一条规则; iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -J DNAT --to 192.168.0.1:22 -I :插入规则,不写规则数,默认第 1 条; iptables -I INPUT 1 -p icmp -j ACCEPT iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 2222 -J DNAT --to 192.168.0.1:22

13 4.2 、命令 (3) -D :删除规则; iptables -D INPUT 3 iptables -D INPUT -s 192.168.0.1 -j DROP -R :修改规则; iptables -R INPUT 3 -s 192.168.0.1 -j ACCEPT iptables -t nat -R POSTROUTING 1 -s 192.168.0.1/24

14 4.2 、命令 (4) -F :清空规则; iptables -F iptables -F INPUT iptables -t nat -F iptables -t nat -F POSTROUTING -Z :把指定链的所有计数器归零; iptables -Z iptables INPUT -Z iptables -t nat -Z iptables -t nat POSTROUTING -Z

15 4.3 匹配条件 出、入接口( -o 、 -i ) 源、目的地址( -s 、 -d ) 协议类型( -p ) 源、目的端口( --sport 、 --dport )

16 4.3 匹配条件 (1) 按网络接口匹配 -o 匹配数据流出的网络接口 iptables -A INPUT -o eth0 -j DROP iptables -A INPUT -o ppp0 -j DROP 备注:将接口 eth0 、 ppp0 流出的数据 DROP 掉; -i 匹配数据流入的网络接口 iptables -A INPUT -i eth0 -j DROP iptables -A INPUT -i ppp0 -j DROP 备注:将流入到接口 eth0 、 ppp0 的数据 DROP 掉;

17 4.3 匹配条件 (2) 按地址匹配 -s 匹配源地址 iptables -A INPUT -s 192.168.0.1 -j DROP # 将来自 192.168.0.1 的任何 请求 DROP 掉; -d 匹配目的地址 iptables -A INPUT -d 192.168.0.1 -j DROP # 将本机发往 192.168.0.1 的 任何请求 DROP 掉; 备注: 可以是单个 IP ( 192.168.0.1 )、网段( 192.168.0.1/24 )、域名 ( www.chinaunix.net ),不设则表示任何地址;

18 4.3 匹配条件 (3) 按协议类型匹配 -p 匹配协议类型 iptables -A INPUT -s 192.168.0.1/24 -p tcp --dport 22 -j DROP # 禁止 192.168.0.1/24 的客户机连接本机 22 端口 iptables -A INPUT -p icmp -j DROP # 禁 ping iptables -A INPUT -p 1 --icmp-type 8 -j DROP # 可以 ping 通其他客户机, 但是其他客户机 ping 不通该机; 备注:第三条规则中 1 对应的协议类型是 icmp ,详情请参照 /etc/protocols

19 4.3 匹配条件 (4) 按端口匹配 --sport 匹配源端口 iptables -A INPUT -p tcp --sport 80 -j DROP # 将来自 80 端口的请求 DROP 掉 (比如,我向 www.chinaunix.net 发出请求, www.chinaunix.net 回应后, 遇到该规则后回应就被拒绝掉); www.chinaunix.net --dport 匹配目的端口 iptables -A INPUT -s 192.168.0.1/24 -p tcp --dport 80 -j DROP # 将来自 192.168.0.1/24 的针对本机 80 端口的请求 DROP 掉; 备注: 1 、 --sport 、 --dport 必须配合参数 -p 使用; 2 、可以指定某个端口,也可以是端口范围,比如 :2000 ( 2000 以下端 口)、 2000:3000 ( 2000-3000 端口)、 3000: ( 3000 以上端口)

20 4.4 处理方式 (1) ACCEPT 这个 target 没有任何选项和参数,使用也很简单,指定 -j ACCEPT 即可。一旦数 据包满足了指定的匹配条件,就会被 ACCEPT ,并且不会再去匹配当前链中的 其他规则或同一个表内的其他规则; iptables -P INPUT ACCEPT # 修改 INPUT 的默认规则为 ACCEPT iptables -A INPUT -s 192.168.0.1/24 -j ACCEPT # 允许来自 192.168.0.1/24 的所有针对 本机的所有请求;

21 4.4 处理方式 (2) DROP 如果包符合条件,这个 target 就会把它丢掉,也就是说包的生命到此结束,不 会再向前走一步,效果就是包被阻塞了。在某些情况下,这个 target 会引起意 外的结果,因为它不会向发送者返回任何信息,也不会向路由器返回信息, 这就可能会使连接的另一方因苦等回音而亡,解决这个问题的较好办法较好 的办法是使用 REJECT (除了丢弃数据包之外,还向发送者返回错误信息); iptables -A INPUT -s 192.168.0.1 -j DROP # 将来自 192.168.0.1 的请求全部 DROP 掉; iptables -A INPUT -s 192.168.0.1 -j REJECT # 将来自 192.168.0.1 的请求全部 DROP 掉,并向请求者返回错误信息;

22 4.4 处理方式 (3) --SNAT 这个 target 是用来做源网络地址转换的,就是重写包的源 IP 地址。先在内核里 打开 ip 转发功能,然后再写一个 SNAT 规则,就可以把所有从本地网络出去的 包的源地址改为 Internet 连接的地址了。 SNAT target 的作用就是让所有从本地 网出发的包看起来都是从一台机子发出的,这台机子一般就是防火墙。 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j SNAT --to\ 1.2.3.4 备注: eth0 为外网网卡接口, 192.168.0.1/24 为内网网段;

23 4.4 处理方式 (4) -j DNAT --to IP[-IP]:port (nat 表的 PREROUTING 链 ) 用来做目的网络地址转换的,就是重写包的目的 IP 地址。如果一个包被匹配了, 那么和它属于同一个流的所有的包都会被自动转换,然后就可以被路由到正 确的主机或网络。 iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT\ --to 192.168.1.1:80 # 把所有发往地址 1.2.3.4( 端口 80) 的请求都转发到一个 LAN 使用的私有地址中,即 192.168.1.1 到 192.168.1.10 iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT\ --to 192.168.1.1-192.168.1.10 # 把所有发往地址 1.2.3.4( 端口 80) 的请求都 转发到一段 LAN 使用的私有地址中,即 192.168.1.1 到 192.168.1.10 备注: 也就是将内网的服务器映射到外网,通俗点就是端口映射;

24 4.4 处理方式 (5) -j MASQUERADE 和 SNAT target 的作用是一样的,区别就是它不需要指定 --to-source ,被专门设 计用于那些动态获取 IP 地址的连接的,如果你有固定的 IP 地址,还是用 SNAT target 吧。当接口停用时, MASQUERADE 不会记住任何连接,这在我们 kill 掉接 口时是有很大好处的。如果我们使用 SNAT target ,连接跟踪的数据是被保留 下来的,而且时间要好几天,这可是要占用很多连接跟踪的内存的。一般情 况下,这种处理方式对于拨号上网来说是较好的。即使你有静态的 IP ,也可 以使用 MASQUERADE ,而不用 SNAT 。不过,这不是被赞成的,因为它会带来 额外的开销,而且以后还可能引起矛盾。 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -j MASQUERADE 备注: eth0 为外网网卡接口, 192.168.0.1/24 为内网网段;

25 4.5 规则的匹配方式 规则由第 1 条开始依次匹配,如果第 1 条规则不匹配,则匹配第 2 条规 则,如果第 2 条规则还不匹配则匹配第 3 条规则,依次论之; 如果数据包被第 N 条规则所匹配,则数据包的存活将由该规则决定; 如果规则规定将数据包丢弃,那么数据包就会被丢弃,不会管后面的 规则如何如何; 不论链中有多少个规则,默认规则 (Default Policy) 永远都在每一个链的 最底端,最后被执行;每个链的默认规则各自独立,且只有一种状态, 要么是 ACCEPT ,要么是 DROP ;

26 4.6 备注 规则配置文件 /etc/sysconfig/iptables iptables-save iptables-restore service iptables save # 将目前 iptables 规则保存 到 /etc/sysconfig/iptables ; chkconfig iptables on chkconfig --level 35 iptables on

27 五、 iptables 模块应用 很 好 !很 强 大 !很 好 !很 强 大 !

28 5.1 iptables 模块应用 comment 模块 iptables -A FORWARD -s 192.168.0.254 -j DROP -m comment\ --comment “DataServer“ iptables -A FORWARD -d 192.168.0.254 -j DROP -m comment\ --comment “DataServer“ # 不允许数据库服务器 192.168.0.254 访问外网 / 被外网访问; 备注: 1 、 允许你增加一个备注给任何规则,以提高规则的可读性和理解性; 2 、备注最多支持 256 个字符。

29 5.2 iptables 模块应用 connlimit 模块 iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above\ 50 -j DROP # 只允许每个 IP 同时发起 50 个 80 端口的请求,超过的请求将被丢弃; 备注: 1 、很有效的一个模块,确实不错; 2 、 --connlimit-above n 限制为多少个; --connlimit-mask n 这组主机的掩码, 默认是 connlimit-mask 32 ,即一个 IP ; 3 、可以对付 synflood 这样的攻击,对于 DDoS 无效;

30 5.3 iptables 模块应用 iprange 模块 iptables -A FORWARD -m iprange --src-range 192.168.0.3-192.168.0.61 -j DROP # 不允许内网客户机 192.168.0.3--192.168.0.61 通过网关上网; 备注: 1 、 --src-range 源 IP ; 2 、 --dst-range 目的 IP ;

31 5.4 iptables 模块应用 layer7 模块 iptables -A FORWARD -m layer7 --l7proto qq -j DROP # 禁 QQ iptables -A FORWARD -m layer7 --l7proto xunlei -j DROP # 禁迅雷 iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP # 禁 BT iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP # 禁电驴 备注: Layer7 支持的封禁,参照 /etc/l7-protocols/protocols/

32 5.5 iptables 模块应用 limit 模块 iptables –A INPUT -m limit --limit 20/second -j DROP iptables –A INPUT -m limit –limit-burst 10 -j DROP 备注: 1 、 --limit ,为 limit match 设置最大平均匹配速率,也就是单位时间内 limit match 可以匹配几个包。它的形式是一个数值加一个时间单位,可以 是 /second /minute /hour /day 。默认值是每小时 3 次 ( 用户角度 ) ,即 3/hour ,也就是每 20 分钟一次 (iptables 角度 ) ; 2 、 --limit-burst ,定义的是 limit match 的峰值,就是在单位时间 ( 这个时间 由上面的 --limit 指定 ) 内最多可匹配几个包 ( 由此可见, --limit-burst 的值 要比 --limit 的大 ) ,默认值是 5 ;

33 5.6 iptables 模块应用 mac 模块 iptables –A INPUT -m mac --limit mac-source XX:XX:XX:XX:XX:XX -j\ DROP 备注: 基于包的 MAC 源地址匹配包,地址格式只能是 XX:XX:XX:XX:XX:XX ,当然 它也可以用英文感叹号取反;

34 5.7 iptables 模块应用 muluiport 模块 iptables –A INPUT -p tcp -m muluiport --dport 21,22,25,80,110 -j DROP iptables –A INPUT -p tcp -m muluiport --source-port 21,22,25,80,110\ -j DROP iptables –A INPUT -p tcp -m muluiport --destination-port\ 21,22,25,80,110 -j DROP 备注: 1 、 --source-port 源端口多端口匹配,最多可以指定 15 个端口,以英文逗 号分隔,注意没有空格; 2 、 --destination-port 目的端口多端口匹配,使用方法和源端口多端口匹 配一样,唯一的区别是它匹配的是目的端口; 3 、 --dport 同端口多端口匹配,意思就是它匹配的是那种源端口和目的端 口是同一个端口的包,比如:端口 80 到端口 80 的包、 110 到 110 的包等。 使用方法和源端口多端口匹配一样。

35 5.8 iptables 模块应用 owner 模块 iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner 500 -j\ DROP iptables -A OUTPUT -p tcp --dport 22 -m owner --gid-owner 500 -j\ DROP 备注: 1 、比对来自本机的封包,是否为某特定使用者 / 组所产生的,这样可以 避免服务器使用 root 或其它身分将敏感数据传送出去,可以降低系统 被骇的损失,这里的 --uid-owner 和 --gid-owner 可以跟用户名、组名、 用户 ID 、组 ID ; 2 、没有 --pid-owner 、 --cmd-owner ;

36 5.9 iptables 模块应用 recent 模块 iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck –seconds\ 3600 --hitcount 3 --rttl --name SSH --rsource -j DROP iptables -A INPUT -p tcp --dport 22 --syn -m recent --set --name SSH\ --rsource -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 同一个 IP 在一个小时内只允许建立 ( 或尝试 ) 三次 SSH 联机; 备注: 请注意 rule 顺序 : 先设置 recent 条件 -j DROP, 再设置 recent --set -j ACCEPT

37 5.10 iptables 模块应用 state 模块 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j\ ACCEPT 备注: 1 、包状态依据 IP 所包含的协议不同而不同,但在内核外部,也就是用户空间里, 只有 4 种状态: NEW , ESTABLISHED , RELATED 和 INVALID 。 2 、 NEW :这个包是我们看到的第一个包; 3 、 ESTABLISHED : 已经注意到两个方向上的数据传输,而且会继续匹配这 个连接的包;只要发送并接到应答,连接就是 ESTABLISHED 的了 4 、 RELATED :当一个连接和某个已处于 ESTABLISHED 状态的连接有关系时, 就被认为是 RELATED 的了; 5 、 INVALID : 数据包不能被识别属于哪个连接或没有任何状态。有几个原 因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的 ICMP 错误信息。一般地,我们 DROP 这个状态的任何东西;

38 5.11 iptables 模块应用 string 模块 iptables -A FORWARD -m string --algo bm --string sex -j DROP iptables -A FORWARD -m string --algo bm --string qq -j DROP # 过滤关键字; 备注: 1 、 String 字符串匹配, 可以用做内容过滤; 2 、通过一些模式匹配策略,用这个模块匹配给定的一个字符串。要求: 内核版本不能低于 2.6.14 ;

39 5.12 iptables 模块应用 time 模块 iptables -A FORWARD -m time --timestart 8:00 --timestop 18:00 --weekdays Mon,Tue,Wed,Thu,Fri --datestop 2010 -j ACCEPT 备注: 1 、 [ --timestart value ] ( 开始时间 ) :只是匹配在这个值之后的 ( 包括格式 HH:MM ; 默认 00:00) ; 2 、 [ --timestop value ] ( 结束时间 ) :只是匹配在这个值之前的 ( 包括格式 HH:MM ; 默认 23:59) ; 3 、 [ --weekdays listofdays ] ( 星期 ) :只是匹配已经给出的天,格式 Mon,Tue,Wed,Thu,Fri,Sat,Sun ,默认每天,非 days ; 4 、 [ --datestart date ] ( 开始日期 ) :只是匹配这个开始日期值之后的 ( 包括, 格式 : YYYY[:MM[:DD[:hh[:mm[:ss]]]]] h,m,s start from 0 ,默认是 1970 ; 5 、 [ --datestop date ] ( 结束日期 ) :只是匹配这个开始日期值之前的 ( 包括, 格式 : YYYY[:MM[:DD[:hh[:mm[:ss]]]]] h,m,s start from 0 ,默认是 2037 ;

40 六、实例分析 前言: 写规则前须先理清思路,明白需求,不可盲目执 行规则 / 脚本(比如远程时,不慎将 ssh 的 22 端口 DROP 掉了); 建议将 iptables 规则写成脚本(方便修正、方便管 理); 从点点滴滴做起,做好每一件事,养成一个好习 惯;

41 6.1 ftp 服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $IPT -F $IPT -X $IPT -P INPUT DROP $IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -m state --state RELATED,ESTABLISHED\ -j ACCEPT $IPT -A INPUT -p tcp --sport 21 -j ACCEPT $IPT -A INPUT -p tcp --dport 22 -j ACCEPT

42 备 注 1 、 FTP 的主动连接模式, 21 为监听 / 响应端口, 20 为数据传输 端口; 2 、 FTP 的被动连接模式, 21 为监听 / 响应端口,数据传输端口 为随机端口; 3 、该脚本适合客户端( FlashFXP 或 IE 浏览器)被动模式下的 连接; 4 、 ip_conntrack_ftp 该模块很重要,不加载该模块、依旧使 用被动连接的话, vsftpd 为例,配置文件中添加: pasv_min_port=9001 pasv_max_port=9999 防火墙规则中需添加: $IPT -A INPUT -p tcp --dport 9001:9999 -j ACCEPT

43 6.2 网关服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE

44 备 注 1 、这差不多应该是最简单的网关脚本了,这里只是举例,没有一 成不变的规则,根据自己的需要写吧! 2 、 开启数据转发功能 echo “1” > /proc/sys/net/ipv4/ip_forward ; 3 、开启数据转发功能的另外一种办法【推荐】: 编辑 /etc/sysctl.conf , net.ipv4.ip_forward = 1 4 、 eth0 为外网网卡接口; 5 、 关于 MASQUERADE ,参照 4.4 处理方式 (5) ,或者使用 man ; 6 、如果有自己的外网固定 IP ,可以将最后一行规则改成: $IPT -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 也可以写成: $IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -j SNAT –to\ 1.2.3.4

45 6.3 对内网用户的控制 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE $IPT -A FORWARD -s 192.168.1.1 -j DROP $IPT -A FORWARD -d www.sex.com -j DROP

46 备 注 1 、 $IPT -A FORWARD -s 192.168.1.1 -j DROP # 不允许内网客户机 192.168.1.1 访问外网; 2 、 $IPT -A FORWARD -d www.sex.com -j DROP # 不允许内网客户机访问 www.sex.com 这个网站, www.sex.com 会被解析成 IP 再去匹配的; /etc/resolv.conf 中 要有能使用的 DNS 服务器,否则报错; www.sex.com 3 、尽管 FORWARD 默认规则是 ACCEPT ,但是默认规则永远都 是作为最后一条规则被执行的; 4 、 $IPT -A FORWARD -s 192.168.1.1 -d www.sex.com -j DROP # 不允许内网客户机 192.168.1.1 访问 www.sex.com ,访问其 他网站、收发邮件等都是被允许的; www.sex.com

47 6.4 映射内网服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE $IPT -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80\ -j DNAT --to 192.168.0.250:80

48 备 注 1 、这也就是所谓的端口映射了; 2 、可以指定 IP , -d 1.2.3.4 ,也可以指定网络接口比如, -i eth0 ; 3 、另外提供回流问题的解决办法: $IPT -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to\ 192.168.0.250:80 $IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -d 192.168.0.250 –p\ tcp -- dport 80 -j SNAT --to 192.168.0.254 小注: 192.168.0.254 为 192.168.0.1/24 的网关 IP ; 192.168.0.250 为提供 web 服务的服务器;

49 谢 谢!


Download ppt "ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 2009.6.20 西安."

Similar presentations


Ads by Google