centos下iptables實現上網和存取控制

來源:互聯網
上載者:User

作為公司上網的路由器需要實現的功能有nat地址轉換、dhcp、dns緩衝、流量控制、應用程式控制,nat地址轉換通過iptables可以直 接實現,dhcp服務需要安裝dhcpd,dns緩衝功能需要使用bind,流量控制可以使用tc,應用程式控制:例如對qq的封鎖可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz來實現

1、網路規劃

2、安裝dhcpd

yum install dhcp-3.0.5-31.el5
vim /etc/dhcp/dhcpd.conf
ddns-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;
}



3、安裝bind,實現dns緩衝

yum install bind97.i386  bind97-libs.i386 bind97-utils.i386
vim /etc/named.conf
options {
 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.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      127.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       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源碼打補丁,並重新編譯iptables
3、安裝17proto

備份iptables指令碼和設定檔

cp /etc/rc.d/init.d/iptables /root/iptables.sysv
cp /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.xz
tar -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

 

#進入解壓目錄並建立軟串連

cd /usr/src
ln -sv linux-2.6.28.10 linux

#進入核心目錄

cd /usr/src/linux

#為當前核心打補丁

patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.path

#為了方便編譯核心將系統上的核心設定檔複製過來

cp /boot/config-2.6.18-164.el5 /usr/src/linux/.config

編譯核心

make menuconfig
Networking 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 support
Networking 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)

make
make modules_install
make 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/src
cd /usr/src/iptables-1.4.6
cd iptables-1.4.3forward-for-kernel-2.6.20forward
cp * /usr/src/iptables-1.4.6/extensions/
cd /usr/src/iptables-1.4.6/
./configure --prefix=/usr --with-ksource=/usr/src/linux
make
make install

查看安裝後的iptables的檔案

ls /usr/sbin |grep iptables
ls /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.gz
make 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.67
iptables -A FORWARD -m layer7 --l7proto qq -j DROP
iptables -A FORWARD -m layer7 --l7proto httpvideo -j DROP
iptables -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 分配分配的最大下載頻寬是200KB
A使用者ip:10.0.0.100
B使用者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 2
tc class add dev eth0 parent 1:0 classid 1:3 htb rate 500kbps ceil 500kbps prio 2

#將兩個類的預設的fifq隊列規則改為sfq

tc qdisc add dev eth0 parent 1:2 handle 20 sfq
tc 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:2
tc 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:3
tc 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.