1. Installation

1.1. VMware設定

vyatta.orgからVyattaのISOイメージをダウンロードします。

  • http://www.vyatta.org/

VyattaはDeianベースのソフトウェアルータです。 Debianベースなので、他のLinux Distributionと同じようにVMware Player上に構築する事ができます。 先程のISOイメージを仮想CDドライブに挿入する事で容易にインストールする事ができます。

検証の場合は、メモリ256MB程度で充分です。また、複雑な検証ができるようにNICを2枚装着しましょう。

NIC接続先
ネットワークアダプタNAT
ネットワークアダプタ2ホストオンリー

1.2. Boot

ゲストOS起動直後に以下のような画面が立ち上がります。Enter押下でインストールが開始されます。

初期設定では、ユーザ名"vyatta"、パスワード"vyatta"となっております。

1.3. Disk Install

この状態ではVyattaのboot imageはDisk上には存在しません。 Disk上にVyattaをインストールし、再起動および設定保存が可能なようにしましょう。 DiskにVyattaをインストールするには、"install system"と入力します。 対話形式でインストールに関する質問に答えるだけです。

vyatta@vyatta:~$ install system
Welcome to the Vyatta install program.  This script
will walk you through the process of installing the
Vyatta image to a local hard drive.

Would you like to continue? (Yes/No) [Yes]:
Probing drives: OK
Looking for pre-existing RAID groups...none found.
The Vyatta image will require a minimum 1000MB root.
Would you like me to try to partition a drive automatically
or would you rather partition it manually with parted?  If
you have already setup your partitions, you may skip this step.

Partition (Auto/Union/Parted/Skip) [Auto]:

I found the following drives on your system:
 sda    8589MB


Install the image on? [sda]:

This will destroy all data on /dev/sda.
Continue? (Yes/No) [No]: Yes

How big of a root partition should I create? (1000MB - 8589MB) [8589]MB:

Creating a new disklabel on sda
parted /dev/sda mklabel msdos
Creating filesystem on /dev/sda1: OK
Mounting /dev/sda1
Copying system files to /dev/sda1:
 99% [==================================================>]
OK
I found the following configuration files
/opt/vyatta/etc/config/config.boot
Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]:

Enter password for administrator account
Enter vyatta password:
Retype vyatta password:
I need to install the GRUB boot loader.
I found the following drives on your system:
 sda    8589MB


Which drive should GRUB modify the boot partition on? [sda]:

Setting up grub: OK
Done!
vyatta@vyatta:~$

2. Dynamips 連携

2.1. Cisco Router 設定

DynamipsとVyattaを連携できるよう、Dynamips上のinterfaceを以下のように接続します。

hostinterface接続先
R1e0/0VMware Network Adapter8 (NAT)
R2e0/0VMware Network Adapter1 (ホストオンリー)

以下は設定例です。具体的な設定は環境により異なりますので、 設定すべき値は"Network device list.cmd"より調査してください。

autostart = False
[localhost:7200]
  
  [[3640]]
    image = \Program Files (x86)\Dynamips\images\c3640-ik9o3s-mz.124-25.bin
    ghostios = True
    sparsemem = True
  
  [[ROUTER R1]]
    # e0/0 connetct to the VMware Network Adapter8 and the Vyatta eth0
    e0/0 = NIO_gen_eth:\Device\NPF_{5560025C-69A7-4B85-A3B5-344E38BEF9F5}
    e0/1 = R2 e0/1
    model = 3640

  [[ROUTER R2]]
    # e0/0 connetct to the VMware Network Adapter1 and the Vyatta eth1
    e0/0 = NIO_gen_eth:\Device\NPF_{7076E6CC-AAE0-4743-BC38-3A524C7F6787}
    model = 3640

Dynamips側のルータのIPアドレスをDHCPに設定し、簡易的な動作確認ができるようにします。

 [R1]
interface Ethernet0/0
 ip address dhcp
 no shutdown

 [R2]
interface Ethernet0/0
 ip address dhcp
 no shutdown

IPアドレスが取得できている事を確認します。

 [R1]
R1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
Ethernet0/0                192.168.48.131  YES DHCP   up                    up  
Ethernet0/1                unassigned      YES NVRAM  administratively down down
Ethernet0/2                unassigned      YES NVRAM  administratively down down
Ethernet0/3                unassigned      YES NVRAM  administratively down down
R1#

 [R2]
<omitted>

2.2. Vyatta 設定

"configure"と入力するとconfiguration modeへ移行することができます。 configuration modeになると、プロンプトが$から#に変わります。

vyatta@vyatta:~$ configure
[edit]
vyatta@vyatta#

一般的なネットワークOSと同じように、"?"で候補表示、"tab"で入力補完が可能です。

vyatta@vyatta# set interfaces ethernet eth0
address               disable-link-detect   mtu
bond-group            duplex                pppoe
bridge-group          firewall              redirect
content-inspection    hw-id                 smp_affinity
description           ip                    speed
dhcpv6-options        ipv6                  traffic-policy
disable               mac                   vif
disable-flow-control  mirror                vrrp
[edit]
vyatta@vyatta#

動作確認のためにeth0, eth1をDHCPでアドレス取得が可能なように設定します。

# set interfaces ethernet eth0 address dhcp
# set interfaces ethernet eth1 address dhcp

vyattaは設定投入直後に設定が反映されるわけではありません。"commit"を入力する事で設定が反映されます。 なお、投入した設定を破棄したい場合は"discard"を入力します。

vyatta@vyatta# commit
[ interfaces ethernet eth1 address dhcp ]
Starting DHCP client on eth1 ...

[edit]
vyatta@vyatta#

設定を保存するのは"save"です。

vyatta@vyatta# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyatta@vyatta#

operational modeに戻り、設定を確認します。

vyatta@vyatta# exit
exit
vyatta@vyatta:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.48.129/24                 u/u
eth1             192.168.71.128/24                 u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
vyatta@vyatta:~$
vyatta@vyatta:~$
vyatta@vyatta:~$ show configuration
interfaces {
    ethernet eth0 {
        address dhcp
        hw-id 00:0c:29:4b:ac:d3
    }
    ethernet eth1 {
        address dhcp
        hw-id 00:0c:29:4b:ac:dd
    }
    loopback lo {
    }
}
 <omitted>

2.3. 疎通確認

Vyatta, Dynamips間で疎通可能な事を確認します。

R1#ping 192.168.48.129

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.48.129, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/9/20 ms
R1#

3. 動作確認用 ネットワーク構築

3.1. 構成図

DHCPによるアドレス割り当てでは動作確認に難がありますので、静的なアドレス割り当てを考えます。 構成図で表すと以下の通りです。

      lo0       e0/0
      .1+--------+.1
    ----+ Cisco  +--------┐
        |   R1  |         │
        +---+----+        │.3 eth0
        e0/1│.1      +---+----+
            │        | Vyatta| 
            │        |   R3  | 
        e0/1│.2      +---+----+
        +---+----+        │.3 eth1
        | Cisco |         │
    ----+   R2   +--------┘
      .2+--------+.2
      lo0       e0/0

3.2. Cisco Router 設定

以下のようにIPアドレスを割り当てます。

 [R1]
interface Ethernet0/0
 ip address 192.168.13.1 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.12.1 255.255.255.0
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255

 [R2]
interface Ethernet0/0
 ip address 192.168.23.2 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.12.2 255.255.255.0
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255

3.3. Vyatta 設定

以下のようにIPアドレスを割り当てます。 なお、既存の設定を削除するには明示的に"delete"を投入する必要があります。

また、管理の都合上、telnetアクセス許可やホスト名の設定も施しておきましょう。

# delete interfaces ethernet eth0 address
# delete interfaces ethernet eth1 address
# set interfaces ethernet eth0 address 192.168.13.3/24
# set interfaces ethernet eth1 address 192.168.23.3/24
# set interfaces loopback lo address 10.3.3.3/32
# set system host-name R3
# set service telnet allow-root
# commit

4. Tips

4.1. mode

Vyattaにはoperational modeとconfiguration modeの2つがあります。 operational modeは通常のlinuxコマンドやshowコマンドを使用する事ができます。

lsなどを使用すると、linuxと同じように操作できる事が分かります。 ping, traceroute, snmpwalkなどの各種デバッグ用の操作ができる事を念頭に置いておきましょう。

vyatta@R3:~$ ls -l /
total 84
drwxr-xr-x  2 root root       4096 May 31 07:51 bin
drwxr-xr-x  3 root root       4096 Aug 18 10:44 boot
drwxrwsr-x  9 root vyattacfg  4096 Aug 18 10:52 config
drwxr-xr-x 16 root root       3340 Aug 18 10:52 dev
drwxr-xr-x 94 root root       4096 Aug 18 11:24 etc
drwxr-xr-x  3 root root       4096 Aug 18 10:52 home
-rw-r--r--  1 root root        245 Aug 18 10:44 install.log
drwxr-xr-x 10 root root       4096 May 31 07:44 lib
lrwxrwxrwx  1 root root          4 May 31 07:33 lib64 -> /lib
drwx------  2 root root      16384 Aug 18 10:42 lost+found
drwxr-xr-x  3 root root       4096 Aug 18 10:52 media
drwxr-xr-x  2 root root       4096 May  1 11:12 mnt
drwxr-xr-x  3 root root       4096 May 31 07:43 opt
dr-xr-xr-x 73 root root          0 Aug 18 10:52 proc
drwx------  2 root root       4096 May 31 07:52 root
drwxr-xr-x  2 root root       4096 May 31 07:51 sbin
drwxr-xr-x  2 root root       4096 Jul 21  2010 selinux
drwxr-xr-x  2 root root       4096 May 31 07:34 srv
drwxr-xr-x 13 root root          0 Aug 18 10:52 sys
drwxrwxrwt  4 root root       4096 Aug 18 11:41 tmp
drwxr-xr-x 10 root root       4096 May 31 07:31 usr
drwxr-xr-x 16 root root       4096 May 31 07:50 var
vyatta@R3:~$
vyatta@R3:~$
vyatta@R3:~$
vyatta@R3:~$ show
arp               firewall          log               system
bridge            flow-accounting   login             table
cluster           hardware          monitoring        tech-support
configuration     history           nat               users
conntrack         host              ntp               version
conntrack-sync    incoming          openvpn           vpn
date              interfaces        queueing          vrrp
dhcp              ip                raid              wan-load-balance
dhcpv6            ips               reboot            webproxy
disk              ipv6              route-map         zone-policy
dns               license           shutdown
file              lldp              snmp
vyatta@R3:~$ show

configuration modeはネットワーク関連の操作を行うmodeです。 IPアドレスやOSPF, VRRPなどの設定を行います。

DebianベースのOSなので、内部的にはifcfg, iptables, keepaliveなどにより設定させていますが、 configuration modeを使用する事によって、Distribution依存やversion依存が強いlinux設定を意識する事なく、 ネットワークOSかのようにネットワーク設定が可能になります。

vyatta@R3# set interfaces ethernet eth0 address 192.168.13.3/24

4.2. edit

editを使用すると入力を省略することができます。 例えば"edit interfaces ethernet eth0"と入力すると、次回以降のset文で"interface ethernet eth0"を省略することができます。 Cisco IOSで言うならば、configuration modeからinterface modeに移行する操作です。

vyatta@R3# edit interfaces ethernet eth0
[edit interfaces ethernet eth0]
vyatta@R3# set address dhcp

4.3. compare

commitする前に"compare"と入力すると設定差分を確認する事ができます。 差分を元にcommitするのかdiscardするのかを決めると、オペミスを削減できると思います。

vyatta@R3# compare
[edit protocols]
+ospf {
+    area 0 {
+        network 192.168.13.0/24
+        network 10.3.3.3/32
+    }
+    area 23 {
+        network 192.168.23.0/24
+    }
+}
[edit protocols static route 10.1.1.1/32]
-next-hop 192.168.13.1 {
-}
[edit]
vyatta@R3#