[原创] 在高通MDM9607设备上配置iptables服务

1 Iptables简介


  • Iptables 更确切的说是一个应用程序,工作在linux的用户层,对 Linux 内核防火墙中的表进行管理。因为Linux 系统具有强大的网络协议栈功能,可以连接因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 所以需要一种内置能力来针对网络信息进行过滤,linux内核2.4.x 版本之后就具备了IP信息包过滤这种能力。如果利用Iptables 进行适合配置它只允许合法的网络流量进出系统,而禁止其它任何网络流量。为了确定网络流量是否合法,系统管理员可以利用Iptables 来预定义的一组规则。这些规则告诉linux内核某个流量是否合法以及对于来自某个源、至某个目的地或具有某种协议类型的网络流量要做些什么。

2 内核配置


  • 一般来说2.4.x 版本之后的内核中默认是把防火墙相关主要的内核选项自动编译进内核的,如果没有那需要自己手动进行配置,有些是必须配置的,有些是可选的(根据实际应用需要看是否需要这方面的过滤,因为这些过滤是在内核中做的,如果不是必须的话建议不要选上,免的影响系统开销,内核默认也没有把所有防火墙选项都选上)。
$ bitbake -c menuconfig linux-quic
  • 具体配置位置
→ Networking support → Networking options → Network packet filtering framework (Netfilter) 
  • 必选的配置(如果要让防火墙工作必须有的配置)


    image.png

    Network packet filtering framework (Netfilter)
    选上(默认已选上),允许计算机作为网关或防火墙。


    image.png

Netfilter Xtables support (required for ip_tables)
选上(默认已选上),有了它,你才能使用过滤、伪装、NAT。它 为内核加入了iptables标识框架。没有它,iptables毫无作用。

3 在设备上配置Iptables服务


Iptables的最新源码可以去www.netfilter.org 官网下载。不过设备上也有安装iptables的工具,经过测试是可以使用的,由于时间关系没有下载最新的iptables源码进行编译测试。

# which iptables
/usr/sbin/iptables

1)把启动脚本和服务脚本放到/etc/init.d目录

$adb push iptables-start.sh /etc/init.d/.
$adb push iptables.sh /etc/init.d/.

2)配置启动脚本
查看运行等级

# runlevel
N 5

说明启动时会从 rc5.d目录下按顺序去启动脚本
在rc5.d目录建立启动链接

#cd cd /etc/rc5.d
#ln -s ../init.d/iptables-start.sh S99start_iptables

备注:下面是我写好的iptables的启动脚本和服务脚本

  • iptables-start.sh
#!/bin/sh
# copyright (c) 2017-2027, xiamen yaxon. All rights reserved.  
# iptables      Start iptables firewall     
#     
# runlevel 5 in  S99     
# description:  starts

/etc/init.d/iptables.sh start
  • iptables.sh
#!/bin/sh
# copyright (c) 2017-2027, xiamen yaxon. All rights reserved.  
# iptables      {start|stop|restart|save}     
#         
# description:  starts, stops and restart  

IPTABLES_DIR='/etc/sysconfig'
IPTABLES_RULE='/etc/sysconfig/iptables'
IPTABLES_ERROR_CODE=3


start() {     
    #如果/etc/sysconfig/iptables不存在,返回值出错码   
    [ ! -f "$IPTABLES_RULE" ] && return $IPTABLES_ERROR_CODE          

    echo "get firewall rules"  
    
    #清除之前的规则
    iptables -F
    iptables -X
    iptables -Z

    #恢复之前配置的防火墙规则  
    iptables-restore < ${IPTABLES_RULE}
    if [ $? -eq 0 ]; then     
        echo "restore firewall rules success"     
        else  
        echo "restore firewall rules failure"; return $IPTABLES_ERROR_CODE     
    fi  
}   

save() {        

    if [ ! -d "$IPTABLES_DIR" ]; then     
        mkdir -p $IPTABLES_DIR    
    fi  
 
    iptables-save > ${IPTABLES_RULE}
    if [ $? -eq 0 ]; then     
        echo "save firewall rules success"     
        else  
        echo "save firewall rules failure"; return $IPTABLES_ERROR_CODE     
    fi  
} 

stop() { 
    #暂时不处理
    echo "stop firewall success"  
}

restart() {       
    stop; 
    start;   
}  

case "$1" in  
    start)        
        start     
        RETVAL=$?     
        ;;  
    save)        
        save     
        RETVAL=$?     
        ;;    
    stop)   
        stop     
        RETVAL=$?     
        ;; 
    restart)     
        restart     
        RETVAL=$?     
        ;;          
    *)     
        echo $"Usage: $0 {start|stop|restart|save}"  
        RETVAL=$?      
        ;;     
esac     

exit $RETVAL 

3)iptables的规则配置
可以使用iptables工具进行配置,具体配置规则可以参考https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#INCLUDE.RCFIREWALL
可以根据实际需要进行选择配置,这里不再介绍。
4)iptables.sh脚本的使用
启动,iptables的规则不会自动保存,需要每次系统运行时重新加载这些规则,下面的命令可以重新去加载之前配置的规则

#/etc/init.d/iptables.sh start

重启,如果想放弃正在配置的规则可以用下面的命令

#/etc/init.d/iptables.sh restart

存储,在使用iptables进行配置完规则,可以用下面的指令存储规则,因为系统不会自动保存配置规则,重启之后配置的规则会丢掉,所以配置完需要存储一下规则才会保存下来

#/etc/init.d/iptables.sh save

参考文献


[1] https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#INCLUDE.RCFIREWALL
[2] http://www.netfilter.org/projects/conntrack-tools/index.html
[3] http://www.faqs.org/docs/iptables/
[4] 鸟哥的linux私房菜-服务器(第三版/第九章)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,423评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,339评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,241评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,503评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,824评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,262评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,615评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,337评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,989评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,300评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,829评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,193评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,753评论 3 230
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,970评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,708评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,295评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,207评论 2 258

推荐阅读更多精彩内容