web-dev-qa-db-ja.com

ipfw:トラフィックシェーピング

何が起こっているのかわかりませんが、何か間違ったことをしているようです...私の目的は、トラフィックの一部を制限できるようにすることです。正確にはwwwトラフィックです。私のクライアントの1つは、Webプロキシと呼ばれるものを実行しています。ここでは、エンドユーザーがサイト内の任意のWebページを閲覧できます。

http://www.thespacesurf.com/

これが私の/etc/ipfw.rulesファイルの後にipfw showおよびipfw pipe show

 flush 
 pipeflush 
 pipe 1 config bw 1Mbit/s mask src-port www 
 pipe 2 config bw 1Mbit/s mask src-port www 
 lo0 
を介して任意から任意に100許可IPを追加します。] 127.0.0.0/8 
 127.0.0.0/8から任意に200拒否IPを追加
任意のdstポートに8381パイプ1tcpを追加wwwuidデーモン
任意のsrcポートに8382パイプ2tcpを追加wwwuidデーモン
任意のdstにtcpを許可8025 -port smtp 
 add 8110 allow tcp from any to any dst-port pop3 
 add 8143 allow tcp from any to any dst-port imap 
 add 8993 allow tcp from any to any dst-port imaps 
 add 8995 allow tcp from any to any dst-port pop3s 
 add 65000 pass all from any to any 
 
 su-3.2#ipfw show 
 00100 85839853 23452504269 allow ip from any to any via lo0 
 00200 0 0 deny ip from any to127.0.0.0/8
003000 0 deny ip from 127.0.0.0/8いずれかに
 08025 8835622 34402 33341任意のdstポートからのtcpを許可25 
 08110 74876244303607任意のdstポートからのtcpを許可110 
 08143 44391626822178任意のdstポートからのtcpを許可143 
 08381 13990170110870804903任意のdst-port80uidデーモンへのパイプ1tcp 
 08382 181159216209004032651任意の80から任意のuidデーモンへのパイプ2tcp 
 08993 2621221332143828任意から任意へのtcpを許可dst-port 993 
 08995 880748 87973919 allow tcp from any to any dst-port 995 
 65000 323132905 187469722830 allow ip from any to any 
 65535 0 0 deny ip from any to any 
 su-3.2#ipfw pipe show 
 00001:1.000 Mbit/s 0 ms 50sl。 1キュー(1バケット)droptail 
マスク:0x00 0x00000000/0x0000-> 0x00000000/0x0000 
 BKT Prot___ソースIP /ポート________宛先。 IP/port ____ Tot_pkt/bytes Pkt/Byte Drp 
 0 tcp 64.237.55.83/49910 66.218.161.133/80 139909114 10871439505 0 0 50 
 00002:1.000 Mbit/s 0 ms 50sl。 1キュー(1バケット)droptail 
マスク:0x00 0x00000000/0x0000-> 0x00000000/0x0000 
 BKT Prot___ソースIP /ポート________宛先。 IP/port ____ Tot_pkt/bytes Pkt/Byte Drp 
 0 tcp 66.218.161.133/80 64.237.55.83/49910 181159216 209004032651 0 0 21025730 
 su-3.2#

mrtgによると、私はipfwで設定した1Mbit/sを超えています。この問題を解決するために必要な追加情報を提供させていただきますが、初心者向けです。

 su-3.2#uname -a 
 FreeBSD x.xxx.xxx 7.3-RELEASE FreeBSD 7.3-RELEASE#13:Tue Mar 23 20:47:52 UTC 2010 [email protected] :/ usr/obj/usr/src/sys/GENERIC AMD64 
 su-3.2#
6
alexus

まず、_net.inet.ip.fw.one_pass_が設定されているか確認してください。

第二に、パイプ構成にそのマスクパラメータは必要ないと思います。パッケージがポート80からのものであることを常に確認できるとは限りません。ユーザーがNATの背後から通信する場合など。

第三に、ルール200と300なしで試してみます。内部で配管をどのように処理しているかはよくわかりませんが、ipfw(8)のトラフィックシェーピングセクションには次のヒントがあります。

チェックリストルールを設計する際に考慮すべきいくつかの重要なポイントは次のとおりです。

_+o     Remember that you filter both packets going in and out.  Most connec-
_

パケットは両方向に進む必要があります。

_+o     Remember to test very carefully.  It is a good idea to be near the
_

これを行うときのコンソール。コンソールの近くにいない場合は、/ usr/share/examples/ipfw /change_rules.shにあるような自動回復スクリプトを使用してください。

_+o     **Do not forget the loopback interface.**
_

そして第4に、デフォルトのルール(=最後のルール65000)を変更して、すべてを拒否します。これは優れたファイアウォール設計であり、これがないと、他のすべての許可ルールが無駄になります;)

1
acid