也想出现在这里? 联系我们

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

作者 : 小编 本文共5988个字,预计阅读时间需要15分钟 发布时间: 2022-10-30 共1.84K人阅读
也想出现在这里? 联系我们

作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、dns缓存、流量控制、应用程序控制,nat地址转换通过iptables可以直 接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz来实现1、网络规划20151222113716570.png (814×275)

操作系统是centos5.82、安装dhcpd

复制代码

代码如下:

yum install dhcp-3.0.5-31.el5vim /etc/dhcp/dhcpd.confddns-update-style interim;ignore client-updates;subnet 10.0.0.0 netmask 255.255.255.0 { option routers 10.0.0.1; option subnet-mask 255.255.255.0; option domain-name-servers 10.0.0.1; range dynamic-bootp 10.0.0.100 10.0.0.200; default-lease-time 21600; max-lease-time 43200;}

20151222113735955.png (837×146)

3、安装bind,实现dns缓存

复制代码

代码如下:

yum install bind97.i386 bind97-libs.i386 bind97-utils.i386vim /etc/named.confoptions { directory \”/var/named\”; allow-recursion { 10.0.0.0/24; }; recursion yes; forward first; #将所有请求都进行转发 forwarders { 114.114.114.114; }; #定义转发服务器地址};zone \”.\” IN { type hint; file \”named.ca\”;};zone \”localhost\” IN { type master; file \”named.localhost\”; allow-transfer { none; };};zone \”0.0.127.in-addr.arpa\” IN { type master; file \”named.loopback\”; allow-transfer { none; };};

创建根域文件,默认有

复制代码

代码如下:

dig -t NS . > /var/named/named.cachown :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 127.0.0.1chown :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 127.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.22作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库17-protocols-2009-05028.tar.gz

1、给内核打补丁,并重新编译内核2、给iptables源码打补丁,并重新编译iptables3、安装17proto

备份iptables脚本和配置文件

复制代码

代码如下:

cp /etc/rc.d/init.d/iptables /root/iptables.sysvcp /etc/sysconfig/iptables-config /root/iptables-config

2.6内核下载地址

https://www.kernel.org/pub/linux/kernel/v2.6/

netfilter下载地址

http://download.clearfoundation.com/l7-filter/

iptables源码下载地址

http://www.netfilter.org/projects/iptables/downloads.html

应用程序特征码库下载地址

http://download.clearfoundation.com/l7-filter/

复制代码

代码如下:

xz -d linux-2.6.28.10.tar.xztar -xvf linux-2.6.28.10.tar.gz -C /usr/src #新的内核源码,用于重新编译tar -zxvf netfilter-layer7-v2.22.tar.gz -C /usr/src #内核补丁和iptables补丁 ,只支持到2.6.28#进入解压目录并创建软连接</p>
<p>cd /usr/srcln -sv linux-2.6.28.10 linux#进入内核目录</p>
<p>cd /usr/src/linux#为当前内核打补丁</p>
<p>patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.path#为了方便编译内核将系统上的内核配置文件复制过来</p>
<p>cp /boot/config-2.6.18-164.el5 /usr/src/linux/.config

编译内核

复制代码

代码如下:

make menuconfigNetworking support -> Networking Options -> Network packet filtering framework -> Core Netfilter Configuration<M> Netfilter connection tracking support<M> \”lawyer7\” match support<M> \”string\” match support<M> \”time\” match support<M> \”iprange\” match support<M> \”connlimit\” match support<M> \”state\” match support<M> \”conntrack\” connection match support<M> \”mac\” address match support<M> \”multiport\” Multiple port match supportNetworking support -> Networign options -> Network packet filtering framework -> IP:Netfiltr Configuration<M> IPv4 connection tracking support (required for NAT)<M> Full NAT<M> MASQUERADE target support<M> NETMAP target support<M> REDIRECT target support

在Networking support中选择 Networking options

查找Network packet filtering framework(Netfilter)–>Core Netfiler Configrationg–>Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”

查找IP:Netfilter Configuration–>IPv4 connection tracking support,Full NAT(NEW)

复制代码

代码如下:

makemake modules_installmake install

重启操作系统选择新内核登录

卸载旧的iptables

复制代码

代码如下:

rpm -e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5 –nodeps

安装新的iptables,以支持新的netfiler模块

复制代码

代码如下:

tar -jsvf iptables-1.4.6.tar.bz2 -C /usr/srccd /usr/src/netfilter-layer7-v2.23cd iptables-1.4.3forward-for-kernel-2.6.20forwardcp * /usr/src/iptables-1.4.6/extensions/cd /usr/src/iptables-1.4.6/./configure –prefix=/usr –with-ksource=/usr/src/linuxmakemake install

查看安装后的iptables的文件

复制代码

代码如下:

ls /usr/sbin |grep iptablesls /usr/libexec/xtables

复制之前备份的配置文件和脚本

复制代码

代码如下:

cp /root/iptables-config /etc/sysconfig/cp /root/iptables.sysv /etc/rc.d/init.d/iptables

修改脚本中iptables的路径

复制代码

代码如下:

vim /etc/rc.d/init.d/iptables:.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g

让iptables服务开机自动启动

复制代码

代码如下:

chkconfig –add iptables

修改iptables 配置文件将/etc/sysconfig/iptables-config中的IPTABLES_MODULES=”ip_conntrack_netbios_ns” 注释掉

安装协议特征码

复制代码

代码如下:

tar xvf 17-protocols-2009-05028.tar.gzmake install

完成后在/etc/l7-protocols会生成文件支持的协议/etc/l7-protocols/protocols

添加iptables策略,运行内部网络上网,禁止qq和视频

复制代码

代码如下:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT –to-soure 192.168.6.67iptables -A FORWARD -m layer7 –l7proto qq -j DROPiptables -A FORWARD -m layer7 –l7proto httpvideo -j DROPiptables -A FORWARD -m layer7 –l7proto httpaudio -j DROP

指定8点到12点无法上网

复制代码

代码如下:

iptables -A FORWARD -m time –timestart 08:00 –timestop 12:00 -j DROP

5、使用tc控制带宽例如公司出口带宽是10Mbps,个用户A分配500KB的最大下载带宽,给用户B 分配分配的最大下载带宽是200KBA用户ip:10.0.0.100B用户ip:10.0.0.101

复制代码

代码如下:

#在eth0网卡上创建一个根队列规则,队列规则的算法使用htb,default 2表示指定一个默认类别编号,默认的流量控制策略,如果ip没有在后面的filter中被匹配到就都是有这个策略tc qdisc add dev eth0 root handle 1:0 htb default 2#在eth0网卡上定义一个类,prant 1:0中的1对应根队列规则中的handle 1:0,classid 1:2表示当前这个类的标识,用于应用在后面的得到filter中,rate 200kbsp表示带宽为200KB/s,ceil 200kbps表示最大带宽也为200KB/s,prio 2是优先级tc class add dev eth0 parent 1:0 classid 1:2 htb rate 200kbps ceil 200kbps prio 2tc class add dev eth0 parent 1:0 classid 1:3 htb rate 500kbps ceil 500kbps prio 2#将两个类的默认的fifq队列规则改为sfqtc qdisc add dev eth0 parent 1:2 handle 20 sfqtc qdisc add dev eth0 parent 1:3 handle 30 sfq#在网卡eth0上的1:0节点(对应qdisc中的handle 1:0)添加一个u32过滤规则,优先级为1,凡是目标地址是10.0.0.100的数据包都使用1:2类(对应classid为1:2的类)tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.100 flowid 1:2tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.101 flowid 1:3

如果还有其他用户例如用户C和D的ip是102、103,要求的下载带宽也要求500那么在加入

复制代码

代码如下:

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.102 flowid 1:3tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.103 flowid 1:3

清除eth0上的规则

复制代码

代码如下:

tc qdisc del dev eth1 root> /dev/null

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » Linux下针对路由功能配置iptables的方法详解

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录