Ubuntuのホームネットワーク用のGateway + Shaper

私のホームネットワークは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/htbinit

sudo 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になりました



All Articles