« 15年目の運用まとめ | トップページ | 自宅サーバのアップデート (2) »

2023年2月 7日 (火)

自宅サーバのアップデート (1)

1月中旬に Ubuntu 18.04 + xen + ownCloud で運用していた自宅サーバ (mac mini 2011) で、いつもどおりレポジトリの更新をインストールしたら、dom-u の owncloud のネットワークがつながらなくなった。(*)

振り返ってみると、自宅サーバは debian squeeze で運用開始して、その後 ubuntu 11.04 に移行し、代々 release-upgrade を繰り返して環境を引き継いできたものであった。その間、インターフェースの名前は predictable に代わり、ネットワーク設定が netplan になり、自宅サーバは時代の変化に取り残された化石マシンになってしまっていた。

それが原因だろうと思い、predictable interface name にしてみたり、netplan にしてみたりしたが、結局つながらない。dom-u ではネットワークが up しており、dom-0 では vif1.0 が見えている、でもつながってないので、bridge のところで何かおきているらしい。web 検索で見つけた echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables というのも試してみたがつながらない。

数日あれこれ試行錯誤したがだめで、かなり悩んだが、そういえば ubuntu 18.04 はまもなくサポート終了だし、環境を一新するいい機会だと考えることにした。

当院開業の時、サーバを仮想環境で動かすに当たって、準仮想化の Xen と、コンテナ型の Linux-VServerOpenVZ を比較検討して、xen を採用したという経緯があった。

今の状況だと、検討するとしたら準仮想化の kvm かコンテナ型の docker ということになると思う。今回は kvm で構築することにした。機会があれば docker も試してみたい気はする。

kvm のインストール

  1. kvm はカーネルに組み込まれているので、xen の様に hypervisor を新たにインストールする必要はない。開業当時、kvm が linux カーネルに組み込まれることが決定してニュースになっていたのを思い出す。
    $ sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
    $ lsmod | grep kvm
    kvm_intel  282624  0
    kvm        663552  1 kvm_intel
    
  2. 仮想マシンの管理には xl ではなく、libvirt (コマンドは virsh) を使う
    $ sudo systemctl enable --now libvirtd
    $ systemctl status libvirtd
    ● libvirtd.service - Virtualization daemon
         Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
               :
    
  3. br_netfilter を組み込んで無効にする。これをしておかないと、仮想マシンが外に出られない。(元々 xen の dom-u がつながらなくなった件もこれが原因かと思ったのだが、この設定をしてもつながらなかった)
    /etc/modules-load.d/modules.conf
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    br_netfilter
    
    /etc/sysctl.conf
    #added
    net.bridge.bridge-nf-call-iptables = 0
    
    $ cat /proc/sys/net/bridge/bridge-nf-call-iptables
    0
    
  4. netplan でブリッジ br0 を作る
    network:
      ethernets:
        enp2s0f0:
          dhcp4: no
      bridges:
        br0:
          interfaces:
            - enp2s0f0
          dhcp4: no
          addresses:
            - 192.168.1.100/24
          nameservers:
            addresses:
            - 192.168.1.1
            search: []
          routes:
            - to: default
              via: 192.168.1.1
      version: 2
    
  5. その br0 を使う network を定義する br0.xml を作って、virsh で kvm 用のネットワーク設定を作る。できた kvm 用のネットワーク設定は /etc/libvirt/qemu/networks/ に入る。
    $ cat br0.xml
    <network>
      <name>host-bridge</name>
      <forward mode="bridge"/>
      <bridge name="br0"/>
    </network>
    
    $ sudo virsh net-define br0.xml
    Network host-bridge defined from br0.xml
    
    $ sudo cat /etc/libvirt/qemu/networks/host-bridge.xml
    <!--
    WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
    OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
      virsh net-edit host-bridge
    or other application using the libvirt API.
    -->
    <network>
      <name>host-bridge</name>
      <uuid>c8b61fe1-7602-3028-15f3-2954207391fa</uuid>
      <forward mode='bridge'/>
      <bridge name='br0'/>
    </network>
    
    $ sudo virsh net-list --all
     Name          State      Autostart   Persistent
    --------------------------------------------------
     default       active     yes         yes
     host-bridge   inactive   no          yes
    
  6. ブリッジの起動と、自動起動の設定
    $ sudo virsh net-start host-bridge
    Network host-bridge started
    $ sudo virsh net-autostart host-bridge
    Network host-bridge marked as autostarted
    $ sudo virsh net-list --all
     Name          State    Autostart   Persistent
    ------------------------------------------------
     default       active   yes         yes
     host-bridge   active   yes         yes
    

以上で、xen の dom-0 にあたる部分の設定が完了。

-----
(*)2023-02-16 追記
多分これだと思われる。

« 15年目の運用まとめ | トップページ | 自宅サーバのアップデート (2) »

サーバ」カテゴリの記事

トラブル」カテゴリの記事