ubuntu 22.04 netplan설정과 ovsdb-server오류처리

우분투 22.04에서 netplan을 이용하여 네트워크 설정을 하는 방법 입니다.
ubuntu는 크게보면 desktop버전과 server버전이 있는데, server버전에서 설정하는 방법입니다.

netplane

설정파일 확인

사용자 환경에따라 netplan파일이 다르게 확인 될 수 있으므로 확인이 필요합니다.

고정 IP설정 샘플

고정 IP 설정은 아래 와 같은 방식으로 설정 할 수 있습니다.

network:
  ethernets:
    enp1s0:
      dhcp: false
      addresses:
        - 192.168.0.10/24
      routes:
        - to: default
          via: 192.168.0.1
      nameservers:
        addresses:
        - 8.8.8.8
  version: 2

브리지모드 설정 샘플

브리지 모드는 아래와 같은 방식으로 설정 할 수 있습니다.
우분투 데스크탑 버전에서 기본적으로 사용되는 NetworkManager를 비활성하고 networkd로 변경하여 설정한 템플릿입니다.

network:
  version: 2
  renderer: networkd
  #renderer: NetworkManager
  bridges:
    br-eth:
      interfaces:
        - enp3s0
      dhcp4: false
      addresses:
        - 192.168.0.20/24
      routes:
        - to: default
          via: 192.168.0.1
      nameservers:
        addresses:
          - 192.168.0.10
  ethernets:
    enp3s0: {}

설정적용

sudo netplan apply

장애처리

우분투를 설치하고 패키지 업그레이드를 하지 않고 업데이트만 진행하였으나 일정시간이 흐른뒤 다시 netplan을 적용하면 아래와 같은 경고를 만날 수 있습니다.

특히 ovsdb-server.service경고가 불편하게 하는데 이것은 코드가 잘못된 버그로 확인 할 수 있습니다.
여러 커뮤니티나 웹자료에서 해당 패키를 설치하라고 하지만 해당 이슈의 근본적인 해결 방법은 아닙니다.

sudo vim /usr/share/netplan/netplan/cli/commands/apply.py

코드에 누락된 부분이 있어 발생하는 이슈입니다.

아래 내용으로 해당 부분을 확인하여 수정합니다.

@staticmethod
    def process_ovs_cleanup(config_manager, ovs_old, ovs_current, exit_on_error=True):  # pragma: nocover (autopkgtest)
        try:
            apply_ovs_cleanup(config_manager, ovs_old, ovs_current)
        except (OSError, RuntimeError) as e:
            logging.error(str(e))
            if exit_on_error:
                sys.exit(1)
        except OvsDbServerNotRunning as e:
            if utils.systemctl_is_active('ovsdb-server.service'):
                logging.warning('Cannot call Open vSwitch: {}.'.format(e))

적용 후 netplane apply를 하면 권한 경고만 발생하고 ovsdb패키지 관련 이슈는 삭제됩니다.

의문의 업그레이드

그렇다면 업그레이드는 왜 발생한 것인지 확인이 필요합니다.
업그레이드 하지 않은 netplan.io가 최초 우분투 설치와 다르게 업그레이드를 하면서 ovsdb-server.service is not running오류가 발생하였기 때문입니다.

unattended-upgrades

unattended-upgrades패키지가 자동으로 업그레이드를 실행해서 발생하는 이슈입니다.
Ubuntu 서버에서 보안 업데이트와 패치를 자동으로 설치하도록 도와주는 유용한 패키지입니다. 서버의 안정성과 보안을 유지하기 위해 업데이트는 필요하지만, 사용자도 모르게 업그레이드를 해버리는…

cat /var/log/unattended-upgrades/unattended-upgrades.log | grep "netplan.io"
grep "upgrade" /var/log/dpkg.log | grep netplan.io

기본 설정 확인

cat /etc/apt/apt.conf.d/50unattended-upgrades

자동 업그레이드 항목 확인

cat /etc/apt/apt.conf.d/20auto-upgrades

자동 기능이 비활성된 서버의 정보

자동 기능이 활성된 서버의 정보

netplane설정과 자동업그레이드 이슈로 발생하는 버그에대해서 알아보았습니다.