Ubuntu Server で OpenVPNサーバを構築する

はじめに

今回構築する OpenVPNサーバ は、以前に下記リンクの備忘録を書いているため、説明等の詳細は割愛させていただきます。
tryota.hatenablog.com

パッケージのインストール

# apt install openvpn easy-rsa

OpenVPN Server

サーバ証明書の発行

サーバ証明書を発行するのに必要なものは、以下になる。

  • 公開鍵ペア(public.key , private.key)
  • 証明書署名要求(certificate signing request)
  • DHパラメータ(pemファイル)

証明書発行用のディレクトリを作成する

ubuntu には、専用コマンド make-cadir があるので、これを使用してディレクトリを作成する。

# make-cadir /etc/openvpn/easy-rsa

カレントディレクトリを移動する

# cd /etc/openvpn/easy-rsa

作成したディレクトリの配下にファイルとディレクトリが作成されたことを確認する。

# ls
easyrsa  openssl-easyrsa.cnf  vars  x509-types

証明書作成用の環境変数を編集する

vars ファイルを編集する

# vim vars

varsファイルの以下の値を正しく編集する

set_var EASYRSA_REQ_COUNTRY     "JP"
set_var EASYRSA_REQ_PROVINCE    "Hyogo"
set_var EASYRSA_REQ_CITY        "Akashi"
set_var EASYRSA_REQ_ORG         "OpenVPNServer"
set_var EASYRSA_REQ_EMAIL       "me@example.net"
set_var EASYRSA_REQ_OU          "My Organizational Unit"

PKIを作成する

Public Key Infrastractur (公開鍵基盤)のフォルダを作成する。

# ./easyrsa init-pki

認証局を作成する

CA(Certificate Authority)の作成をする。

./easyrsa build-ca

パスフレーズとCommonNameを問われるので、それとなく適当に入力

Enter New CA Key Passphrase:test
Re-Enter New CA Key Passphrase:test

Common Name (eg: your user, host, or server name) [Easy-RSA CA]:OpenvpnSV

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • ca.crt
  • private/ca.key

サーバ秘密鍵と証明書署名要求を作成する

※「server」の部分は任意。秘密鍵と証明書署名要求ファイルの名前に使われる。

# ./easyrsa gen-req server

Enter PEM pass phrase:test
Verifying - Enter PEM pass phrase:test

Common Name (eg: your user, host, or server name) [server]:opoenvpnSV

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/pki/private/server.key

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • reqs/server.req
  • private/server.key

サーバ証明書の作成

サーバ証明書に署名する際は、引数を先ほど作成した証明書署名要求「server.req」を指定する。(拡張子は不要)

# ./easyrsa sign-req server server

Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:test

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • issued/server.crt

DHパラメータの生成

Diffie-Hellman 鍵交換は、暗号鍵を安全に転送するために使用される方法です。

# ./easyrsa gen-dh

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • dh.pem

TLS-Authキーの生成

openvpnでは、セキュリティを向上させるために TLS-Authキー(ta.key)を実装している。

# openvpn --genkey --secret ta.key

作成されたことを確認する。
easy-rsa フォルダ内に以下が作成されていればOK。

  • ta.key

OpenVPNサーバの構築に必要なファイルを移動する

必要なファイルは以下のものになる。

  • ca.crt
  • server.crt
  • server.key
  • dh2048.pem
  • ta.key

上記のファイルを「/etc/openvpn/server/」ディレクトリの配下にコピーする。

OpenVPNサーバの構成ファイルをコピーする

デフォルトのままだと、openvpnサーバの構成ファイルは「/etc/openvpn」フォルダには存在しないため、openvpnパッケージに付属している構成ファイルのテンプレートをコピーしてくる必要がある。

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
# cd /etc/openvpn/server
# gunzip server.conf.gz

OpenVPNサーバの構成ファイルを編集する

# vim server.conf

以下の行を編集・追記する
78 ca ca.crt
79 cert server.crt
80 key server.key
85 dh dh2048.pem
143 push "route 192.168.1.0 255.255.255.0" #追加
245 tls-auth ta.key 0

OpenVPN Client

クライアント秘密鍵と証明書署名要求を作成する

# cd /etc/openvpn/easy-rsa
# ./easyrsa gen-req client nopass

Common Name (eg: your user, host, or server name) [client_test]:test

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client_test.req
key: /etc/openvpn/easy-rsa/pki/private/client_test.key

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • reqs/client_test.req
  • private/client_test.key

クライアント証明書を作成する

クライアント証明書に署名する際は、引数を先ほど作成した証明書署名要求「client_test.req」を指定する。(拡張子は不要)

# ./easyrsa sign-req client client_test

Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:test
Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client_test.crt

作成されたことを確認する。
pki フォルダ内に以下が作成されていればOK。

  • issued/client_test.crt

OpenVPNクライアント用に必要なファイルを移動する

  • ca.crt
  • client_test.key
  • client_test.crt
  • ta.key

上記のファイルを「/etc/openvpn/client/」ディレクトリの配下にコピーする。
(ca.crt , ta.key はコピーしなくてもよい)
「/etc/openvpn/client/」ディレクトリが無ければ、作成する

OpenVPNクライアントの構成ファイルをコピーする

デフォルトのままだと、openvpnクライアントの構成ファイルは「/etc/openvpn」フォルダには存在しないため、openvpnパッケージに付属している構成ファイルのテンプレートをコピーしてくる必要がある。

# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/
# cd /etc/openvpn/client

OpenVPNクライアントの構成ファイルを編集する

# vim client.conf

以下の行を編集する
42 remote {openvpnサーバのホスト名(又はIPアドレス)} 1194
61 user nobody #[;]を外す
62 group nogroup #[;]を外す

認証局の証明書を追記
# ca.crt  コメントアウトする
<ca>
-----BEGIN CERTIFICATE-----
MII.....
......AD
-----END CERTIFICATE-----
</ca>
クライアント証明書を追記
# cert client.crt  コメントアウトする
<ca>
-----BEGIN CERTIFICATE-----
MII.....
......=F
-----END CERTIFICATE-----
</ca>
クライアント秘密鍵を追記
# key client.key  コメントアウトする
<key>
-----BEGIN PRIVATE KEY-----
MII.....
......YR
-----END PRIVATE KEY-----
</key>
TLS認証のクライアントとして認識させるための設定

以下を先ほどの下あたりに追記する

key-direction 1
tls-autキーを追記する
 # tls-auth ta.key 1  コメントアウトする
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
42....
......GT
-----END OpenVPN Static key V1-----
</tls-auth>

OpenVPNクライアントの構成ファイルの拡張子を変更する

# mv client.conf client.ovpn

OpenvpnサーバでIPフォワーディングの設定をする

# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf
# sysctl -p

firewall の無効化

設定が面倒なので、[ufw.service]を無効化する

# systemctl stop ufw.service
# systemctl disable ufw.service

クライアント用のOpenVPN構成ファイルを移動する

先ほど作成した「/etc/openvpn/client/client.ovpn」ファイルをVPNクライアントとして使用したい端末に移動させる。
その際、クライアント側にOpenVPNが使用できるソフトウェアが必要になる。

Ubuntu server DNSサーバの構築

  • はじめに
  • 要件
  • 構築
    • BIND とは
    • インストール
    • ディレクトリの移動
    • 設定ファイルの編集
    • オプションファイルの編集
    • ドメイン定義ファイルの編集
    • ゾーンファイルの編集
  • サービスの再起動
  • 追記(2021/04/19)

はじめに

今回は、Ubuntu server 20.04 を使用し、DNSサーバを構築していきます。
外部向けには作らず、内部向けのサーバとなります。

要件

VirtualBox

  • OS:Ubuntu server 20.04
  • CPU:1
  • メモリ:1024MB
  • HDD:10GB(可変サイズ)
  • ネットワーク:ブリッジアダプタ

DNSサーバ

構築

今回は、DNSサーバの構築のためVirtualBox関連は省く。

BIND とは

BIND(Berkeley Internet Name Domain) とは、Unix / Linux系のサーバにおいてDNSサーバを構築するためのデファクトスタンダードになりつつあるDNSサーバソフトウェア。
現在のバージョンは、バージョン9(BIND9)。

インストール

apt install -y bind9 bind9utils

ディレクトリの移動

cd /etc/bind/

設定ファイルの編集

BIND9 が参照するファイルを定義する。

vim named.conf

-------------以下、confファイル-----------------

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

// ゾーンファイルを追加
include "/etc/bind/named.conf.zones";

オプションファイルの編集

問い合わせを許可するネットワーク、名前解決問い合わせのフォワード先、再起問い合わせの許可等の設定をする。

vim named.conf.options

-------------以下、optionファイル-----------------

// ACL(Access Contorol List)で、ネットワークの範囲を定義する。
acl internal-network {
        192.168.1.0/24;
};

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // 名前解決ができなかった場合の転送先 
         forwarders {
                8.8.8.8;
        };

       // 問い合わせを受け付けるネットワークおよびホスト
        allow-query {
                localhost;
                internal-network;
        };

       // 再起問い合わせを許可(キャッシュDNSサーバ(リゾルバ)として動作させる)。無効にする場合は、「none」。
        recursion yes;

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { any; };
};

ドメイン定義ファイルの編集

vim named.conf.zone

-------------以下、ドメイン定義-----------------

zone "infra-test.work" IN {       // 「" "」で指定したものがドメインになる。
        type    master;
        file    "/etc/bind/infra-test.work.lan";
};

zone "1.168.192.in-addr.arpa" IN {
        type    master;
        file    "/etc/bind/db.1.168.192";
};

ゾーンファイルの編集

vim infra-test.work.lan

-------------以下、正引きのゾーンファイル-----------------

$TTL 86400
@       IN      SOA     dns.infra-test.work. root.infra-test.work. (
        2021013001      ;Serial
        3600            ;Refresh
        1800            ;Retry
        604800          ;Expire
        865400          ;Minimum TTL
)

        IN      NS      dns.infra-test.work.
dns     IN      A       192.168.1.254
www     IN      A       192.168.1.101


vim db.1.168.192

-------------以下、逆引きのゾーンファイル-----------------

$TTL 86400
@       IN      SOA     dns.infra-test.work. root.infra-test.work. (
        2021013001      ;Serial
        3600            ;Refresh
        1800            ;Retry
        604800          ;Expire
        86400           ;Minimum TTL
)

        IN      NS      dns.infra-test.work.
254     IN      PTR     dns.infra-test.work.
101     IN      PTR     www.infra-test.work.

サービスの再起動

systemctl restart named
systemctl enable named
続きを読む

Ubuntu Server 20.04 インストール

はじめに

今までは CentOS8 を使ってサーバを構築してきましたが、CentOS が使えなくなる
ということで代替えのOSとして「Ubuntu server」を使うことにしました。

環境

メインOS:
 Windows10 Home
ハイパーバイザー:
 ホストOS型ハイパーバイザーソフトウェア VirtualBox バージョン 6.1.16

今回構築する環境設定

OS:
 Ubuntu server 20.04
メモリサイズ:
 1024MB (default)
仮想マシンのサイズ(仮想マシンが使用できるディスク容量):
 10GB
作成するディスクのタイプ:
 可変サイズ
ネットワークアダプタ
 ブリッジアダプタ

インストール

Ubuntu server のインストール

https://jp.ubuntu.com/download
CANONICALubuntu ダウンロードサイトより Ubuntu Server を選択し、ダウンロードする。

VirtualBoxUbuntu Server のインスタンスを作成

  • 作成内容は「環境-今回構築する環境設定」の内容で構築する。
  • ここに記載していないものについては、デフォルト設定のまま。

いざ、インストール!

言語設定
  • Japanase が存在しないため、とりあえず English を選択。

f:id:Tryota:20210129215527p:plain

アップデート
  • アップデートせずに次へ。

f:id:Tryota:20210129215541p:plain

キーボードのレイアウトを設定
  • 2か所とも Japanase を選択。

f:id:Tryota:20210129215553p:plain
f:id:Tryota:20210129215605p:plain

ネットワーク設定
  • VirtualBox を使用した場合、仮想マシンのインタフェースは「enp0s3」となっているはず。
  • 設定するインタフェースを選択し、今回は「Edit IPv4」のみを設定。
  • 「Automatic(DHCP) 」->「Manual」を選択。
  1. Subnet 仮想マシンを配置するネットワークを指定。
  2. Address 仮想マシンIPアドレスを設定。
  3. Gateway デフォルトゲートウェイを設定。
  4. Name Server 名前解決の問い合わせ先DNSサーバを指定。

f:id:Tryota:20210129215615p:plain
f:id:Tryota:20210129215622p:plain
f:id:Tryota:20210129215628p:plain

プロキシサーバの指定
  • 特になし。

f:id:Tryota:20210129215637p:plain

ミラーサーバの設定
  • パッケージの取得先サーバの設定。
  • 日本のミラーサーバ(default)で特に問題なし。

f:id:Tryota:20210129215646p:plain

ストレージの設定
  • 今回はただのテスト環境用のサーバのため、特に設定はしない。

f:id:Tryota:20210129215653p:plain
f:id:Tryota:20210129215702p:plain
f:id:Tryota:20210129215709p:plain

ユーザの設定
  1. Your name PC名(コンピュータ名)
  2. Your server's name ホスト名
  3. Pick a username ユーザ
  4. Choose a password ユーザのパスワード

f:id:Tryota:20210129215717p:plain

OpenSSH server のインストール
  • インストール完了後、teraterm等から操作する場合はチェックを入れる。

(インストール完了後にも「openssh」をインストールすることができるため、どちらでもいい)
f:id:Tryota:20210129215725p:plain

再起動
  • インストール完了後に「reboot」を選択し、再起動する。

f:id:Tryota:20210129215734p:plain
f:id:Tryota:20210129223234p:plain

おわりに

自分は、Ubuntu どころか Linux 自体そんなに詳しくはないので、間違っている箇所などあればご指摘をお願いします。

とりあえず、これまで CentOS8 で構築していたサーバに関しては
もう一度 Ubuntu server で構築していこうと思います。

Ubuntu20.04でDNSの設定を変更する

ubuntu20.04 LTS server で DNSの問い合わせ先を変更する

今までは、CentOS7,8 を使用していたため「/etc/resolv.conf」を変更するものだと思っていたが、
Ubuntu 20.04 ではどうやら違うらしい。

Netplan とは

ubuntu では、ネットワークの設定(IP address , default gateway , nameserver ...etc)は、「Netplan」というネットワーク構成ユーティリティを使用することを推奨してるっぽい。
以下、Canonical公式ページ
netplan.io

CentOSでよくお世話になった、「NetworkManager」や「systemd-networkd」デーモンのフロントエンドで動作する構成ファイルみたいな感じ。

Netplan 使用方法

「Netplan」の構成ファイルは、「/etc/netplan」ディレクトリにあります。
Ubuntu 20.04 server では、デフォルトで「00-installer-config.yaml」ファイルが存在していた。
中身はこんな感じ。
ファイルの拡張子に「yaml」がついている通り、Netplanでは「yaml」形式で記述する

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      addresses:
      - 192.168.1.101/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
        - 192.168.1.1
    enp0s8:
      addresses:
      - 172.19.0.101/24
      nameservers:
        addresses:
        - 172.19.0.254
  version: 2

nameserver の変更

今回は、DNSサーバを別途ローカル内に構築し、それに対して問い合わせを行うように設定する。

network:
  ethernets:
    enp0s3:
      addresses:
      - 192.168.1.101/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
         [192.168.1.254,8.8.8.8,4.4.4.4]
    enp0s8:
      addresses:
      - 172.19.0.101/24
      gateway4: 172.19.0.254
      nameservers:
        addresses:
        - 172.19.0.254
  version: 2

以上のように設定すればOK。

設定の反映

netplan apply

これで設定が反映され、シャットダウンしても設定は残るはず。

Kali Linux にIPアドレスの設定をする

はじめに

普段は CentOS を使用しているが、セキュリティ関連について勉強をしたかったため、
Kali Linux を使用してみることにした。

CentOS とは違う

分かっていたことだが、設定方法が全く違う。
※NetworkManager で設定する方法もあるかもしれないが、調べても出てこなかったので諦めた。

インストール

VirtualBoxのインストール

以下のサイトよりダウンロード
方法については、その他のサイトを参照ください。
www.virtualbox.org

Kali Linuxのインストール

以下のサイトよりダウンロード
www.kali.org
自分は一番上に記載されている
Kali Linux 64-Bit (Installer)
をインストールした。
一応、VirtualBoxVMware WorkStation 用のOVAファイルも用意されている。

環境の準備

VirtualBox 上でKali Linuxで使用するインタフェースを選択

自分の場合は、「NAT(デフォルト)」と「内部ネットワーク」を設定した。

NAT

f:id:Tryota:20201219165456p:plain

内部ネットワーク

f:id:Tryota:20201219165425p:plain

IPアドレスの設定

上記で書いた「VirtulaBox上の設定」だけでは、Kali Linuxは認識してくれなかった。
f:id:Tryota:20201219171204p:plain

Kali Linux での設定

Kali Linux では、インタフェースの設定は「interfaces」ファイルを書き換える必要がある。

$ sudo vim /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#-------以下、追加--------
# NAT network interface
allow-hotplug eth0 #eth0 : VirtualBoxのアダプタ1
iface eth0 inet dhcp #IPアドレス自動設定

# Local network interface
allow-hotplug eth1 #eth1 : VirtualBoxのアダプタ2
iface eth1 inet static #IPアドレス静的指定
address 172.19.0.10
netmask 255.255.255.0

上記設定後、Kali Linux を再起動

$ reboot 

再起動後に確認してみると、IPアドレスが設定されていた。
f:id:Tryota:20201219192023p:plain

追記(2021/1/6)

interface の設定で
「allow-hotplug ...」で設定した後、

systemctl restart networking.service
で設定内容を反映させることは\も可能だが、その場合、
ifup eth0
ifup eth1
のコマンドを実行し、interfaceをupさせる必要がある。

HAProxy+keepalived でwebサーバを負荷分散

HAProxy とは

前回、LVS + keepalived で負荷分散構成を作成したが、LVS は「Layer 4:トランスポート層」で動作するのに対して
HAProxy は「Layer 7:アプリケーション層」もしくは「Layer 4:トランスポート層」で動作させることができる。

※構築がメインのため、説明はしない。以下参照。
1.2. haproxy Red Hat Enterprise Linux 7 | Red Hat Customer Portal

構成

以下、画像の構成で構築する。
f:id:Tryota:20201203212155p:plain

  • 踏み台サーバ

 OS:CentOS8

  • ロードバランサ

 OS:CentOS8
 冗長化keepalived
 負荷分散:HAProxy

  • webサーバ

 OS:CentOS8
 ソフトウェア:Apache

※踏み台サーバ・webサーバは構築済みとする。

ロードバランサ の構築

keepalived の設定

インストール

[root@haproxy01 ~]# dnf install -y keepalived

設定

[root@haproxy01 ~]# cd /etc/keepalived/
[root@haproxy01 keepalived]# mv keepalived.conf keepalived.conf.orig
[root@haproxy01 keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id HAProxy_server
}

vrrp_instance VI_1 {
    state MASTER
 # VRRPパケットを受信・送信するインタフェース
    interface enp0s8
    virtual_router_id 100
 #1号機と2号機で数値を変える(activeにしたい方を大きくする)
    priority 100    
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.0.200 dev enp0s8
        172.16.0.200 dev enp0s9
    }
}

サービスの起動

[root@haproxy01 ~]# systemctl start keepalived.service
[root@haproxy01 ~]# systemctl enable keepalived.service

HAProxy の設定

インストール

[root@haproxy01 ~]# dnf install -y haproxy

設定

[root@haproxy01 ~]# cd /etc/haproxy/
[root@haproxy01 haproxy]# mv haproxy.cfg haproxy.cfg.orig
[root@haproxy01 haproxy]# vim haproxy.cfg
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend http-in
        #80/tcp ポートで受け付ける
        bind *:80
        #バックエンドを定義
        default_backend backend_server
        #X-Forwarded-For ヘッダーを渡す
        option          forwardfor
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend backend_server
        #ラウンドロビン方式で負荷分散
        balance roundrobin
        #バックエンドサーバを定義
        server  node1   172.16.0.11:80  check    #[check]オプションにより、バックエンドサーバの死活監視を行う
        server  node2   172.16.0.12:80  check

サービスの起動

[root@haproxy01 ~]# systemctl start haproxy.service
[root@haproxy01 ~]# systemctl enable haproxy.service

firewalld の無効化

[root@haproxy01 haproxy]# systemctl stop firewalld.service
[root@haproxy01 haproxy]# systemctl disable firewalld.service

負荷分散の検証

踏み台サーバからロードバランサのVIPへHTTPリクエストを送信

[root@bastion ~]# curl 192.168.0.200
 test_web01
[root@bastion ~]# curl 192.168.0.200
test_web02

負荷分散されていた。

Ubuntu_20.04_LTS でIPアドレスを変更する

NetworkManager で設定しない

CentOS8 では、NetworkManager を使ってIPアドレスを設定したが、Ubuntu_20.04 ではどうやら違うらしい。
LPIC の試験では、「/etc/network/interfaces」という設定ファイルを変更する。みたいな感じで書かれていたが、そもそも Ubuntu_20.04 にはそんなファイルが存在していなかった。

rev1a@rev1a-VirtualBox:~$ ls -al /etc/network/
合計 32
drwxr-xr-x 6 root root 4096 8月 8 09:29 .
drwxr-xr-x 129 root root 12288 11月 23 22:17 ..
drwxr-xr-x 2 root root 4096 8月 8 09:31 if-down.d
drwxr-xr-x 2 root root 4096 8月 8 09:31 if-post-down.d
drwxr-xr-x 2 root root 4096 8月 8 09:31 if-pre-up.d
drwxr-xr-x 2 root root 4096 8月 8 09:31 if-up.d

YAML ファイルを弄る

既存YAMLファイルの無効化

どうやら ubuntu_20.04 では、「/etc/netplan/」内にある yamlファイルを編集するらしい。(詳しくは知らない。)
ということで、まずデフォルトで存在している yamlファイルを無効にする。

rev1a@rev1a-VirtualBox:~$ sudo mv /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.disable
※デフォルトで存在しているファイルは、削除しても良いらしいが、なんかこわいのでファイル名を変更して、yamlファイルとして認識されないようにする。

新規YAMLファイルの作成

新規にyamlファイルを作成し、IPアドレス等々を設定する。

rev1a@rev1a-VirtualBox:~$ sudo vi /etc/netplan/99-netcfg.yaml
network:
ethernets:
# ネットワークインターフェース名
enp0s3:
dhcp4: no
# IPアドレス/サブネットマスク
addresses: [192.168.1.77/24]
# デフォルトゲートウェイ
gateway4: 192.168.1.1
nameservers:
# 参照するネームサーバー
addresses: [192.168.1.1]
dhcp6: no
version: 2
設定を反映する。
rev1a@rev1a-VirtualBox:~$ sudo netplan apply 
設定されたか確認する。
rev1a@rev1a-VirtualBox:~$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:63:90:a5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.77/24 brd 192.168.1.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 240d:1e:149:a400:a00:27ff:fe63:90a5/64 scope global tentative dynamic mngtmpaddr noprefixroute
valid_lft 6172sec preferred_lft 6172sec
inet6 fe80::3767:d144:d0a2:78dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever