【relap源码】【同城约战源码】【fulao2源码】iptables 源码安装

时间:2024-12-23 05:37:39 分类:java源码与解释 来源:学琴屋app源码

1.Linux下针对路由功能配置iptables的源码方法详解
2.iptables防火墙服务
3.go-iptables功能与源码详解
4.CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享
5.给openwrt18.06增加石像鬼QOS支持
6.netfilter/iptables模块编译及应用

iptables 源码安装

Linux下针对路由功能配置iptables的方法详解

       作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、安装dns缓存、源码流量控制、安装应用程序控制,源码nat地址转换通过iptables可以直 接实现,安装relap源码dhcp服务需要安装dhcpd,源码dns缓存功能需要使用bind,安装流量控制可以使用tc,源码应用程序控制:例如对qq的安装封锁可以使用 netfilter-layer7-v2.+-protocols---.tar.gz来实现

       1、网络规划

        操作系统是源码centos5.8

       2、安装dhcpd

       代码如下:

       yum install dhcp-3.0.5-.el5

       vim /etc/dhcp/dhcpd.conf

       ddns-update-style interim;

       ignore client-updates;

       subnet .0.0.0 netmask ...0 {

       option routers .0.0.1;

       option subnet-mask ...0;

       option domain-name-servers .0.0.1;

       range dynamic-bootp .0.0. .0.0.;

       default-lease-time ;

       max-lease-time ;

       }

        3、安装同城约战源码安装bind,源码实现dns缓存

       代码如下:

       yum install bind.i bind-libs.i bind-utils.i

       vim /etc/named.conf

       options {

       directory "/var/named";

       allow-recursion { .0.0.0/; };

       recursion yes;

       forward first; #将所有请求都进行转发

       forwarders { ...; }; #定义转发服务器地址

       };

       zone "." IN {

       type hint;

       file "named.ca";

       };

       zone "localhost" IN {

       type master;

       file "named.localhost";

       allow-transfer { none; };

       };

       zone "0.0..in-addr.arpa" IN {

       type master;

       file "named.loopback";

       allow-transfer { none; };

       };

       创建根域文件,安装默认有

       代码如下:

       dig -t NS . /var/named/named.ca

       chown :named /var/named/named.ca

       创建本地正向解析文件,源码默认有

       代码如下:

       vim /var/named/named.localhost

       $TTL 1D

       @ IN SOA @ rname.invalid. (

       0 ; serial

       1D ; refresh

       1H ; retry

       1W ; expire

       3H ) ; minimum

       NS @

       A .0.0.1

       chown :named /var/named/named.localhost

       创建本地反向解析文件,默认有

       代码如下:

       vim /var/named/named.loopback

       $TTL 1D

       @ IN SOA @ rname.invalid. (

       0 ; serial

       1D ; refresh

       1H ; retry

       1W ; expire

       3H ) ; minimum

       NS @

       A .0.0.1

       PTR localhost.

       chown :named /var/named/named.loopback

       检查主配置文件

       代码如下:

       named-checkconf

       检查根区域配置文件

       代码如下:

       named-checkzone “.” /var/named/named.ca

       检查区域文件

       代码如下:

       named-checkzone “localhost” /var/named/named.localhost

       启动服务

       代码如下:

       service named start

       4、重新编译编译内核和iptables以支持应用层过滤

       由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,fulao2源码最后再安装应用程序过滤特征码库-protocols--.tar.gz

       1、给内核打补丁,并重新编译内核

       2、给iptables源码打补丁,并重新编译iptables

       3、安装proto

       备份iptables脚本和配置文件

       代码如下:

       cp /etc/rc.d/init.d/iptables /root/iptables.sysv

       cp /etc/sysconfig/iptables-config /root/iptables-config

       2.6内核下载地址

       .php.net/distributions/php-5.3..tar.gz

           5、下载cmake(MySQL编译工具)

           f /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

           vi /etc/my.cnf #编辑配置文件,在 [mysqld] 部分增加

           datadir = /data/mysql #添加MySQL数据库路径

           ./scripts/mysql_install_db --user=mysql #生成mysql系统数据库

           cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动

           chmod /etc/init.d/mysqld #增加执行权限

           chkconfig mysqld on #加入开机启动

           vi /etc/rc.d/init.d/mysqld #编辑

           basedir = /usr/local/mysql #MySQL程序安装路径

           datadir = /data/mysql #MySQl数据库存放目录

           service mysqld start #启动

           vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行

           export PATH=$PATH:/usr/local/mysql/bin

           下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

           ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

           ln -s /usr/local/mysql/include/mysql /usr/include/mysql

           shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作

           mysql_secure_installation #设置Mysql密码

           根据提示按Y 回车输入2次密码

           或者直接修改密码/usr/local/mysql/bin/mysqladmin -u root -p password "" #修改密码

           service mysqld restart #重启

           到此,qq自助下单源码mysql安装完成!

           五、安装 nginx

           groupadd www #添加www组

           useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统cd /usr/local/src

           tar zxvf nginx-1.0..tar.gz

           cd nginx-1.0.

           ./configure --prefix=/usr/local/nginx --user=www --group=www --with-tl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl #配置

           make #编译

           make install #安装

           cp php.ini-production /usr/local/php5/etc/php.ini #复制php配置文件到安装目录

           rm -rf /etc/php.ini #删除系统自带配置文件

           ln -s /usr/local/php5/etc/php.ini /etc/php.ini #添加软链接

           cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

           vi /usr/local/php5/etc/php-fpm.conf #编辑

           user = www #设置php-fpm运行账号为www

           group = www #设置php-fpm运行组为www

           pid = run/php-fpm.pid #取消前面的分号

           设置 php-fpm开机启动

           cp /usr/local/src/php-5.3./sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录

           chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限

           chkconfig php-fpm on #设置开机启动

           vi /usr/local/php5/etc/php.ini #编辑配置文件

           找到:;open_basedir =

           修改为:open_basedir = .:/tmp/ #防止php木马跨站,重要!!

           找到:disable_functions =

           修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

           #列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

           找到:;date.timezone =

           修改为:date.timezone = PRC #设置时区

           找到:expose_php = On

           修改为:expose_php = OFF #禁止显示php版本的go源码阅读推荐信息

           找到:display_errors = On

           修改为:display_errors = OFF #关闭错误提示

           七、配置nginx支持php

           vi /usr/local/nginx/conf/nginx.conf

           修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改

           user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错

           index index.php index.html index.htm; #添加index.php

           # pass the PHP scripts to FastCGI server listening on .0.0.1:

           #

           location ~ /.php$ {

           root html;

           fastcgi_pass .0.0.1:;

           fastcgi_index index.php;

           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

           include fastcgi_params;

           }

           #取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

           /etc/init.d/nginx restart #重启nginx

           八、配置php支持Zend Guard

           安装Zend Guard

           cd /usr/local/src

           mkdir /usr/local/zend #建立Zend安装目录

           tar xvfz ZendGuardLoader-php-5.3-linux-glibc-i.tar.gz #解压安装文件

           cp ZendGuardLoader-php-5.3-linux-glibc-i/php-5.3.x/ZendGuardLoader.so /usr/local/zend/ #拷贝文件到安装目录

           vi /usr/local/php5/etc/php.ini #编辑文件

           在最后位置添加以下内容

           [Zend Guard]

           zend_extension=/usr/local/zend/ZendGuardLoader.so

           zend_loader.enable=1

           zend_loader.disable_licensing=0

           zend_loader.obfuscation_level_support=3

           zend_loader.license_path=

           测试篇

           cd /usr/local/nginx/html/ #进入nginx默认网站根目录

           rm -rf /usr/local/nginx/html/* #删除默认测试页

           vi index.php #新建index.php文件

           ?php

           phpinfo();

           ?

           :wq! #保存

           chown www.www /usr/local/nginx/html/ -R #设置目录所有者

           chmod /usr/local/nginx/html/ -R #设置目录权限

           shutdown -r now #重启

           在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!

           service nginx restart #重启nginx

           service mysqld restart #重启mysql

           /usr/local/php5/sbin/php-fpm #启动php-fpm

           /etc/rc.d/init.d/php-fpm restart #重启php-fpm

           /etc/rc.d/init.d/php-fpm stop #停止php-fpm

           /etc/rc.d/init.d/php-fpm start #启动php-fpm

           #############################################################################

           备注:

           nginx默认站点目录是:/usr/local/nginx/html/

           权限设置:chown www.www /usr/local/nginx/html/ -R

           MySQL数据库目录是:/data/mysql

           权限设置:chown mysql.mysql -R /data/mysql

           到此,CentOS 6.2下 Nginx1.0.+MySQL5.5.+PHP5.3.+Zend Guard Loader基本运行环境搭建完成!

给openwrt.增加石像鬼QOS支持

       石像鬼(Gargoyle)固件以其出色的QoS性能,备受推崇。在迅雷满速下载的同时,网页可以实现秒开,游戏(如LOL)流畅不卡顿。这主要得益于石像鬼组件提供的强大功能。不单是QoS,单IP精确限速等特性,也离不开石像鬼的支持。例如,QOSV4和Emong's QoS等,皆基于石像鬼QoS实现。

       对于想要自己编译带有石像鬼QoS支持的固件的用户,以下是如何在最新版本的OpenWRT中实现移植步骤:

       首先,获取源代码。

       之后,操作如下:

       1. 添加imq补丁:复制-netfilter-mk.patch和-netfilter-mk.patch文件至/source目录。进入源码目录并执行命令:patch -p1 < -imq.patch 和 patch -p1 < -imq.patch。

       2. 替换默认的iptables,删除OpenWRT .自带的iptables,将新版本的iptables文件放入。

       3. 将gargoyle-package目录复制到/source/package目录内。

       4. 复制-imq.patch到/source/target/linux/generic/pending-4.目录。

       5. 在gargoyle-package/gargoyle/qos-gargoyle/files内替换qos_gargoyle.conf文件为qos_gargoyle。

       值得注意的是,offload和qos_gargoyle配置存在冲突,因此在实际应用中,只能选择其一。

netfilter/iptables模块编译及应用

       by KindGeorge # yahoo.com .4.2 at ChinaUnix.net

       相信很多人都会用iptables,我也一直用,并且天天用.特别是看完platinum的如何给iptables添加新的模块;;介绍后,觉得有必要深入了解一下它的拓展功能.于是立刻下载,先查看一下它的说明, 其功能很是令人感觉很兴奋,例如:comment (备注匹配) ,string(字符串匹配,可以用做内容过滤),iprang(ip范围匹配),time(时间匹配),ipp2p(点对点匹配),connlimit(同时连接个数匹配),Nth(第n个包匹配),geoip(根据国家地区匹配). ipp2p(点对点匹配), quota(配额匹配),还有很多......之后编译,几经测试,在rh7.3 kernel2.4.-3和rh9.0 kernel2.4.-8下均成功实现添加扩展功能.以下是介绍其部分功能,及编译方法.环境rh9.0 kernel2.4.-8. root身份.

       一,准备原码.

       1. 内核原码:为了减少复杂性,不编译所有内核和模块,建议找一个跟当前版本一样的内核原码,推荐安装时光盘的

       a. [root@kindgeorge] uname -r (查看当前版本)

       2.4.-8

       可以cd /usr/src 查看是否有这个目录2.4.-8

       b. 或者[root@kindgeorge]rpm -qa|grep kernel

        kernel-source-2.4.-8 如果有这个说明已安装了.

       如果没有安装,可以在RH第二张光盘中拷贝过来或安装 rpm -ivh kernel-source-2.4.-3.i.rpm. 安装后会在/usr/src/出现linux-2.4连接和linux-2.4.-8目录.

        c.在下载一个和当前版本的内核原码.

       2. 先获取最新的信息,当然要到piled for kernel version 2.4.-8custom

        while this kernel is version 2.4.-8.

       /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed

       /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed

       3. [root@kindgeorge linux-2.4]# make mrproper

       4. [root@kindgeorge linux-2.4]# make oldconfig

       'make oldconfig' - 采用以前的 .config 文件 (编译时十分有用)

       技巧:在make menuconfig时,我们面对众多的选项常常不知道该如何选择,此时可以把安装时的配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig编译,它会读取.config中原来的配置信息.

       (二).给netfilter打补丁

       解开tar xjvf patch-o-matic-ng-.tar.bz2 包后,进入该目录,就会发现有很多目录,其实每个目录对应一个模块.

       我们可以这样来选择,根据不同贮仓库submitted|pending|base|extra,例如:

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base .

       或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme extra

       执行后,会测试是否已经应用和提示你是否应用该模块,但这样会遍历所有模块,有很多是用不着的,并且可能和系统版本有冲突,如果不管三七二十一全部选择的话,一般都会在编译和使用时出错.所以推荐用cat /模块目录名/info 和cat /模块目录名/help 看过后,认为适合自己,才选择.

       我是针对在上面看过后,有目的的一个一个的应用的,这样做:

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string

       执行后,会测试是否已经应用和提示你是否应用该模块,按"y"应用.然后继续下一个

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme comment

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme connlimit

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme time

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme iprange

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme geoip

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme nth

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme ipp2p

       KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme quota

       上面全部完成后,

       cd /usr/src/linux-2.4

       make menuconfig,确认

       Prompt for development and/or incomplete code/drivers要选中

       然后进入Networking options

       再进入IP:Netfilter Configuration,会看到增加很多模块,每个新增的后面都会出现"NEW",把其想要的选中为模块"M"

       保存、退出,至此,给netfilter打补丁工作完成

       (三).编译netfilter模块

       1.这里只需要编译netfilter,不需要编译整个内核和模块.这里我只需要ipv4的,ipv6我还没用到,所以不管了

       cd /usr/src/linux-2.4

       make dep

       make modules SUBDIRS=net/ipv4/netfilter

       2.建立一个新目录备份原来模块,以防万一:

       mkdir /usr/src/netfilter

       cp /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/*.o /usr/src/netfilter/

       3.应用新的模块

       cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/

       4.更新你的modules.dep

       depmod -a

       当出现这个时,可以不用理会,因为ipchains, ipfwadm模块都没用,也可以把出错的删除.

       depmod: *** Unresolved symbols in /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipchains_core.o

       depmod: *** Unresolved symbols in /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipfwadm_core.o

       (四).编译安装新的iptables

       解压后有目录iptables-1.3.1

       cd /usr/src/iptables-1.3.1

       export KERNEL_DIR=/usr/src/linux-2.4

       export IPTABLES_DIR=/usr/src/iptables-1.3.1

       make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

       三.安装完成,测试及应用

       1.内容过滤

       iptables -I FORWARD -m string --string "腾讯" -j DROP

       iptables -I FORWARD -s ..3. -m string --string "qq.com" -j DROP

       iptables -I FORWARD -d ..3.0/ -m string --string "宽频影院" -j DROP

       iptables -I FORWARD -s ..3.0/ -m string --string "色情" -j DROP

       iptables -I FORWARD -p tcp --sport -m string --string "广告" -j DROP

       2.备注应用

       iptables -I FORWARD -s ..3. -p tcp --dport -j DROP -m comment --comment "the bad guy can not online"

       iptables -I FORWARD -s ..3. -m string --string "qq.com" -j DROP -m comment --comment "denny go to qq.com"

       3.并发连接应用

       模块 connlimit 作用:连接限制

       --connlimit-above n 限制为多少个

       --connlimit-mask n 这组主机的掩码,默认是connlimit-mask ,即每ip.

       这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数...比较实用

       例如:只允许每个ip同时5个端口转发,超过的丢弃:

       iptables -I FORWARD -p tcp --syn --dport -m connlimit --connlimit-above 5 -j DROP

       例如:只允许每组ip同时个端口转发:

       iptables -I FORWARD -p tcp --syn --dport -m connlimit --connlimit-above --connlimit-mask -j DROP

       例如:为了防止DOS太多连接进来,那么可以允许最多个初始连接,超过的丢弃.

       /sbin/iptables -A INPUT -s ..1.0/ -p tcp --syn -m connlimit --connlimit-above -j DROP

       /sbin/iptables -A INPUT -s ..1.0/ -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

       4.ip范围应用

       iptables -A FORWARD -m iprange --src-range ..1.5-..1. -j ACCEPT

       5.每隔N个匹配

       iptables -t mangle -A PREROUTING -m nth --every -j DROP

       6.封杀BT类P2P软件

       iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP

       iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP

       iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP

       7.配额匹配

       iptables -I FORWARD -s ..3. -p tcp --dport -m quota --quota -j DROP

       iptables -I FORWARD -s ..3. -p tcp --dport -m quota --quota -j ACCEPT

       以上均测试通过,只有geoip的geoipdb.bin没下载到,所以没测试

       在此仅为抛个砖头,更多的应用,要根据自己的需要来组合各个规则和模块了.

       本来此篇文章和netfilter/iptables模块功能中文介绍;;是写在一起的,由于篇幅太长,所以份成两篇. 如果有更新请见我的blog: /article.php?articleId=blogId=

       /forum/viewtopic.php?t= netfilter/iptables模块功能中文介绍

       platinum的 /forum/viewtopic.php?t= 如何给iptables添加新的模块v2.2(含视频教程)

       hongfengyue的 /jh/4/.html iptables 添加模块 (for kernel 2.6)

       官方: filter.org/documentation/HOWTO/netfilter-extensions-HOWTO.html

配制snort的时候这个报错怎么解决

       您好,是这样的:

       1、安装一下libdnet试试看

       2、编译snort的时候man看看是否有类似--with-libdnet之类的参数,这个报错就是找不到libdnet,

       如果是位系统的话find找一下,注意/lib和/lib这两个lib库是否都有libdnet。

       3、Snort 是一个开源的轻量级入侵监测系统,可以监测网络上的异常情况,给出报告;

        安装新版本的iptables软件

        可以到

       filter.org

        的网站下载最新版本的iptables源代码,目前最新的版本是1.2.9。

        从网站上下载的源代码是“tar.bz2”格式的,编译源代码的第一步工作是解压缩,命令如下:

        #/bin/tar xjvf iptables-1.2.9.tar.bz2

        解压缩后,进入源代码的安装目录,开始编译:

        # make install-devel KERNEL_DIR=/usr/include/linux/

        如果一切正常,那么iptables应该编译好了,接下来可以进行安装了,安装命令非常简单:

        #make install KERNEL_DIR=/usr/include/linux/

        #setup->firewall configure->enable

        #vi /etc/sysconfig/iptables ;add ssh (tcp port ).etc...

        service iptables start

        chkconfig --level iptables start