当前位置:   article > 正文

mini6410防火墙(Netfilter/iptables)移植_libxtables.so.10

libxtables.so.10

一 配置编译内核,使其支持netfilter

      Netfilter是内核态提供的包过滤框架,其中包含了各种各样的过滤表,默认的内核配置一般不包含这个框架,所以我们要先配置内核选项让其支持netfilte才行。

$cd ~work/my6410Kernel/linux-2.6.38
      拷贝mini6410配置文件:


cp config_mini6410_a70 .config  

      完成以上操作后,执行make menuconfig命令,进入基于文本模式的菜单型的Linux内核配置:

  1. .config - Linux/arm 2.6.38 Kernel Configuration
  2.  ──────────────────────────────────────────────────────────────────────────────
  3.   ┌───────────────── Linux/arm 2.6.38 Kernel Configuration ─────────────────┐
  4.   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.          │  
  5.   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, │  
  6.   │  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> │  
  7.   │  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       │  
  8.   │ ┌────^(-)─────────────────────────────────────────────────────────────┐ │  
  9.   │ │        Power management options  --->                               │ │  
  10.   │ │    [*] Networking support  --->                                     │ │  
  11.   │ │        Device Drivers  --->                                         │ │  
  12.   │ │        File systems  --->                                           │ │  
  13.   │ │        Kernel hacking  --->                                         │ │  
  14.   │ │        Security options  --->                                       │ │  
  15.   │ │    -*- Cryptographic API  --->                                      │ │  
  16.   │ │        Library routines  --->                                       │ │  
  17.   │ │    ---                                                              │ │  
  18.   │ │        Load an Alternate Configuration File                         │ │  
  19.   │ └────v(+)─────────────────────────────────────────────────────────────┘ │  
  20.   ├─────────────────────────────────────────────────────────────────────────┤  
  21.   │                    <Select>    < Exit >    < Help >                     │  
  22.   └─────────────────────────────────────────────────────────────────────────┘ 

进入networking support --->

进入networking options -->

将 “Network packet filtering framework (Netfilter)”选中;


  1. .config - Linux/arm 2.6.38 Kernel Configuration
  2. ──────────────────────────────────────────────────────────────────────────────
  3. ┌────────────────────────── Networking options ───────────────────────────┐
  4. │ Arrow keys navigate the menu. <Enter> selects submenus --->. │
  5. │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
  6. <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </>
  7. │ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
  8. │ ┌────^(-)─────────────────────────────────────────────────────────────┐ │
  9. │ │ [ ] Security Marking │ │
  10. │ │ [ ] Timestamping in PHY devices │ │
  11. │ │ [*] Network packet filtering framework (Netfilter) ---> │ │
  12. │ │ < > The DCCP Protocol (EXPERIMENTAL) ---> │ │
  13. │ │ < > The SCTP Protocol (EXPERIMENTAL) ---> │ │
  14. │ │ < > The RDS Protocol (EXPERIMENTAL) │ │
  15. │ │ < > The TIPC Protocol (EXPERIMENTAL) ---> │ │
  16. │ │ < > Asynchronous Transfer Mode (ATM) │ │
  17. │ │ < > Layer Two Tunneling Protocol (L2TP) ---> │ │
  18. │ │ < > 802.1d Ethernet Bridging │ │
  19. │ └────v(+)─────────────────────────────────────────────────────────────┘ │
  20. ├─────────────────────────────────────────────────────────────────────────┤
  21. <Select> < Exit > < Help > │
  22. └─────────────────────────────────────────────────────────────────────────┘

     由于本人对具体配置并不太熟悉,进入可以将所有选项全部选中(有点多。。过几天再发表重要选项的意义吧!),本人的配置如下:

  1. --- Network packet filtering framework (Netfilter) │ │
  2. │ │ [ ] Network packet filtering debugging │ │
  3. │ │ [*] Advanced netfilter configuration │ │
  4. │ │ Core Netfilter Configuration ---> │ │
  5. │ │ < > IP virtual server support ---> │ │
  6. │ │ IP: Netfilter Configuration ---> │ │
  7. │ │

进入 Core Netfilter Configuration

  1. <*> Netfilter NFQUEUE over NFNETLINK interface │ │
  2. │ │ <*> Netfilter LOG over NFNETLINK interface │ │
  3. │ │ <*> Netfilter connection tracking support │ │
  4. │ │ [*] Connection mark tracking support │ │
  5. │ │ [*] Connection tracking events │ │
  6. │ │ < > DCCP protocol connection tracking support (EXPERIMENTAL) │ │
  7. │ │ < > SCTP protocol connection tracking support (EXPERIMENTAL) │ │
  8. │ │ <*> UDP-Lite protocol connection tracking support │ │
  9. │ │ < > Amanda backup protocol support │ │
  10. │ │ <*> FTP protocol support
  1. -*- Netfilter Xtables support (required for ip_tables) │ │
  2. │ │ *** Xtables combined modules *** │ │
  3. │ │ -*- nfmark target and match support

进入 IP: Netfilter Configuration 配置(略)

然后重新编译内核,带有Netfiler/iptables功能的内核zImage就出现在了arch/arm/boot/中了。

$ make && make zImage

交叉编译iptables

      Iptables是用户态提供的更改过滤规则的便捷工具,通过使用这个工具,可以方便的改变内核下netfilter的默认规则,也可以根据自己的需求添加自定的规则。

      1. 到netfilter官方网站(http://www.netfilter.org/)下载iptables(http://www.netfilter.org/projects/iptables/downloads.html)最新源码并解压,编译方法具体可以参考iptables目录下的INSTALL文件;

      2. 首先一定要确保当前终端下能识别出arm-linux-gcc命令,接着在/opt目录下创建iptables目录,在终端下切换到iptables代码树。运行./configure --prefix=/opt/iptables --host=arm-linux配置以生成Makefile文件。

  1. cd /opt/iptables-1.4.18/
  2. ./configure --prefix=/opt/iptables --host=arm-linux
  3. make KERNEL_DIR=/home/zhangmin/work/my6410Kernel/linux-2.6.38
  4. make NO.SHARED_LIBS=1
  5. make
  6. make install

其中:

       make KERNEL_DIR=/usr/src/linux(指定内核目录)

       make NO.SHARED_LIBS=1(静态链接编译生成可执行文件)

进入/opt/iptables/查看生成的文件:

  1. $tree /opt/iptables
  2. /opt/iptables
  3. |-- bin
  4. | `-- iptables-xml -> /opt/iptables/sbin/xtables-multi
  5. |-- include
  6. | |-- libiptc
  7. | | |-- ipt_kernel_headers.h
  8. | | |-- libip6tc.h
  9. | | |-- libiptc.h
  10. | | |-- libxtc.h
  11. | | `-- xtcshared.h
  12. | |-- xtables.h
  13. | `-- xtables-version.h
  14. |-- lib
  15. | |-- libip4tc.la
  16. | |-- libip4tc.so -> libip4tc.so.0.1.0
  17. | |-- libip4tc.so.0 -> libip4tc.so.0.1.0
  18. | |-- libip4tc.so.0.1.0
  19. | |-- libip6tc.la
  20. | |-- libip6tc.so -> libip6tc.so.0.1.0
  21. | |-- libip6tc.so.0 -> libip6tc.so.0.1.0
  22. | |-- libip6tc.so.0.1.0
  23. | |-- libiptc.la
  24. | |-- libiptc.so -> libiptc.so.0.0.0
  25. | |-- libiptc.so.0 -> libiptc.so.0.0.0
  26. | |-- libiptc.so.0.0.0
  27. | |-- libxtables.la
  28. | |-- libxtables.so -> libxtables.so.10.0.0
  29. | |-- libxtables.so.10 -> libxtables.so.10.0.0
  30. | |-- libxtables.so.10.0.0
  31. | |-- pkgconfig
  32. | | |-- libip4tc.pc
  33. | | |-- libip6tc.pc
  34. | | |-- libiptc.pc
  35. | | `-- xtables.pc
  36. | `-- xtables
  37. | |-- libip6t_ah.so
  38. | |-- libip6t_DNAT.so
  39. | |-- libip6t_DNPT.so
  40. | |-- libip6t_dst.so
  41. | |-- libip6t_eui64.so
  42. | |-- libip6t_frag.so
  43. | |-- libip6t_hbh.so
  44. | |-- libip6t_hl.so
  45. | |-- libip6t_HL.so
  46. | |-- libip6t_icmp6.so
  47. | |-- libip6t_ipv6header.so
  48. | |-- libip6t_LOG.so
  49. | |-- libip6t_MASQUERADE.so
  50. | |-- libip6t_mh.so
  51. | |-- libip6t_NETMAP.so
  52. | |-- libip6t_REDIRECT.so
  53. | |-- libip6t_REJECT.so
  54. | |-- libip6t_rt.so
  55. | |-- libip6t_SNAT.so
  56. | |-- libip6t_SNPT.so
  57. | |-- libipt_ah.so
  58. | |-- libipt_CLUSTERIP.so
  59. | |-- libipt_DNAT.so
  60. | |-- libipt_ECN.so
  61. | |-- libipt_icmp.so
  62. | |-- libipt_LOG.so
  63. | |-- libipt_MASQUERADE.so
  64. | |-- libipt_MIRROR.so
  65. | |-- libipt_NETMAP.so
  66. | |-- libipt_realm.so
  67. | |-- libipt_REDIRECT.so
  68. | |-- libipt_REJECT.so
  69. | |-- libipt_SAME.so
  70. | |-- libipt_SNAT.so
  71. | |-- libipt_ttl.so
  72. | |-- libipt_TTL.so
  73. | |-- libipt_ULOG.so
  74. | |-- libipt_unclean.so
  75. | |-- libxt_addrtype.so
  76. | |-- libxt_AUDIT.so
  77. | |-- libxt_CHECKSUM.so
  78. | |-- libxt_CLASSIFY.so
  79. | |-- libxt_cluster.so
  80. | |-- libxt_comment.so
  81. | |-- libxt_connbytes.so
  82. | |-- libxt_connlimit.so
  83. | |-- libxt_connmark.so
  84. | |-- libxt_CONNMARK.so
  85. | |-- libxt_CONNSECMARK.so
  86. | |-- libxt_conntrack.so
  87. | |-- libxt_cpu.so
  88. | |-- libxt_CT.so
  89. | |-- libxt_dccp.so
  90. | |-- libxt_devgroup.so
  91. | |-- libxt_dscp.so
  92. | |-- libxt_DSCP.so
  93. | |-- libxt_ecn.so
  94. | |-- libxt_esp.so
  95. | |-- libxt_hashlimit.so
  96. | |-- libxt_helper.so
  97. | |-- libxt_HMARK.so
  98. | |-- libxt_IDLETIMER.so
  99. | |-- libxt_iprange.so
  100. | |-- libxt_ipvs.so
  101. | |-- libxt_LED.so
  102. | |-- libxt_length.so
  103. | |-- libxt_limit.so
  104. | |-- libxt_mac.so
  105. | |-- libxt_mark.so
  106. | |-- libxt_MARK.so
  107. | |-- libxt_multiport.so
  108. | |-- libxt_nfacct.so
  109. | |-- libxt_NFLOG.so
  110. | |-- libxt_NFQUEUE.so
  111. | |-- libxt_NOTRACK.so
  112. | |-- libxt_osf.so
  113. | |-- libxt_owner.so
  114. | |-- libxt_physdev.so
  115. | |-- libxt_pkttype.so
  116. | |-- libxt_policy.so
  117. | |-- libxt_quota.so
  118. | |-- libxt_rateest.so
  119. | |-- libxt_RATEEST.so
  120. | |-- libxt_recent.so
  121. | |-- libxt_rpfilter.so
  122. | |-- libxt_sctp.so
  123. | |-- libxt_SECMARK.so
  124. | |-- libxt_set.so
  125. | |-- libxt_SET.so
  126. | |-- libxt_socket.so
  127. | |-- libxt_standard.so
  128. | |-- libxt_state.so
  129. | |-- libxt_statistic.so
  130. | |-- libxt_string.so
  131. | |-- libxt_tcpmss.so
  132. | |-- libxt_TCPMSS.so
  133. | |-- libxt_TCPOPTSTRIP.so
  134. | |-- libxt_tcp.so
  135. | |-- libxt_TEE.so
  136. | |-- libxt_time.so
  137. | |-- libxt_tos.so
  138. | |-- libxt_TOS.so
  139. | |-- libxt_TPROXY.so
  140. | |-- libxt_TRACE.so
  141. | |-- libxt_u32.so
  142. | `-- libxt_udp.so
  143. |-- sbin
  144. | |-- ip6tables -> xtables-multi
  145. | |-- ip6tables-restore -> xtables-multi
  146. | |-- ip6tables-save -> xtables-multi
  147. | |-- iptables -> xtables-multi
  148. | |-- iptables-restore -> xtables-multi
  149. | |-- iptables-save -> xtables-multi
  150. | `-- xtables-multi
  151. `-- share
  152. `-- man
  153. |-- man1
  154. | `-- iptables-xml.1
  155. `-- man8
  156. |-- ip6tables.8
  157. |-- ip6tables-restore.8
  158. |-- ip6tables-save.8
  159. |-- iptables.8
  160. |-- iptables-extensions.8
  161. |-- iptables-restore.8
  162. `-- iptables-save.8

三 移植到min6410开发板

     本人的mini6410环境已搭建起来,即使将带有Netfilter/iptables功能的内核烧写后文件系统中也没有找到iptables命令,必须得移植。

     将交叉编译好的/opt/iptables整个目录拷贝到文件系统中(或者通过NFS导入到文件系统中)

cp -R /nfsfile/iptables /opt/

再来使用iptables看能否使用:

  1. $/opt/iptables/sbin/iptables -t filter -L
  2.  Chain INPUT (policy ACCEPT)                                                     
  3. target     prot opt source               destination                            
  4.                                                                                 
  5. Chain FORWARD (policy ACCEPT)                                                   
  6. target     prot opt source               destination                            
  7.                                                                                 
  8. Chain OUTPUT (policy ACCEPT)                                                    
  9. target     prot opt source               destination    

     可以看到iptables命令已经可以使用,至此 Netfilter/iptables 移植完成!


参考资料:

http://blog.csdn.net/shuxiao9058/article/details/6923517


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/844988
推荐阅读
相关标签
  

闽ICP备14008679号