曲径通幽论坛

标题: --dport/--sport --- 指定目标端口/指定源端口 [打印本页]

作者: beyes    时间: 2012-5-11 14:47
标题: --dport/--sport --- 指定目标端口/指定源端口
--dport 选项用来指定目标端口,比如:
[Plain Text] 纯文本查看 复制代码
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j REJEC

上面命令表示,不希望 192.168.1.100 这台主机访问自己的 WEB 服务器,其中 --dport 所指定的端口是相对于源 IP 192.168.1.100 这个方向来说。

--sport 选项用来指定源端口

在设定规则之前,先来下载 www.groad.net 上的一个文件看看:
# wget http://www.groad.net/logo.png
--2012-05-11 14:19:36--  http://www.groad.net/logo.png
Resolving www.groad.net... 184.22.140.27
Connecting to www.groad.net|184.22.140.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18577 (18K) [image/png]
Saving to: “logo.png”

100%[========================================================================>] 18,577      --.-K/s   in 0.1s    

2012-05-11 14:19:37 (159 KB/s) - “logo.png” saved [18577/18577]
正常下载。那么在如果我们不希望这台主机访问 www.groad.net 这个网站,那么可以如下设置规则:
[Plain Text] 纯文本查看 复制代码
iptables -A INPUT -p tcp -s www.groad.net --sport 80 -j REJECT

若再尝试下载上面的 logo.png 文件时会发现失败。上面的规则意思是:对于源主机(www.groad.net) 的端口(80) 所发过来的数据包(INPUT 到本台客户机)采取的处理办法是 REJECT (拒绝进入)。

需要注意的是,当指定 --dport 和 --sport 参数时,一定要指出用的是 tcp 还是 udp 协议,如不能直接写成:
[Plain Text] 纯文本查看 复制代码
iptables -A INPUT -s www.groad.net --sport 80 -j REJECT

原因是,如果不指定协议,那么相当于不管是什么协议都会符合,如 tcp, udp 或 icmp,也就是相当于添加 3 条以下的规则:
[Plain Text] 纯文本查看 复制代码
iptables -A INPUT -p tcp -s www.groad.net --sport 80 -j REJECT
iptables -A INPUT -p udp -s www.groad.net --sport 80 -j REJECT
iptables -A INPUT -p icmp -s www.groad.net --sport 80 -j REJECT

上面,对于 tcp 和 udp 是没什么问题的,但是对于 icmp 协议来说,就不存在什么 80 端口了,因此该语法错误,可以在实际中故意执行此操作查看下:
# iptables -A INPUT -p icmp -s www.groad.net --sport 80 -j REJECT
iptables v1.4.10: unknown option `--sport'
Try `iptables -h' or 'iptables --help' for more information.

关于 ICMP 协议可以参考:《ping 结果浅析




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2