以前、
Hyper-V 3.0 を使用した低帯域ネットワークの作成
RRAS を使って外部ネットワークとプライベートネットワークをつなぐゲートウェイを作成
という投稿を書きました。
この投稿では Hyper-V 3.0 の機能と 2008 R2 の RRAS の NAT を使用して帯域制御と外部へのアクセスを行っています。
この内容を Vyatta でやってみようというのが今回の投稿になります。
# Hyper-V 2.0 の環境を使用しています。
この投稿を書くにあたって以下の情報を参考にさせていただきました。
Hyper-V に Vyatta(仮想ルーター)を導入してみる
「Vyatta」のインストールと基本設定
[コンピュータ]vyattaを使った帯域制御
仮想ルータでゲストネットワークを構築する
Vyatta,NetScreenでの拠点間VPN設定(前編)
Vyatta,NetScreenでの拠点間VPN設定(後編)
さくらのVPSにVyattaを入れて、Amazon VPCにVPN接続
Contents
■環境の準備
まずは Vyatta をインストールすための環境を準備する必要があります。
Vyatta はソフトウェアルーターになりますので、インストールに必要なファイルをダウンロードしてきます。
サポートは受けられないようですが、 Vyatta Core は無償で提供されていますのでこちらを使用します。
Download Open Source Vyatta Core Releases
今回は Hyper-V のゲスト OS としてインストールしますので、Experimental 64 Bit Software Downloads の VC6.4 – 64 Bit Virtualization iso (vyatta-livecd-virt_VC6.4-2012.05.31_amd64.iso) をダウンロードしています。
Vyatta 6.4 を使ってみたところ、ネットワークアダプターはレガシーネットワークアダプターではなく、通常のネットワーク アダプターが使用できました。今回はこのような形で 3 つの NIC を付けています。
なお、CPU 1 コア / メモリ 1024 MB / ディスク 4GB という構成にしています。
■Vyatta の基本的なキー操作
マニュアルを読んでいないのであれですが、基本的な操作は以下のようになるようです。
- Tab で入力保管可能
- 入力保管 or 入力完了後に tab でヘルプを表示できる
- 通常のプロンプト vyatta@vyatta:~$
configure の場合のプロンプト vyatta@vyatta#
$ か # かで判断するみたいですね。 - Tab を押したときに [edit] となっていれば configure のモード
- show で設定を表示した際に q で出力停止
- show configuration commands
- ログの確認 tail -f /var/log/messages
これだけ知っていればひとまず今回の作業はできました。
■Vyatta のインストール
ベースとなる空のゲスト OS を作りましたらダウンロードした ISO を使用して起動します。
vyatta-livecd-virt_VC6.4-2012.05.31_amd64.iso ですが Live CD のイメージとしても使用できるようで、インストールをしなくても Vyatta を使用できるようになっています。
起動してきたらログインをします。初期の状態ではログイン / パスワード共に vyatta となっています。
ログインをしたら install system を実行してインストールをします。
いくつか入力のプロンプトが表示されますが、今回はすべてデフォルトの状態でインストールしています。
インストールは 2,3 分で終了すると思います。
インストールが進むとログインのパスワードの入力が求められますが、今回はデフォルトの vyatta を設定しています。
終了するとインストールが完了ですので、poweroff を実行して電源を切って ISO ファイルを外して起動するかを確認します。
ISO を入れて起動 $ install systm $ poweroff ISO を外す |
■インストール終了後の初期設定
インストールが終了したら基本的な設定をしておきます。
今回は以下のような設定をしています。
$ configue # set system time-zone Asia/Tokyo # delete system ntp # set system gateway-address <デフォルトゲートウェイ> # set system name-server <DNS サーバー> # set service ssh # commit # save # exit |
設定を変更する場合は configure を実行して設定変更のモードに切り替えます。
タイムゾーンの設定とデフォルトの NTP 設定の削除、デフォルトゲートウェイの設定、DNS の設定、SSH の有効化を行っています。
SSH を有効にしていますので IP を設定したら TeraTerm 等でリモートからログオンすることも可能です。
設定が終わったら commit で設定を反映させ、save で保存をします。
exit をすることで設定の変更モードから通常のモードに切り替わります。
■IP アドレスの設定
続いて IP アドレスを設定します。
NIC は eth0 から連番で振られますので、どの eth がゲスト OS のどの NIC と対応しているかを確認したい場合は、show config を実行して、MAC アドレスを比較することで確認ができそうです。
# ゲスト OS の設定を開くと各 NIC の MAC アドレスが確認できますので。
$ configure # set interfaces ethernet eth0 address dhcp # set interfaces ethernet eth1 address 172.16.255.254/16 # set interfaces ethernet eth2 address 192.168.110.254/24 # show interfaces # commit # save # sudo /sbin/ifconfig eth0 down # sudo /sbin/ifconfig eth1 down # sudo /sbin/ifconfig eth2 down # sudo /sbin/ifconfig eth0 up # sudo /sbin/ifconfig eth1 up # sudo /sbin/ifconfig eth2 up # exit $ reboot |
各 NIC に IP アドレスを割り当てています。
外部との接続に使用する NIC に関しては DHCP? サーバーが存在しているセグメントに足を出していますので DHCP で設定をしてそれ以外の NIC には固定 IP を割り当てています。
以前作成した環境の置き換えを考えているため、Windows のゲートウェイで使用していた IP アドレスをそのまま設定しています。
これでセグメント間をつなぐためのゲートウェイは完成です。
# ネットワークの認識の問題だと思うのですが、起動時にネットワークに接続していない状態にしていたところ、設定直後はセグメント間で PING が飛ばなかったのですが、再起動したら飛ぶようになりました。IP 設定直後は show configure をしてみたところ duplex の設定等が入っていなかったのでこの辺の影響だと思うのですが UNIX がわかっていないので再起動してしまいました。
# 2012/9/19 追記 ; インターフェイスのダウン→アップで大丈夫なようですね。
■NAT の設定
ここまでの設定でセグメント間の通信ができるようになりましたが、外部に出ることができませんので外部に足を出している NIC に NAT の設定をしておきます。
今回は eth0 が外部への接続になりますのでこの NIC をインタフェースとして設定しています。
$ configure # set nat source rule 10 outbound-interface eth0 # set nat source rule 10 source address 0.0.0.0/0 # set nat source rule 10 translation address masquerade # commit # save # exit |
rule の番号は任意で設定できます。
今回は複数のセグメントからのアクセスがありますのでソースのアドレスはすべて (0.0.0.0/0) にしています。
これで各セグメントが NAT 経由でインターネットに接続できることが可能となります。
■帯域制御を実行
ここからが今回の本題です。
Vyatta では標準の機能でネットワークエミュレータの機能を使用することができます。
この機能を使用することで帯域制限 (低帯域) をしたネットワークの構築を行うことができます。
設定は以下のようになります。
$ configure # set traffic-policy network-emulator TrafficPolicy bandwidth 28.8kbit # show traffic-policy # set interfaces ethernet eth2 traffic-policy out TrafficPolicy # commit # save # exit |
ルールを作成してそのルールを NIC に関連付けています。
# 今回作成したポリシーは out のポリシーとしてしか設定できないようでした。
# traffic-policy network-emulator <policy-name> bandwidth に単位 (bit : kbit/mbit/gbit Byte : kbps/mbps/gbps)が載っています。28.8kbit となります。
今回は eth2 へのアクセスに対してのポリシーとして設定していますので、192.168.110.0/24 のセグメントへの通信に関しての帯域を制御しています
network-delay なども設定できますので、回線の速度だけでなく遅延についても発生できるようですね。
モニターでネットワークの状況を確認してみます。
# モニターは q で終了できます。
$ monitor interfaces |
TX : 送信 / RX : 受信 になるようですね。
今回は eth1 のセグメントのサーバーから eth2 のセグメントのサーバーに対してファイルのコピーを行っています。
eth2 の送信レートに制限がかかっているので帯域制御はできているようです。
# TX / RX の関係がこれでよいのかがいまいちわかっていないのですが。
UNIX でよく使用される vmstat も Vyatta では標準で使用できるようでした。
# Ctrl + c で終了できます。
$ vmstat 5 |
インストールも簡単にできますので Windows OS でゲートウェイを作るより、Vyatta で作ってしまったほうが早いかもしれないですね。
# Web Proxy にもなるようですね。
オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで という書籍があるようですので購入して勉強してみたいと思います。
[…] Vyatta で作る帯域制御可能なネットワークと NAT 経由の外部アクセス http://en… […]
Vyattaを勉強するために | さっしーの試してみるか2
16 3月 14 at 18:08
[…] Hyper-Vホストに、vyatta-livecd_VC6.6R1_amd64.isoを使って構築します。この辺りは、Vyatta で作る帯域制御可能なネットワークと NAT 経由の外部アクセス http://en…に記載があるので、本記事では端折ります。 […]
VyattaでNATする | さっしーの試してみるか2
21 3月 14 at 11:39