以前、Vyatta で作る帯域制御可能なネットワークと NAT 経由の外部アクセス という投稿を書いたのですが、現在、Vyatta は無償版が提供されておらず、無償版を使用したい場合には Vyatta からフォークした、VyOS を使う必要がありますので、VyOS 版を書いてみたいと思います。
VyOS については vyos.net / User Guide / vyos-users.jp から情報を追うとよろしいかと。
基本的な操作内容は Vyatta と同じだと思いますので VyOS の勉強には以下の書籍も有効かと。
なお、Vyatta の投稿と同様に、NIC 3 枚で構築を行っています。
# Windows Server 2012 R2 + Gen1 のゲスト OS で構築しています。
今回は、VyOS の 1.1.1 (vyos-1.1.1-amd64.iso) を使用しています。
基本的なコマンド操作については以下を参照。
- Tab で入力保管可能
- 入力保管 or 入力完了後に tab でヘルプを表示できる
- 基本的なコマンド体系
- show ~ : 設定の確認
- set ~ : 設定
- delete ~ : 設定を削除
- configure で commit : 設定を反映
- configure で save : 設定を永続化
- configure で discard : 設定を破棄
- プロンプトの表示内容 (本文内のコマンドには接頭句としてどちらのプロンプトかを記述しています。)
- 通常のプロンプト (操作モード)
- $
- configure の場合のプロンプト
- #
Tab を押したときに [edit] となっていれば configure のモード - configure の状態であれば clear でコンソールの内容の初期化が可能
- #
- 通常のプロンプト (操作モード)
- 出力の停止
- q で出力停止
- 構成の確認
- show configuration commands
- ログの確認
- tail -f /var/log/messages
- show log tail
■VyOS のインストール
それでは VyOS のインストールから。
まずは ISO を入れて仮想マシンを起動します。
初期の ID / パスワードは vyos となりますので、ログインして Install System からインストールを実施します。
# LiveCD + コンフィグで実施できるのがいいのでしょうけどもまだそこまでは勉強できておらず。install system ではなく、install image でも可能なようですね。
# 今は install image のほうが推奨となるようですね。
vyos login: vyos Passowrd: vyos $ install system Would you like to continue? (Yes/no) [Yes]: <Enter を押下> Partition (Auto/Union/PartedSkip) [Auto]: <Enter を押下> Install the image on? [sda]: <Enter を押下> This will destroy all data on /dev/sda. Continue? (Yes/No) [No]: Yes How big of a root partition should I Create? : <Enter を押下> I found the following configuration files /opt/vyatta/etc/config/config/boot Which one should I Copy to sda? [/opt/vyatta/etc/configconfig.boot:: <Enter を押下> Enter password for administrator account Enter password for user 'vyos': <vyos のユーザーの新規パスワードを設定し Enter を押下> Retype password for user 'vyos': <パスワードの再入力> Which drive should GRUB modify the boot partition on? [sda]: <Enter を押下>
上記のコマンドでインストールが完了します。
LiveCD なしで起動できるかを確認するために、一度シャットダウンをします。
$ poweroff Proceed with poweroff? (Yes/no) [No] Yes
アップグレードについては VyOS のインストールとアップグレード や Upgrade を確認するとよさそうです。
■インストール後の初期設定
インストールが完了したら初期設定を実施しておきます。
$ configure # set system time-zone Asia/Tokyo # set system ntp server ntp.nict.jp # set system gateway-address <デフォルトゲートウェイの IP アドレス> # set system name-server <DNS サーバー> # set service ssh # commit # save # exit $
■キーボードレイアウトの変更
内容についてはこちらを参照していただければと。
Question Change keyboard and language settings
$ sudo dpkg-reconfigure console-data Select keymap from full list → pc / qwerty / japanese / standard / standard
上記だと再起動をすると設定が反映されないようですので、
$ set console keymap Generic 105-key (Intl) PC → Other → Japan → Japan
■ IP アドレスの設定
次に eth0 に DHCP を指定した IP アドレスを設定したいと思います。
ネットワーク系のコマンドについては以下がとても参考になります。
Vyatta ? DHCP client, IP address, MAC address, Static routing, DNS client
以下のコマンドで MAC アドレスが拾えますので、実 NIC との対応はこちらで確認ができます。
$ configure # show interfaces
$ configure # set interfaces ethernet eth0 address dhcp # exit # save # commit
これで、DHCP による割り当てとなっていますので、IP の再取得をする場合には以下のコマンドを実行します。
# config の場合は、sudo した後の show interfaces だとリンクのアップ / ダウンが簡単に見れてよいですね。(通常のプロンプトからであれば sudo と同じ情報になるようです。) 確認した後は exit して sudo から抜けておきます。
# sudo su # renew dhcp interface eth0 # show interfaces # exit
残りの NIC についても IP を設定していきます。
# set interfaces ethernet eth1 address 172.16.255.254/16 # set interfaces ethernet eth2 address 192.168.110.254/24 # commit # save # sudo /sbin/ifconfig | more # exit $
■NAT の設定
ここまでで IP が設定できましたので次に NAT を設定します。
eth0 がインターネットに接続している NIC になりますので、この NIC を外向けの NAT 用のインタフェースとして設定しています。
$ 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 # show nat source rule # exit $
■帯域制御の実行
今の Hyper-V は帯域制御を実行できますが、VyOS での設定を。
$ configure # set traffic-policy network-emulator TrafficPolicy bandwidth 28.8kbit # set interfaces ethernet eth1 traffic-policy out TrafficPolicy # show traffic-policy # show interfaces ethernet eth1 # commit # save # exit $
これで eth1 からの発信側の帯域としては 28.8kbps が設定された状態となります。
# 単位については traffic-policy network-emulator <policy-name> bandwidth を参照するとよいかと。
kbit: Kilobits per second.
mbit: Megabits per second.
gbit: Gigabits per second.
kbps: Kilobytes per second.
mbps: Megabytes per second.
gbps: Gigabytes per second.
帯域の確認は以下のコマンドで実行できます。
# 通常のプロンプト ($) で実行します。終了は q となります。
$ monitor interfaces q
上記の設定では eth1 からの出力方向のポリシーとなっていますので、eth1 → eth0 のような場合には帯域制御が行われます。
しかし、eth0 → eth 1 に対しては帯域制御が効いていない状態となります。
この辺は traffic-policy の shaper / limiter で QoS の制御をすることでうまく調整できるかもしれないですね。
SQL Server 以外も少し勉強していかないとなと思う今日この頃です。