占有されていないxl0の秘密、またはネットワークを制御する

ご存知のように、 前回の投稿の最後に以下の問題をできるだけ簡単に、可能な限り詳細検討することを約束しました。



1. DHCPセットアップ

2. DNSを最小限に上げる

3. snmpを使用してインターフェースの統計をキャプチャし、cactiでビューティーをレンダリングする

4.ネットワーク内のユーザーのトラフィックを制限する

5.トラフィックの使用方法と場所に関する詳細な統計の維持

6.別のプロバイダーが存在する場合のバックアップチャネルの構成(およびxl0を忘れた人)

7. ipfwを使用して複数のチャネル間のトラフィックを解決する

画像



前の議論に照らして、私は思い出したい:

-「FreeBSD for dummies」シリーズのこれらの記事

-いいえ、pfとaltqについては書きません。

-Windowsのハードソリューションとプロキシを使用して簡単に実行できます-それらについてではありません

-いいえ、イカとサグについての言葉は私たちの方法ではありませんが、誰もそれを禁じていませんか?

-10.10.10.0/24および172.16.0.0/24は123.123.123.122ではなく、222.222.222.222でもないため、目が痛くない

-これは不可能であり、推奨されません-これはガイドではなく、一般的な概念の単なるデモンストレーションです。 理想的には、ルートからmysqlへのアクセスを許可しないようにする必要があります。 まあ、あなたはそれを得る:)



順番に行きましょう



まず最初に、美しい球状のネットワークを真空状態で確認し、すべてのネットワーク設定(IPアドレス、マスク、ゲートウェイ、DNS)に自動的に配布するのが適切であると判断します。



画像



isc-dhcpdをインストールしても問題は発生しません。

#cd /usr/ports/net/isc-dhcp40-server/

#make install







次に、以下を/etc/rc.confに追加します。

dhcpd_enable="YES"

dhcpd_flags="-q"

dhcpd_conf="/usr/local/etc/dhcpd.conf"

dhcpd_ifaces="fxp0"









次に、次の便利な方法で/usr/local/etc/dhcpd.confを編集します。

option domain-name-servers 192.168.0.1;

default-lease-time 3600;

max-lease-time 43200;

authoritative;

ddns-update-style none;

log-facility local7;

one-lease-per-client true;

deny duplicates;



subnet 192.168.0.0 netmask 255.255.255.0 {

default-lease-time 3600;

option domain-name "office";

option subnet-mask 255.255.255.0;

option routers 192.168.0.1;



include "/usr/local/etc/dhcp_subnets.conf";



}









なぜそんなに倒錯したのか? また、後でホストをサブネットに追加しやすくするために、「}」の呼び出しによる混乱を自動的に回避します



さあ、サブネットがどのようになるか見てみましょう。



/usr/local/etc/dhcp_subnets.conf



そして、試運転のために以下を行います:

host hostmariya {

hardware ethernet 00:a1:b0:01:bc:77;

fixed-address 192.168.0.2;

}









すべてがこの全体を開始しようとしているようです

# /usr/local/etc/rc.d/isc-dhcpd start









Oppanki-始まりました。 わかった

オプションオプションdomain-name-servers 192.168.0.1からわかるように、加速プログラムを使用してDNSサーバーを上げます。 当面はプロバイダーの非の打ちどころのないものに完全に依存しているので、それは私たちとのみ前進します。 はい、これまでのところ、ゾーンを実施しません。 ナタリア・ヴァシリエヴナとグリゴリー・セルゲイヴィッチにインターネットを単に配布します。 2つのプロバイダーにも依存します。

なぜ2つ?

突然、2番目のプロバイダーが表示されます。 そして、私たちは古いものをそれほどあきらめるつもりはありません。 バックアップリンクとして使用します。



/etc/namedb/named.confを参照してください



マークなし

forward only;









内側のfxp0を聴き始めます

listen-on { 127.0.0.1; 192.168.0.1; };









10.10.10.2と172.16.0.2の形式のフォワーダーのコメントを外します(はい-はい、IPがハングするxl0ネットワークカードに既に存在する2番目のプロバイダーは172.16.0.1のようになります)

forwarders {

10.10.10.2;

172.16.0.1;

};









保存して実行してみてください:

#/usr/sbin/named -t /var/named -u bind









テストは少なくとも実行されますか?

#ps aux | grep named

bind 10095 0.0 0.7 4280 3484 ?? Ss 7:58PM 0:00.11 /usr/sbin/named -t /var/named -u bind









始まったようです



動作しますか?



# nslookup

> server 127.0.0.1

Default server: 127.0.0.1

Address: 127.0.0.1#53

> google.com

Server: 127.0.0.1

Address: 127.0.0.1#53



Non-authoritative answer:

Name: google.com

Address: 74.125.127.100

Name: google.com

Address: 74.125.45.100

Name: google.com

Address: 74.125.67.100









うまくいく! 素晴らしい。



/etc/rc.confへの行の書き込み

named_enable="YES"









/etc/resolv.confで修正されました



nameserver 127.0.0.1









すでに述べたように、メインプロバイダーとして使用したい別のプロバイダーがありますか?

苦しんでいる/etc/firewall.confを開き、対処するすべてのものがある場所で、これを言ってみましょう。

#internet natting and preserving

${FwCMD} add 1799 divert 8671 ip from table\(2\) to not table\(9\)

${FwCMD} add 1800 divert 8672 ip from table\(2\) to not table\(9\) out via xl0

${FwCMD} add 1847 fwd 172.16.0.2 ip from me to 213.180.204.8

${FwCMD} add 1849 fwd 10.10.10.2 ip from 10.10.10.1 to not table\(9\)

${FwCMD} add 1850 fwd 172.16.0.2 ip from 172.16.0.1 to not table\(9\)

${FwCMD} add 2099 divert 8671 ip from any to 10.10.10.1 in via rl0

${FwCMD} add 2100 divert 8672 ip from any to 172.16.0.1 in via xl0









さて、新しいプロバイダーの2番目のnatdを上げます:

/sbin/natd -u -p 8672 -a 172.16.0.1









これがどのように機能するかを簡単に調べて、将来混乱しないようにしましょう。

•ルール1799は、ネットワークからプレート2からnatdへのトラフィックの直接的な反転です。

•ルール1800は以前のものと似ていますが、すでにバックアップチャネル用であり、当然1799年まで何もありません。

•ルール1847は、新しいプロバイダーを介してチャネルの活性を制御する必要があるホストを強制することのみを目的としています(172.16.0.2)

•1849年と1850年の規則は、対応するネットワークカードに表示されたトラフィックをどこに置くかを厳密に示しています。

•まあ、それぞれ2099と2100、natdの逆流



作業のロジックは単純です-1799、1849、2099のルールが生きている場合、インターネットは新しいプロバイダーに行き、それらが欠落している場合は172.16.0.2になり、トラフィックは「予期せず」10.10.10.2に急ぎます=)

このようなスイッチについては、後ほど説明します。



今日のプログラムの次のポイントを見てみましょう。 ああ... snmpとapache + mysql + php + cactiのインストール...次回延期できますか? まあ、どうぞ! まあ、少なくともサボテンをインストールして設定してください。 今すぐ請求書を送りましょう。そして、ファイナルですべての方法を監視して終了しますか?

同意しましたか? ;)それでは行きましょう。



このようなマイクロタスクには、これまで見てきた中で最もシンプルで最も予測可能なソリューションであるオープンソース課金スターゲイザーを使用します。

それをインストールするには、次のものが必要です。

1.請求データを保存するmysql

2.細い松葉杖と小道具をphpで作成するため、php + apacheも配置します

3.実際に最後の安定したスターゲイザー



まず、少なくともこのような最小限のドックや、apache + php + mysqlバンドルのインストール専用のドックに精通することをお勧めします。 簡単に説明します。



mysqlをインストールしてみましょう。

# cd /usr/ports/databases/mysql50-server/

# make install

# /usr/local/bin/mysqladmin -u root -p password ourpassword









phpのインストールを開始します

# cd /usr/ports/lang/php5/

# make install









また、mysql、gd、iconvなどのサポート拡張機能や、今後必要になる可能性のあるものを収集します。



# cd /usr/ports/lang/php5-extensions

# make install









すべてを試すかどうかは、希望どおりにインストールされます。

# apachectl start

# echo "<?php phpinfo(); ?>" > /usr/local/www/data/test.php









実際には、アドレス192.168.0.1/test.phpにアクセスして、すべてが意図したとおりになっているかどうかを確認します



素晴らしい。 次に、これまでのすべてを説明し始めます。

# fetch www.stg.dp.ua/download/server/2.406/stg-2.406.src.tgz

# tar zxvf stg-2.406.src.tgz

# cd stg-2.406

# cd projects/stargazer/

# ./build

#gmake install

#cd ../convertor/

#./build









次に、デフォルトのテキストベースをmysqlに変換します。 convertor.confを編集します。



store_postgresqlのコメント:

#<DestStoreModule store_postgresql>

# server = localhost

# database = stargazer

# user = stg

# password = 123456

#










解凍して、目的のタイプstore_mysqlに移動します。

<DestStoreModule store_mysql>

#

dbuser = root



#

rootdbpass = ourpassword



#

dbname = stg



#

dbhost = localhost











変換しよう:

# ./convertor









空のベースは即座に変換されます。 スターゲイザーの構成を開始します。

交通クラスを規定します

# vim /etc/stargazer/rules

ALL 192.168.0.0/24 DIR1

ALL 0.0.0.0/0 DIR0









生活の現実に合わせて設定をカスタマイズします。

#vim /etc/stargazer/stargazer.conf









少なくとも、ルートの名前を編集します。

DirName0 = internet

DirName1 = local

DirName2 =

DirName3 =

DirName4 =

DirName5 =

DirName6 =

DirName7 =

DirName8 =

DirName9 =











cap_bpfトラフィックキャプチャモジュールを構築して、内部ネットワークを参照するインターフェイスでそれを考慮するようにします

<Module cap_bpf>

iface = fxp0











<StoreModule store_files>に関連するすべてについてコメントし、コンバーターと同様に、<StoreModule store_mysql>モジュールを接続します。

<StoreModule store_mysql>

dbuser = root

rootdbpass = ourpassword

dbname = stg

dbhost = localhost











stargazer自体を実行しようとします。

#stargazer









そして、彼らがどのように始まったかを確認してください

#tail /var/log/stargazer.log









Stgに似たものが表示された場合、正常に開始されました。 だから人生にはチャンスがあります;)

stg.dp.ua/download/sgconfig/1.91.9/sgconfig.1.91.9.win.exeのアドレスにWindows Configurator をロードし、インストール後、接続を192.168.0.1 ∗ 555に設定します。

デフォルトのユーザー名/パスワードはadmin / 123456です。 ログイン後、次のように表示されます



画像



ここにあるデフォルトのユーザーテストでは、大胆に削除します。



画像



管理者パスワードを変更するか、新しいパスワードを追加します。 テストの古いスキームに基づいて、IP 192.168.0.2のアカウンティングからMaria Ivanovnaを追加します



画像



ネットワークにアクセスするためにユーザー名/パスワードを必要とするオフィス環境ではauth_iaを使用する必要がないため、「常にオンライン」になります。

UserData0およびUserData1フィールドでは、速度とMACを駆動します。その理由は次のとおりです。

スターゲイザーのロジックは非常にシンプルで柔軟です。 ユーザーがオンラインに表示された瞬間に、次のスクリプトが切断され、削除され、実行のために追加されます。

OnConnect

OnDisconnect

OnChange

OnUserAdd

OnUserDel









その目的は、名前で簡単に推測できることです。 それらはすべて/ etc / stargazerにあります/



それらを現実に合わせてカスタマイズし始めます。

まず、PHPでさらに2つのスクリプトを作成し(それらがインストールされたのには十分な理由があります)、データベースから速度とユーザーMACを取得します。

スクリプト/ etc / stargazer / GetSpeed with contents

#!/usr/local/bin/php

<?php

$login=$argv[1];

$link = mysql_connect("localhost", "root", "ourpassword");

mysql_select_db("stg");

$query = 'SELECT `Userdata0` FROM users where `login`= "'.$login.'"';

$result = mysql_query($query);

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

foreach ($line as $col_value) {

print ($col_value);

}

}

?>









そして/ etc / stargazer / GetMacの形式

#!/usr/local/bin/php

<?php

$login=$argv[1];

$link = mysql_connect("localhost", "root", "ourpassword");

mysql_select_db("stg");

$query = 'SELECT `Userdata1` FROM users where `login`= "'.$login.'"';

$result = mysql_query($query);

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

foreach ($line as $col_value) {

print ($col_value);

}

}

?>









実行する権利を割り当てます

#chmod a+x /etc/stargazer/GetMac /etc/stargazer/GetSpeed









以前に作成したユーザーの健康のトピックでそれらをテストします。

# /etc/stargazer/GetSpeed mariya

512

/etc/stargazer/GetMac mariya

00:a1:b0:01:bc:77









いいね!



ユーザーがオンラインで表示され、オフラインになったときに何が起こるかを考え始めます。

したがって、ユーザーがオンラインで表示されるとどうなりますか:

# OnConnect

IFACE="fxp0"

LOGIN=$1

IP=$2

CASH=$3

ID=$4

SPEED=`/etc/stargazer/GetSpeed $LOGIN`

MAC=`/etc/stargazer/GetMac $LOGIN`

SCOUNT="Kbit/s"

fwcmd="/sbin/ipfw -q"

arpcmd="/usr/sbin/arp"

cur_date=`date \+\%Y.\%m.\%d`

cur_time=`date \+\%H:\%M:\%S`



# DELETE RULEZ

${fwcmd} delete `expr $ID '*' 10 + 10001`

${fwcmd} delete `expr $ID '*' 10 + 10002`

${fwcmd} delete `expr $ID '*' 10 + 10003`

${fwcmd} delete `expr $ID '*' 10 + 10004`

${fwcmd} delete `expr $ID '*' 10 + 10005`



# ADD RULEZ



# fix user mac to ip

${arpcmd} -S $IP $MAC



#SPEED CONTROL

${fwcmd} pipe `expr $ID + 101` config bw $SPEED$SCOUNT queue `expr $SPEED '/' 8`Kbytes

${fwcmd} pipe `expr $ID + 901` config bw $SPEED$SCOUNT queue `expr $SPEED '/' 8`Kbytes



# ALLOWS CONTROL

${fwcmd} add `expr $ID '*' 10 + 10001` allow icmp from $IP to me

${fwcmd} add `expr $ID '*' 10 + 10001` allow icmp from me to $IP

${fwcmd} add `expr $ID '*' 10 + 10002` pipe `expr $ID + 101` ip from $IP to any via $IFACE in

${fwcmd} add `expr $ID '*' 10 + 10003` pipe `expr $ID + 901` ip from any to $IP via $IFACE out

${fwcmd} add `expr $ID '*' 10 + 10004` allow ip from $IP to any

${fwcmd} add `expr $ID '*' 10 + 10005` allow ip from any to $IP



# ADD TO LOG

echo "<=;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH;$SPEED;`expr $ID + 101`;$MAC" >> /var/stargazer/allconnect.log









そして、それがオンラインから抜けるとどうなります:

# OnDisconnect

LOGIN=$1

IP=$2

CASH=$3

ID=$4



fwcmd="/sbin/ipfw -q"



# TIME FORMAT

cur_date=`date \+\%Y.\%m.\%d`

cur_time=`date \+\%H:\%M:\%S`



# DELETE RULEZ FRO IPFW

${fwcmd} delete `expr $ID '*' 10 + 10001`

${fwcmd} delete `expr $ID '*' 10 + 10002`

${fwcmd} delete `expr $ID '*' 10 + 10003`

${fwcmd} delete `expr $ID '*' 10 + 10004`

${fwcmd} delete `expr $ID '*' 10 + 10005`

${fwcmd} pipe `expr $ID + 101` delete

${fwcmd} pipe `expr $ID + 901` delete

echo "=>;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH" >> /var/stargazer/allconnect.log









ここではすべてが明確だと思います-内部ユーザーIDに対応するシェーピングルールを生成/削除し、ローカルfxp0インターフェイスよりもさらに許可します。

私たちは、最初から何にも制限されていなかったことを覚えています。なぜなら、最後から、すべてのIPを許可するからです。 問題ありません。

/etc/firewall.confのようなものを追加します

${FwCMD} add 101 allow all from 192.168.0.1 to any

${FwCMD} add 101 allow all from any to 192.168.0.1

${FwCMD} add 65533 deny all from table\(2\) to any

${FwCMD} add 65534 deny all from any to table\(2\)









次に、実験ユーザーに対して「常にオンライン」を有効/無効にし、/ var / stargazer / allconnect.logを監視します。

女主人への注意 :何を歩くか、どのように、どのルールで目で制御するのが常に便利です

#ipfw show









すべて-最小バージョンでは、請求が配信されました。 なぜお金を数えるのですか? はい、それは非常に簡単です。Maryivanovnaが1か月あたり500メガ以下のインターネットを発行するようにしたり、特定のトラフィック量で手動で特定の速度を提供したりしたいのですか 問題ありません。 計算を簡単にするために、1megを1つのdenyuzhkuと同一視してください。 そう言いましょう



画像



一般的に、創造性の余地があります。



私の意見では、この記事は非常に長く暗いものでした。 明らかにそれは回る時間です。



次回、カルマが許せば、バックアップチャネルに切り替える方法を教えて、サボテンでこのような美しいグラフを描くことができると約束します



画像



また、今日インストールしたstargazerによって収集されたトラフィック統計を便利に表示する方法。



PSとはい-悲しいことに改善しなかったので、私のロシアは前回から学校で学ばなかった:(




All Articles