echo "pass in proto gre from any to any keep state" >> /etc/ipf.rules
echo "pass out proto gre from any to any keep state" >> /etc/ipf.rules
echo "pass in on "$ADSLDEV" all" >> /etc/ipf.rules
echo "pass out on "$ADSLDEV" all" >> /etc/ipf.rules
【Ipf ipnat ipfw建立帶流量控制的透明網(wǎng)關(guān)】/sbin/ipf -Fa -f /etc/ipf.rules
/sbin/ipnat -CF -f /etc/ipnat.rules
##END IPF.SH###########
(d):因?yàn)槲覀儾捎玫氖莗ppoe撥號,有斷線重?fù)艿目赡?。因此有不斷監(jiān)視和更新ipf、ipnat規(guī)則的需要
(我們前面已經(jīng)在rc.conf里面設(shè)置ppp斷線重?fù)芰?,重播以后tun0得到的ip會改變) 。
因此我們在crontab的root文件里面加上一條規(guī)則,使ipf.sh能每隔一段時間(3-5min)自動執(zhí)行一次 。
(e):然后就是啟用ipfw來進(jìn)行流量管理了 。干脆寫一個腳本來進(jìn)行了事了 。示例腳本如下:
#!/bin/sh
#load ipfw in ipf env
#by fzfh
/sbin/kldload /boot/kernel/dummynet.ko
#加載ipfw和dummynet模塊,默認(rèn)deny all
/sbin/ipfw -f flush
#清空所有ipfw規(guī)則
/sbin/ipfw add 00050 pipe 1 all from any to ip
/sbin/ipfw pipe 1 config bw 400Kbit/s
#限制任意地址到ip的總流量不超過400Kbit/s
/sbin/ipfw add 00060 pipe 2 all from ip to any
/sbin/ipfw pipe 2 config bw 400Kbit/s
#限制ip到任意地址的總流量不超過400Kbit/s
/sbin/ipfw add 100 all from any to any
#任意連接通過
然后把ipfw.sh加上可執(zhí)行屬性,放到ipf.sh同一個目錄里面在開機(jī)時自動執(zhí)行即可 。(/usr/local/etc/rc.d)
注意:加載ipfw模塊以后會馬上生效,默認(rèn)是deny all,位置在65535 。
因此,通過網(wǎng)絡(luò)進(jìn)行設(shè)置的話需要寫一個腳本加載ipfw模塊,務(wù)必使加載ipfw模塊以后要生成一條在65535前通過所有連接的規(guī)則 。
建議序號在10000之前 。
(3):到此,已經(jīng)完成配置 。測試達(dá)到個人的預(yù)定目的 。
#########################################
重要增加:
注明:本文在配置的時候參考文章《使用FreeBSD配置基于ADSL的VPN防火墻(IPFILTER)網(wǎng)關(guān) 》
陳永光(Charlin) < charlin@88vip.com >
http://cvs.cnfug.org/cgi-bin/cvs.cgi?4@02
引用其中動態(tài)生成ipf.rules和ipnat.rules的腳本文件 。特此說明并感謝!
#########################################
如果個人使用就不需要那么復(fù)雜 ??梢源蟠缶?。下面給出本人自己的精簡腳本文件 。
動態(tài)生成ipf.rules和ipnat.rules的腳本文件:
#!/bin/sh
#power by fzfh
#定義變量
INTARNNET="192.168.0.0/24"
#截取adsl的動態(tài)ip
ADSLDEV="tun0"
ADSLIP=`ifconfig $ADSLDEV | grep inet | cut -d " " -f 2`
until [ $ADSLIP ]
do
sleep 3
done
#make ipnat.rules
echo "##################" > /etc/ipnat.rules
echo "#/etc/ipnat.rules #" >> /etc/ipnat.rules
echo "##################" >> /etc/ipnat.rules
echo "map "$ADSLDEV" "$INTARNNET" -> "$ADSLIP"/32 proxy port ftp ftp/tcp" >> /etc/ipnat.rules
echo "map "$ADSLDEV" "$INTARNNET" -> "$ADSLIP"/32 portmap tcp/udp 10000:50000"
>> /etc/ipnat.rules #這里的10000:50000可以用auto代替 。
echo "map "$ADSLDEV" "$INTARNNET" -> "$ADSLIP"/32" >> /etc/ipnat.rules
echo "rdr "$ADSLDEV" "$ADSLIP"/32 port X -> IP port X" >> /etc/ipnat.rules #這里的端口號X和IP可以相應(yīng)更改 。每一個一行 。
#make ipf.rules
echo "#############################" > /etc/ipf.rules
echo "#/etc/ipf.rules #" >> /etc/ipf.rules
echo "#############################" >> /etc/ipf.rules
echo "block in log quick all with short" >> /etc/ipf.rules
echo "block in log quick all with ipopts" >> /etc/ipf.rules
echo "block in log quick all with frag" >> /etc/ipf.rules
echo "block in log quick all with opt lsrr" >> /etc/ipf.rules
echo "block in log quick all with opt ssrr" >> /etc/ipf.rules
echo "" >> /etc/ipf.rues
echo "pass in quick on "$ADSLDEV" proto tcp from any to any port = X keep state"
推薦閱讀
- 抖音多想手牽手帶你來我世界走一走什么歌 歌詞歌曲分享
- 軍訓(xùn)需要自帶皮帶嗎
- 平字吉祥語
- 帶人的吉祥語
- 帶麗字氣質(zhì)昵稱微信名 帶麗字氣質(zhì)昵稱
- 帶均的吉祥語
- 霸氣帶彬字的名稱
- 帶鼠吉祥語
- 海白菜是海帶嗎
- 燜燒杯可以帶熟飯菜嗎
