+ -
当前位置:首页 → 问答吧 → 关于iptables[已解结]

关于iptables[已解结]

时间:2009-10-02

来源:互联网

关于iptables想问下
iptables -A INPUT -p TCP -i $EXTIF --dport 4665 -j ACCEPT
iptables -A INPUT -p TCP -i $EXTIF --sport 25 -j ACCEPT
中的sport 与 dport是什么意思含义?

搜索到一个帖子说
sport, source port 源端口
dport, destination port 目的端口
但是我想问下
那个源端口指的是什么?

比如gmail
"服务器设置"标签:
服务器类型: POP 邮件服务器
服务器名称: pop.gmail.com
端口: 995
用户名: (您的 Gmail 用户名)
使用安全连接: SSL
将邮件留在服务器上: 禁用

"发送邮件服务器 (SMTP)"标签:
服务器名称: smtp.gmail.com
端口: 25
用户名: (您的 Gmail 用户名)
安全连接: TLS(如果可用)

能说下gmail的端口设置应该用sport还是dport?
恩,不是很理解sport,与dport的区别,麻烦解释清除点,用上面的gmail端口解释下谢谢。

作者: chenhaolost   发布时间: 2009-10-02

这个问题同iptables 内的 chain 都有点关联,我给个chain 图你参考一下吧。
在你这问题:
如果你是客户,在 OUTPUT 链,995 和 25 是 dport;
 在 INPUT 链,995 和 25 是 sport。
如果你是 Gmail 服务器,在 OUTPUT 链,995 和 25 是 sport,
 在 INPUT 链,995 和 25 是 dport。

我的理解大约是这样,有不对的地方,还望后来者指正,谢谢

附iptables中要经过的链(chain)图:
上传的图像
netfilter_packet_flow.png (59.2 KB, 10 次查看)

作者: wecoh   发布时间: 2009-10-02

恩,看了网站发现众说纷纭啊,

两条是不一样的
iptables -A OUTPUT -o eth1 -p udp --dport 53 -j ACCEPT
意思是允许发往外网53端口的包可以通过
iptables -A INPUT -i eth1 -p udp -sport 53 -j ACCEPT
意思是允许外网DNS发的回应包可以进入本机

比如,你想吃份快餐,让机器人出去买,就需要它可以出门,买到快餐后,就必须允许它进门。
缺少任何一个必须,你都不要想吃到!
而端口的限制,就是让机器人必须是买快餐才可以出门,买到的是快餐,才可以进门,买其他的不允许!

作者: chenhaolost   发布时间: 2009-10-02

引用:
作者: wecoh
这个问题同iptables 内的 chain 都有点关联,我给个chain 图你参考一下吧。
这儿,如果在 OUTPUT 链的话,995 和 25 是你的 dport。

附iptables中要经过的链(chain)图:
恩,你说output 就是dport那

我想问下tunderbird用的是dport还是sport?
电驴的话是不是就是两个都要呢?既要dport 又要sport?
代码:
[
root@linux ~]# mkdir -p /usr/local/virus/iptables
[root@linux ~]# cd /usr/local/virus/iptables
[root@linux iptables]# vi iptables.rule
#!/bin/bash

# 請先輸入您的相關參數,不要輸入錯誤了!
 EXTIF="eth1" # 這個是可以連上 Public IP 的網路介面
 INIF="eth0" # 內部 LAN 的連接介面;若無請填 ""
 INNET="192.168.1.0/24" # 內部 LAN 的網域,若沒有內部 LAN 請設定為 ""
 export EXTIF INIF INNET

# 第一部份,針對本機的防火牆設定!###########################
# 1. 先設定好核心的網路功能:
 echo "1" > /proc/sys/net/ipv4/tcp_syncookies
 echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
 echo "1" > $i
 done
 for i in /proc/sys/net/ipv4/conf/*/log_martians; do
 echo "1" > $i
 done
 for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
 echo "0" > $i
 done
 for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do
 echo "0" > $i
 done
 for i in /proc/sys/net/ipv4/conf/*/send_redirects; do
 echo "0" > $i
 done

# 2. 清除規則、設定預設政策及開放 lo 與相關的設定值
 PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
 iptables -F
 iptables -X
 iptables -Z
 iptables -P INPUT DROP
 iptables -P OUTPUT ACCEPT
 iptables -P FORWARD ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -m state --state RELATED -j ACCEPT

# 3. 啟動額外的防火牆 script 模組
 if [ -f /usr/local/virus/iptables/iptables.deny ]; then
 sh /usr/local/virus/iptables/iptables.deny
 fi
 if [ -f /usr/local/virus/iptables/iptables.allow ]; then
 sh /usr/local/virus/iptables/iptables.allow
 fi
 if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
 sh /usr/local/virus/httpd-err/iptables.http
 fi
 iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

# 4. 允許某些類型的 ICMP 封包進入
 AICMP="0 3 3/4 4 11 12 14 16 18"
 for tyicmp in $AICMP
 do
 iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
 done

# 5. 允許某些服務的進入,請依照您自己的環境開啟
# iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 -j ACCEPT # HTTPS

# 第二部份,針對後端主機的防火牆設定!##############################
# 1. 先載入一些有用的模組
 modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack 
ip_conntrack_ftp ip_conntrack_irc"
 for mod in $modules
 do
 testmod=`lsmod | grep "${mod} "`
 if [ "$testmod" == "" ]; then
 modprobe $mod
 fi
 done

# 2. 清除 NAT table 的規則吧!
 iptables -F -t nat
 iptables -X -t nat
 iptables -Z -t nat
 iptables -t nat -P PREROUTING ACCEPT
 iptables -t nat -P POSTROUTING ACCEPT
 iptables -t nat -P OUTPUT ACCEPT

# 3. 開放成為路由器,且為 IP 分享器!
 if [ "$INIF" != "" ]; then
 iptables -A INPUT -i $INIF -j ACCEPT
 echo "1" > /proc/sys/net/ipv4/ip_forward
 if [ "$INNET" != "" ]; then
 for innet in $INNET
 do
 iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
 done
 fi
 fi
 # 如果你的 MSN 一直無法連線,或者是某些網站 OK 某些網站不 OK,
 # 可能是 MTU 的問題,那你可以將底下這一行給他取消註解來啟動 MTU 限制範圍
 # iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
 # --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# 4. 內部伺服器的設定:
# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
# -j DNAT --to 192.168.1.210:80
上面是鸟哥的一个脚本,
他的一部分中input部分也使用了sport
代码:
# 5. 允許某些服務的進入,請依照您自己的環境開啟
# iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 -j ACCEPT # HTTPS
顺便问下你画图软件是什么?

作者: chenhaolost   发布时间: 2009-10-02

那个图是我以前在网上找的,你可以GG一下 “iptables中DNAT与SNAT的理解”。
我现在没空,最小要2个小时后才回来,我传我一部分的 iptabls 你参考下啦,我那儿都是提供了几个向外服务的端口,一直都正常。
引用:
-A INPUT -i ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 6881:6889 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 6891:6899 -j ACCEPT
-A INPUT -i ppp0 -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 3724 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 8085 -j ACCEPT

作者: wecoh   发布时间: 2009-10-02

引用:
作者: wecoh
那个图是我以前在网上找的,你可以GG一下 “iptables中DNAT与SNAT的理解”。
我现在没空,最小要2个小时后才回来,我传我一部分的 iptabls 你参考下啦,我那儿都是提供了几个向外服务的端口,一直都正常。
恩,谢谢你大概知道了。

作者: chenhaolost   发布时间: 2009-10-02