fdiskコマンドを使ってrootパーティションを拡張

初期構成

環境

Virtual Boxを使用し、仮想マシンとして構築
OSは「Alma Linux 8.7」

リソース
CPU 1 core
メモリ 2048 MB
HDD 20 GB
パーティション
/dev/sda1 1 GiB boot
/dev/sda2 19 GiB LVM

LVMのボリュームグループ名は、「Vol00」としている。

# fdisk -l
ディスク /dev/sda: 20 GiB, 21474836480 バイト, 41943040 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトディスクラベルのタイプ: dos
ディスク識別子: 0x0486444d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 41940991 39841792    19G 8e Linux LVM

ディスク /dev/mapper/Vol00-root: 17 GiB, 18245222400 バイト, 35635200 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

ディスク /dev/mapper/Vol00-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

最終構成

パーティション
/dev/sda1 1 GiB boot
/dev/sda2 19 GiB LVM
/dev/sda3(New) 追加容量(10 GiB) LVM
LVM構成
/dev/sda2 Vol00 root 17 GiB
/dev/sda2 Vol00 swap 2 GiB
/dev/sda3(New) Vol00 root 10 GiB

拡張していく

Virtual Box上でvdiファイルを「20 GB」→「30 GB」へ変更

パーティションを追加

# fdisk /dev/sda

fdisk (util-linux 2.32.1) へようこそ。ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。書き込みコマンドを使用する際は、注意して実行してください。

コマンド (m でヘルプ): n
パーティションタイプ   p   基本パーティション (2 プライマリ, 0 拡張, 2 空き)
   e   拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (3,4, 既定値 3): 3
最初のセクタ (41940992-62914559, 既定値 41940992): 
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (41940992-62914559, 既定値 62914559): 

新しいパーティション 3 をタイプ Linux、サイズ 10 GiB で作成しました。

追加したパーティションのタイプを「LVM」へ変更

コマンド (m でヘルプ): t
パーティション番号 (1-3, 既定値 3): 3
16 進数コード (L で利用可能なコードを一覧表示します): L

 024  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  隠し NTFS WinRE 82  Linux スワップ  c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  隠し OS/2 また  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 拡張領域  c7  Syrinx         
 5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ   
 6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ 
8  AIX             4e  QNX4.x 第2パー  8e  Linux LVM       df  BootIt         
 9  AIX 起動可能    4f  QNX4.x 第3パー  93  Amoeba          e1  DOS access     
 a  OS/2 ブートマネ 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad ハ ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC  
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f4  SpeedStor      
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      f2  DOS セカンダリ 
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fc  VMware VMKCORE 
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fd  Linux raid 自動
1c  隠し W95 FAT32  75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  隠し W95 FAT16  80  古い Minix      be  Solaris ブート  ff  BBT            

16 進数コード (L で利用可能なコードを一覧表示します): 8e

パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。
コマンド (m でヘルプ): w
パーティション情報が変更されました。ディスクを同期しています。
パーティションの確認
# fdisk -l
ディスク /dev/sda: 30 GiB, 32212254720 バイト, 62914560 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトディスクラベルのタイプ: dos
ディスク識別子: 0x0486444d

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ/
dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200 41940991 39841792    19G 8e Linux LVM
/dev/sda3       41940992 62914559 20973568    10G 8e Linux LVM

ディスク /dev/mapper/Vol00-root: 17 GiB, 18245222400 バイト, 35635200 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

ディスク /dev/mapper/Vol00-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

物理ボリュームの作成

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.
物理ボリュームの確認
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               Vol00
  PV Size               <19.00 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               1
  Allocated PE          4862
  PV UUID               sU2vQa-SoUU-Cd7t-m7TR-ZpYW-6u2Y-8hB9eA
   
  "/dev/sda3" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               RRcPqB-nlx2-iCEK-B6oX-VVRm-QqDY-AuqKi3

HDDの追加容量が「/dev/sda3」として追加されたことを確認できた。

ボリュームグループの拡張

# vgextend Vol00 /dev/sda3
  Volume group "Vol00" successfully extended
物理ボリュームの確認
# vgdisplay
  --- Volume group ---
  VG Name               Vol00
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <29.00 GiB
  PE Size               4.00 MiB
  Total PE              7423
  Alloc PE / Size       4862 / 18.99 GiB
  Free  PE / Size       2561 / 10.00 GiB
  VG UUID               X7qL1F-MtQy-yFh9-KnMY-lD3q-vjFp-25eeXw

Free領域として「10GiB」が追加されたことが確認できた。

論理ボリュームの拡張

論理ボリュームのパスを確認
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/Vol00/root
  LV Name                root
  VG Name                Vol00
  LV UUID                V7rXfc-Ms9B-BA3Q-KIAb-fH9I-H8yd-Nd0Zd9
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:40 +0900
  LV Status              available
  # open                 1
  LV Size                16.99 GiB
  Current LE             4350
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/Vol00/swap
  LV Name                swap
  VG Name                Vol00
  LV UUID                eMyjAZ-I0R1-2573-7nNv-FX77-I3jW-bOitZt
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:41 +0900
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

今回、拡張するのは「/dev/Vol00/root」

論理ボリュームを拡張
# lvextend -l +100%FREE /dev/Vol00/root
  Size of logical volume Vol00/root changed from 16.99 GiB (4350 extents) to <27.00 GiB (6911 extents).
  Logical volume Vol00/root successfully resized.
論理ボリュームの確認
# lvdisplay /dev/Vol00/root
  --- Logical volume ---
  LV Path                /dev/Vol00/root
  LV Name                root
  VG Name                Vol00
  LV UUID                V7rXfc-Ms9B-BA3Q-KIAb-fH9I-H8yd-Nd0Zd9
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-21 00:07:40 +0900
  LV Status              available
  # open                 1
  LV Size                <27.00 GiB
  Current LE             6911
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

ルートファイルシステムの拡張

今回、ルートファイルシステムは「xfs」なので「xfs_growfs」コマンドを使う。

# xfs_growfs /dev/Vol00/root
meta-data=/dev/mapper/Vol00-root isize=512    agcount=4, agsize=1113600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=4454400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4454400 to 7076864

最終確認

# df -h
ファイルシス           サイズ  使用  残り 使用% マウント位置
devtmpfs                 968M     0  968M    0% /dev
tmpfs                    987M     0  987M    0% /dev/shm
tmpfs                    987M  8.5M  978M    1% /run
tmpfs                    987M     0  987M    0% /sys/fs/cgroup
/dev/mapper/Vol00-root    27G  2.0G   26G    8% /
/dev/sda1               1014M  153M  862M   16% /boot
tmpfs                    198M     0  198M    0% /run/user/0

Arch Linux インストールしてみよう

Arch ISO のダウンロード

Arch Linux JP Project - ダウンロード

Virtual box での設定

  • cpu:1core
  • mem:1024MB
  • ディスク容量:8GB

※「EFI」を有効化

Arch Linux のインストール

キーボードの設定

# loadkeys jp106

パーティショニング

パーティション設定をするディスクを確認する

# lsblk
パーティションの構成
用途 容量 file system mount point
ESP 512MiB FAT32 /boot
スワップパーティション 1GiB SWAP swap
ルートパーティション 残り全部 ext4 /

[gdisk]コマンドにて「GPT」を操作

# gdisk /dev/sda

GPT fdisk (gdisk) version 1.0.7
Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present
Creating new GPT entries in memory.
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Command (? for help): n
Partition number : 1
First sector: (未入力でエンター)
Last sector: +512M
Hex code or GUID: ef00  (UEFIブート用なのでef00)
Command (? for help): n
Partition number: 2
First sector: (未入力でエンター)
Last sector: +1G
Hex code or GUID: 8200 (swap用なので8200)
Command (? for help): n
Partition number: 3
First sector: (未入力でエンター)
Last sector: (未入力でエンター)
Hex code or GUID: (未入力でエンター)
Command (? for help): w 
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed?: y 
OKls; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
パーティションの確認
# lsblk

ファイルシステムの作成

表に従って、パーティションごとにファイルシステムを作成する

# mkfs.vfat -F32 /dev/sda1
# mkswap /dev/sda2
# mkfs.ext4 /dev/sda3

ファイルシステムのマウント

作成したファイルシステムを「/mnt」ディレクトリ配下にマウントする
※"ブートパーティション"をマウントする前に"ルートパーティション"をマウントする必要がある

# mount /dev/sda3 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

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

# pacstrap /mnt base base-devel linux linux-firmware grub dosfstools efibootmgr netctl networkmanager dialog xfsprogs vi vim

fstabを作成

# genfstab -U /mnt >> /mnt/etc/fstab

arch-chrootの実行

# arch-chroot /mnt /bin/bash

Locale設定

"/etc/locale.gen"ファイルの編集
# vim /etc/locale.gen

...
en_US.UTF-8 UTF-8 (コメントアウトを解除)
...
ja_JP.UTF-8 UTF-8 (コメントアウトを解除)
...
「locale」の生成
# locale-gen
環境変数を設定
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# export LANG=en_US.UTF-8 

タイムゾーンを設定

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ホスト名の編集

"/etc/hostname"ファイルへの書き込み
# echo "ホスト名を入力" > /etc/hostname
"/etc/hsots"ファイルの編集
# vim /etc/hosts

127.0.0.1  localhost.localdomain localhost "ホスト名"
::1  localhost.localdomain localhost "ホスト名"

rootユーザのパスワード設定

# passwd

GRUBブートローダー)のインストール

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck
# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi
# grub-mkconfig -o /boot/grub/grub.cfg

再起動

# exit
# shutdown -r now

IPアドレス設定

[NetworkManager]を起動、永続化させる

# systemctl start NetworkManager.service
# systemctl enable NetworkManager.service

ユーザの追加

# useradd -m -G wheel -s /bin/bash test_user

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させる必要がある。