2011年4月26日火曜日

TIPS: KVM (qemu) for debian squeeze - その 1

小さいネタをいくつか。
netboot
qemu pxe をキーワードに Google 先生に尋ねたところ最初のページ日本語の
最初のページ
眺めると ROM-o-matic.net でブートイメージ作って。とあったの
で早速。 1.0.1 の Image Generator で NIC type の選択に virtio-net なんて
あったものだから、おぉと選択。フロッピーはないでしょ。もしかしたら今後
使うカモとか思いつつ output format に USB Keychain disk image を選んで
あとはシリアルコンソールとか。さて kvm を起動しようと、マニュアルでブー
トデバイスの指 定を眺めると...
-boot [order=drives][,once=drives][,menu=on|off]
Specify boot order drives as a string of drive letters.
Valid drive letters depend on the target achitecture. The x86 PC uses:
a, b (floppy 1 and 2), c (first hard disk),d(first CD-ROM),
n-p (Etherboot from network adapter 1-4),
hard disk boot is the default.
To apply a particular boot order only on the first startup, specify it via once.
へっ? とお試し。

  1. tftpd のインストールと netboot イメージ
    # aptitude install tftpd-hpa
    (TFTP root directory: /srv/tftp)
    # cd /srv/tftp
    # wget http://ftp.jp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz
    # tar xzf netboot.tar.gz
    # ls -1
    debian-installer
    netboot.tar.gz
    pxelinux.0
    pxelinux.cfg
    version.info
  2. dhcpd.conf の編集
    filename に /pxelinux.0。next-server に tftpd サーバのアドレス
    subnet 172.27.201.0 netmask 255.255.255.0 {
        option routers 172.27.201.1;
        option broadcast-address 172.27.201.255;
    
        pool {
            # ignore unknown-clients;
            # deny dynamic bootp clients;
            failover peer "poolish";
            option domain-name-servers 172.27.129.1, 172.27.1.1;
            option domain-name "siesta.or.jp";
    
            filename "pxelinux.0";
            next-server 172.27.129.1;
    
            range 172.27.201.65 172.27.201.190;
        }
    }
    こんな感じ。
  3. サーバ群再起動 & kvm 起動
    # /etc/init.d/tftpd-hpa restart
    # /etc/init.d/isc-dhcp-server restart
    # cd ほにゃほにゃ
    # kvm-img create netboot.img 8G
    # kvm -net tap -net nic,model=virtio -boot n -curses netboot.img
で例のまっ黒画面に 640x480 表示されるので、目を閉じてスペース & linux text

ルーティング
むやみやたらに kvm-qemu や lxc でゲスト作りまくっているとワケワカになって
えーいままよ。と大元のホスト筆頭に
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
ってやっちゃったりしない? うーん、それもどうかと思うけど、コレもどうかと。
でコレは OSPFv2 / IPv4 適当に動かしちゃう。

  1. quagga のインストール
    # aptitude install quagga
  2. /etc/quagga/daemonsの編集
    コメント除けば
    zebra=yes
    bgpd=no
    ospfd=2
    ospf6d=no
    ripd=no
    ripngd=no
    isisd=no
  3. /etc/quagga/zebra.conf/etc/quagga/ospfd.conf
    • zebra.conf
    • hostname zebra@<適当なホスト名>
      password zebra
      enable password zebra
      log file /var/log/quagga/zebra.log
      !service password-encryption
      !
      ip forwarding
      ipv6 forwarding
      !
      line vty
    • ospfd.conf
    • こんなんでも動いているらしい
      hostname ospfd@<適当なホスト名>
      password zebra
      enable password zebra
      log file /var/log/quagga/ospfd.log
      !service password-encryption
      !
      router ospf
       ospf router-id <(自分の主たる) IP アドレス - 例えば 192.168.10.1 とか>
       redistribute kernel
       redistribute static
       redistribute connected
       network 0.0.0.0/0 area 0.0.0.0
      !
      line vty
  4. パーミッション
    ちょっとウルサイらしく debian.confdaemons の他は

    quagga 所有で 0640
    # cd /etc/quagga
    # chown quagga.quagga zebra.conf ospfd.conf
    # chmod 0640 *.conf
  5. 再起動と確認
    # /etc/init.d/quagga restart
    # # (しばらく待って...)
    # ip route ls
    10.6.36.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 
    172.27.202.0/24 dev br2  proto kernel  scope link  src 172.27.202.1 
    172.27.129.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 
    172.27.68.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 30 
    172.27.193.0/24 dev wlan0  proto kernel  scope link  src 172.27.193.17 
    172.27.201.0/24 dev br1  proto kernel  scope link  src 172.27.201.1 
    192.168.27.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 20 
    172.27.1.0/24 via 172.27.193.1 dev wlan0  proto zebra  metric 30 
    111.22.3.0/22 via 172.27.193.1 dev wlan0  proto zebra  metric 20 
    default via 172.27.193.1 dev wlan0 
    この proto zebra が quagga 経由。あるいは (なっがいけど)
    # telnet localhost ospfd
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    
    Hello, this is Quagga (version 0.99.17).
    Copyright 1996-2005 Kunihiro Ishiguro, et al.
    
    
    User Access Verification
    
    Password: 
    ospfd@myhost> show ip ospf route
    ============ OSPF network routing table ============
    N    10.6.36.0/24          [20] area: 0.0.0.0
                               via 172.27.193.1, wlan0
    N    172.27.129.0/24       [20] area: 0.0.0.0
                               via 172.27.193.1, wlan0
    N    172.27.193.0/24       [10] area: 0.0.0.0
                               directly attached to wlan0
    N    172.27.201.0/24       [10] area: 0.0.0.0
                               directly attached to br1
    N    172.27.202.0/24       [10] area: 0.0.0.0
                               directly attached to br2
    N    192.168.27.0/24       [20] area: 0.0.0.0
                               via 172.27.193.1, wlan0
    N    111.22.3.0/22         [20] area: 0.0.0.0
                               via 172.27.193.1, wlan0
    
    ============ OSPF router routing table =============
    R    172.27.129.1          [10] area: 0.0.0.0, ASBR
                               via 172.27.193.1, wlan0
    
    ============ OSPF external routing table ===========
    N E1 172.27.1.0/24         [40] tag: 0
                               via 172.27.193.1, wlan0
    N E1 172.27.68.0/24        [40] tag: 0
                               via 172.27.193.1, wlan0
    ospfd@myhost> exit
    Connection closed by foreign host.
    とか
いくつか。なんて最初に書いたけど遅くなっちゃったので、ここまで...

0 件のコメント: