私のホームネットワークは3台のコンピューターに成長しました。 これに関連して、共有が開始されました。最初に誰がダウンロードするのか。
トレントが次のコンピューターのコンピューター全体にダウンロードするため、FFのページでさえ2〜3分間開くことがあります。
システム管理者の委員会(つまり、私)は、すべてのチャネルを動的に共有するシェーパーを備えたゲートウェイを作成することにしました。
さあ始めましょう
2つのネットワークカードがあります
。eth0-インターネットに見えます(モデムはルーターモードです
。eth1-ローカルネットワークに見えます)
ネットワークインターフェイス自体の構成については説明しませんが、
eth0はルーターからIPを受信し、
eth1は静的IPに設定されているので、10.2.2.1を選択しました。
まず、DHCPサーバーを上げて、残りのコンピューターがIPアドレスを自動的に取得できるようにします。
DHCPサーバーをインストールする
sudo apt-get install dhcp3-server
その後、config /etc/dhcp3/dhcp.confを修正し、次の形式にしました
subnet 10.2.2.0 netmask 255.255.255.0
{
option routers 10.2.2.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 195.54.2.1;
option domain-name-servers 195.54.3.2;
range 10.2.2.10 10.2.2.254;
default-lease-time 21600;
max-lease-time 28800;
}
次に、ファイル/ etc / default / dhcp3-serverに行を書き込むことで修正します
INTERFACES=eth1
サーバーがこの特定のインターフェイスを「リッスン」するため
その後、サーバーを起動できます
sudo /etc/init.d/dhcp3-server start
インターネットを内部ネットワークに「配布」するには、IPマスカレード(IPMASQUARADE)を使用します
省略形(コメントおよびメッセージの非機能出力なし)では、スクリプトは次のようになります。
#!/bin/sh
# : lafox.net/docs/masq
IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
EXTIF="eth0"
INTIF="eth1"
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
echo -e "done.\n"
これを/etc/profile.dのファイルに保存し、名前を付けます(例:masq.sh)。
実行可能にして実行します
sudo chmod +x /etc/profile.d/masq.sh
sudo sh /etc/profile.d/masq.sh
これらの手順の後、eth1ネットワークインターフェイスを「下げ」てから再度「上げる」必要があります。
sudo ifonfig eth1 down
sudo ifonfig eth1 up
その後、クライアントはIPアドレスを受信し、インターネットを使用できるようになります)))
そして、原則として、インターネット速度を動的に共有するためにすべてを考え抜いたシェーパーを設定します。
シェーパー用のhtb.initスクリプトを選択しました。こちらからダウンロードできます
sourceforge.net/projects/htbinitsudo cp htb.init /etc/init.d/htb
sudo chmod +x /etc/init.d/htb
sudo update-rc.d htb defaults
HTB_PATHが指すフォルダー(この変数を個人的に修正し、/ etc / htbを取得しました。もちろん、このフォルダーはシステムにありません。作成する必要があります)では、次のファイルを作成します。
eth1:R2Q=20
DEFAULT=0
R2Q-シェーパーの精度/速度の比率を決定する係数
DEFAULT-パケットが他のルールに該当しない場合に分類されるクラスの識別子。 識別子0のクラスは常に存在し、シェーピングなしで、つまりフルスピードでパケットを渡します。
このファイルを使用して、eth0インターフェイスでシェーパーを初期化しました。
eth1-2.root:RATE=24Mbit
このファイルを使用して、eth0インターフェイスでトラフィックのルートクラスを作成し、このクラスを介した最大アップロード速度を24メガビットに制限しました。
eth1-2:2001:RATE=512Kbit
CEIL=24Mbit
LEAF=sfq
RULE=10.2.2.10/24
このファイルを使用して、最初のクライアントのクラスを作成しました。
RATE-クライアントの速度保証。 私たちの場合、速度を保証する必要はありませんが、HTBはそれを必要としているため、24000Kbps / 3> RATEという不等式から進みます。
CEIL-空きチャネルを持つクライアントの最大速度。
LEAF-クラスがツリーの葉の1つであることを示します。つまり、特定のルール(RULE)を満たすトラフィックがそのクラスに入ります。 sfqパラメーターは、このクラス内のセッション間で速度を均等に分散することを意味します。
RULEは、このクラスに分類されるトラフィックを決定するルールです(注1を参照)。 この場合、宛先IPが10.2.2.10から10.2.2.255であるすべてのトラフィックがクラスに入ります。
ファイルに示されているパラメーターの目的と値、およびファイル名はhtb.initスクリプトで見つけることができます-上部に良いヘルプがあります。
シェイパーを開始します
sudo /etc/init.d/htb start
すべて、シェーパーがオンになっています。 次に、構成に変更があった場合、/ etc / init.d / htb restartを実行する必要があります。
次のコマンドで構成を表示することにより、速度テストを除き、htb.initスクリプトの動作を確認できます。
tc class show dev eth1
tc qdisc show dev eth1
まあ、あなたはまだ私たちのサーバー、Clam AVとファイアウォールにたくさんのものをねじ込むことができますが、私はあなたに任せます)))
頑張って
PS記事は、Habrにアクセスできないが、Habroyuzersの1人になりたい友人(彼のメールはktattoo@gmail.ru)のリクエストで公開されました。
Upd1。 カルマをウブンタリウムに移してくれてありがとう
Upd2。 この記事の著者は、Habrユーザーである
KTATTOOになりました 。