VyOS1.5 OpenVPN設定
OpenVPNと証明書に関する公式ドキュメント
https://docs.vyos.io/en/latest/configuration/interfaces/openvpn.html
https://docs.vyos.io/en/latest/configuration/pki/index.html
基本のコマンド
設定の確認 $ show configuration $ show configuration commands 設定モードに移行 $ configure 設定の追加/削除 # set *** # delete *** 設定反映 # commit 設定保存 # save
基本設定
# set service ssh port '22' # set system time-zone Asia/Tokyo # set interfaces ethernet eth0 address '192.168.0.102/24' # set protocols static route 0.0.0.0/0 next-hop 192.168.0.1
証明書の作成
# run generate pki dh install dh-1 # run generate pki openvpn shared-secret install shared-1 # run generate pki ca install ca-1 # run generate pki certificate sign ca-1 install srv-1 # run generate pki certificate sign ca-1 install client-1 ※クライアント証明書は必要な数だけ作成 ※show configuration commands コマンドで証明書内容やキー内容を確認可能
OpenVPN設定
# set interfaces openvpn vtun0 encryption cipher 'aes256' # set interfaces openvpn vtun0 hash 'sha512' # set interfaces openvpn vtun0 mode 'server' # set interfaces openvpn vtun0 local-port '1195' # set interfaces openvpn vtun0 protocol 'tcp-passive' # set interfaces openvpn vtun0 server subnet '192.168.100.0/24' # set interfaces openvpn vtun0 openvpn-option '--client-to-client' # set interfaces openvpn vtun0 openvpn-option '--mssfix 1280' # set interfaces openvpn vtun0 use-lzo-compression # set interfaces openvpn vtun0 tls ca-cert ca-1 # set interfaces openvpn vtun0 tls certificate srv-1 # set interfaces openvpn vtun0 tls dh-params dh-1
NAT設定
# set nat destination rule 100 destination address '192.168.100.100' # set nat destination rule 100 inbound-interface name vtun0 # set nat destination rule 100 translation address '192.168.0.100' # set nat destination rule 101 destination address '192.168.100.101' # set nat destination rule 101 inbound-interface name vtun0 # set nat destination rule 101 translation address '192.168.0.101' # set nat destination rule 102 destination address '192.168.100.102' # set nat destination rule 102 inbound-interface name vtun0 # set nat destination rule 102 translation address '192.168.0.102' # set nat destination rule 103 destination address '192.168.100.103' # set nat destination rule 103 inbound-interface name vtun0 # set nat destination rule 103 translation address '192.168.0.103' # set nat destination rule 104 destination address '192.168.100.104' # set nat destination rule 104 inbound-interface name vtun0 # set nat destination rule 104 translation address '192.168.0.104' # set nat destination rule 105 destination address '192.168.100.105' # set nat destination rule 105 inbound-interface name vtun0 # set nat destination rule 105 translation address '192.168.0.105' # set nat destination rule 106 destination address '192.168.100.106' # set nat destination rule 106 inbound-interface name vtun0 # set nat destination rule 106 translation address '192.168.0.106' # set nat destination rule 107 destination address '192.168.100.107' # set nat destination rule 107 inbound-interface name vtun0 # set nat destination rule 107 translation address '192.168.0.107' # set nat destination rule 108 destination address '192.168.100.108' # set nat destination rule 108 inbound-interface name vtun0 # set nat destination rule 108 translation address '192.168.0.108' # set nat source rule 100 source address '192.168.100.0/24' # set nat source rule 100 translation address '192.168.0.107' # set nat source rule 100 outbound-interface name eth0
Ubuntu22 KVM環境の構築
日本語化
# apt -y install language-pack-ja-base language-pack-ja # localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" # source /etc/default/locale
パッケージインストール
# apt install qemu-kvm libvirt-daemon libvirt-daemon-system libvirt-clients virtinst libosinfo-bin bridge-utils ovmf
ブリッジ作成
# vi /etc/netplan/01-network-manager-all.yaml network: version: 2 renderer: networkd ethernets: enp0s1: # ここを自分の実際のデバイスに置き換える dhcp4: no bridges: br0: interfaces: [enp0s1] # ここも自分の実際のデバイスに置き換える addresses: [192.168.1.2/24] # 任意の固定IPアドレスを設定 gateway4: 192.168.1.1 # ゲートウェイのIPを設定 nameservers: addresses: [8.8.8.8, 8.8.4.4] # DNSサーバーのIPを設定 注意: enp0s1 や br0 などのインターフェース名は、自分の環境に合わせて変更してください。 # sudo netplan apply # systemctl restart systemd-networkd
AlmaLinux9 Windows11をKVMでインストール
事前準備
Windows11のダウンロード
https://www.microsoft.com/en-us/software-download/windows11 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
必要パッケージのインストール
# dnf install edk2-ovmf # dnf install swtpm swtpm-tools
Windows11のインストール
仮想ディスクの作成
# mkdir /var/lib/libvirt/images/win11 # cd /var/lib/libvirt/images/win11 # qemu-img create -f qcow2 win11pro.qcow2 40G
OVMFファイルのコピー
# cp /usr/share/edk2/ovmf/OVMF_VARS.secboot.fd . # cp /usr/share/edk2/ovmf/OVMF_CODE.secboot.fd .
インストール
# virt-install \ --name Windows11pro \ --ram 4096 \ --disk path=/var/lib/libvirt/images/win11/win11pro.qcow2 \ --cpu host-passthrough \ --vcpus=4 \ --os-variant=win11 \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0,password=foobar,port=5907,keymap=en-us \ --video virtio \ --cdrom /mnt/storage-2/temp/Win11_22H2_Japanese_x64v2.iso \ --features kvm_hidden=on,smm=on \ --tpm backend.type=emulator,backend.version=2.0,model=tpm-tis \ --boot loader=/home/images/OVMF_CODE.secboot.fd,loader_ro=yes,loader_type=pflash,nvram_template=/home/images/OVMF_VARS.secboot.fd
※VNCクライアントで接続し、インストールを行う
mdadm RAID5構築方法
mdadm動作試験用パーティションの作成
# parted -s -a optimal /dev/vdb -- mklabel gpt mkpart p1 ext4 0G 1G mkpart p2 ext4 1G 2G mkpart p3 ext4 2G 3G mkpart p4 ext4 3G 4G
RAID5作成
# mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/vdb1 /dev/vdb2 /dev/vdb3 # mdadm --detail /dev/md1 # mkfs.ext4 /dev/md1 # mount /dev/md1 /mnt # df -h # umount /mnt
故障とディスク交換のシミュレーション
# mdadm --manage /dev/md1 --fail /dev/vdb1 # mdadm --manage /dev/md1 --remove /dev/vdb1 # mdadm --manage /dev/md1 --add /dev/vdb1 # mdadm --detail /dev/md1
ディスク追加
# mdadm --manage /dev/md1 --add /dev/vdb4 # mdadm --detail /dev/md1 ※スペアディスクとして追加される。RAIDディスクが故障するとスペアディスクがRAIDディスクに組み込まれる。 # mdadm --grow --raid-devices=4 /dev/md1 # mdadm --detail /dev/md1
ディスク削除
※増やすのは簡単だが削除は大変なので、一度別ディスクにバックアップしてからRAIDを組み直してデータを書き戻した方が無難
RAIDアレイ構成情報のバックアップ
# mdadm --detail --scan /dev/md1 > /etc/mdadm.conf
RAIDアレイの削除と復元
# mdadm --stop /dev/md1 # mdadm --detail /dev/md1 # mdadm --assemble --scan --verbose # mdadm --detail /dev/md1 ※別システムへの移行時等に使用 ※RAIDディスク上に保存された構成情報を自動で読み取り、RAIDアレイを自動で再構築する
RAIDアレイとデータの完全削除
# mdadm --stop /dev/md1 # mdadm --zero-superblock /dev/vdb1 # mdadm --zero-superblock /dev/vdb2 # mdadm --zero-superblock /dev/vdb3 # mdadm --zero-superblock /dev/vdb4
AlmaLinux9 KVM設定(初期設定+GPUパススルー)
OS設定
ホスト名の変更
# hostnamectl set-hostname AlmaLinux9-kvm-host
SELinuxの無効化
# vi /etc/selinux/config SELINUX=disabled # reboot
firewalldの無効化
# systemctl stop firewalld # systemctl disable firewalld
KVM設定
パッケージインストール
# dnf update # dnf install qemu-kvm libvirt virt-install
ブリッジの作成
# nmcli device # nmcli connection show # nmcli connection add type bridge ifname br0 # nmcli device # nmcli connection show # nmcli connection modify bridge-br0 ipv4.addresses 192.168.0.90/24 ipv4.method manual # nmcli connection modify bridge-br0 ipv4.gateway 192.168.0.1 # nmcli connection modify bridge-br0 ipv4.dns 8.8.8.8 # nmcli connection add type bridge-slave ifname enp4s0 master br0 # nmcli device # nmcli connection show # nmcli connection del enp4s0 ; reboot ブリッジへのインターフェース登録状態の確認 # nmcli c show bridge-slave-enp4s0 | grep master
仮想マシンの作成
OS種別の確認
# osinfo-query os
Windowsのインポート(EFI)
# virt-install \ --boot uefi \ --name Windows10-uefi \ --vcpus=4 \ --cpu host-passthrough,cache.mode=passthrough \ --ram=4096 \ --os-type=windows \ --os-variant=win10 \ --disk=/mnt/storage-2/temp//Windows10-uefi_2.qcow2 \ --import \ --network bridge=br0 \ --graphics vnc,password=foobar,port=5908,listen=0.0.0.0,keymap=en-us
Linuxのインポート
virt-install \ --name Ubuntu16-tuner \ --vcpus=4 \ --cpu host-passthrough,cache.mode=passthrough \ --ram=2048 \ --os-type=linux \ --os-variant=ubuntu16.04 \ --disk=/var/lib/libvirt/images/Ubuntu16-tuner.qcow2 \ --import \ --network bridge=br0 \ --graphics vnc,password=foobar,port=5901,listen=0.0.0.0,keymap=en-us
PCIパススルー設定
BIOS設定
BIOSで「Intel VT-d」「I/O Virtualization Technology」などの名前の設定項目を有効にする。
IOMMU有効化
# vi /etc/default/grub GRUB_CMDLINE_LINUX の末尾に「intel_iommu=on」もしくは「amd_iommu=on」を追加 # grub2-mkconfig -o /boot/grub2/grub.cfg # reboot # dmesg | grep -e DMAR -e IOMMU [ 0.000000] Intel-IOMMU: enabled
ホストのドライバ読み込み無効化設定
・grub に nomodeset を追加
# vi /etc/default/grub GRUB_CMDLINE_LINUX="vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 intel_iommu=on nomodeset" # grub2-mkconfig -o /boot/grub2/grub.cfg ・ドライバをブラックリストに追加 # lspci -v -d 1002:68f9 | grep Kernel Kernel driver in use: radeon # lspci -v -d 1002:aa68 | grep Kernel Kernel driver in use: snd_hda_intel # lsmod | grep radeon drm 297829 2 ttm,drm_kms_helper,radeon # vi /etc/modprobe.d/blacklist.conf blacklist drm blacklist radeon blacklist snd-hda-intel # reboot
NVIDIAグラボをパススルーする場合の error 43 対策
・仮想マシン設定に下記を追加する
<features> <hyperv> ... <vendor_id state='on' value='1234567890ab'/> ... </hyperv> ... <kvm> <hidden state='on'/> </kvm> </features>
PCIパススルー設定
# lspci 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series] 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300 Series] # lspci -n 01:00.0 0300: 1002:68f9 01:00.1 0403: 1002:aa68
<hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0' bus='0' slot='0x1a' function='0'/> </source> </hostdev> ※lspci で追加したいデバイスが 01:00.0 の場合、bus='1' slot='0' function='0' を指定する。
Ubuntu22.04 docker と docker compose のインストール
dockerのインストール
$ sudo apt update $ sudo apt install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt update $ sudo apt-cache policy docker-ce $ sudo apt install docker-ce $ sudo systemctl status docker $ sudo usermod -aG docker username ※dockerグループにユーザを追加して、sudoなしでdockerコマンドを実行できるようにする $ docker run hello-world
docker compose のインストール
$ mkdir -p ~/.docker/cli-plugins/ $ curl -SL https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose $ chmod +x ~/.docker/cli-plugins/docker-compose $ docker compose version
Ubuntu22.04 FFmpeg + AviSynth + JoinLogoScp + delogo でSVT-AV1対応自動CMカットエンコード環境構築
avisynth+ のインストール
# apt update # apt install build-essential cmake git ninja-build checkinstall # cd /usr/local/src # git clone --depth 1 -b v3.7.2 https://github.com/AviSynth/AviSynthPlus.git # cd AviSynthPlus # mkdir avisynth-build # cd avisynth-build # cmake ../ -G Ninja # ninja # checkinstall --pkgname=avisynth --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --stripso=yes --addso=yes --fstrans=no --default ninja install # ldconfig
## libsvtav1のインストール
# cd /usr/local/src # git clone --depth 1 https://gitlab.com/AOMediaCodec/SVT-AV1.git # cd SVT-AV1/Build # cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release # make -j $(nproc) # make install
ffmpeg のインストール
# apt install nasm libfdk-aac-dev libx264-dev libx265-dev # cd /usr/local/src # git clone --depth 1 -b n4.4.2 git://git.ffmpeg.org/ffmpeg.git # cd ffmpeg # ./configure \ --enable-gpl \ --enable-version3 \ --disable-doc \ --disable-debug \ --enable-avisynth \ --enable-libfdk-aac \ --enable-libx264 \ --enable-libx265 \ --enable-libsvtav1 \ --enable-nonfree # make # make install
l-smash のインストール
# cd /usr/local/src # git clone --depth 1 https://github.com/l-smash/l-smash.git # cd l-smash # ./configure --enable-shared # make # make install # ldconfig
l-smash-works のインストール(avisynth で l-smash を使用するためのプラグイン)
# apt install python3-pip # pip3 install meson==0.62.0 # cd /usr/local/src # git clone --depth 1 -b 20210423 https://github.com/HolyWu/L-SMASH-Works.git # cd L-SMASH-Works/AviSynth # LDFLAGS="-Wl,-Bsymbolic" meson build # cd build # ninja -v # ninja install # ldconfig
JoinLogoScpTrialSet for Linux and Avisynth+3.5.x のインストール
https://github.com/tobitti0/JoinLogoScpTrialSetLinux
# cd /usr/local/src # git clone --depth 1 --recursive https://github.com/tobitti0/JoinLogoScpTrialSetLinux.git # cd JoinLogoScpTrialSetLinux/modules/chapter_exe/src/ # make # cp -a chapter_exe /usr/local/bin/. # cd ../../logoframe/src/ # make # cp -a logoframe /usr/local/bin/. # cd ../../join_logo_scp/src/ # make # cp -a join_logo_scp /usr/local/bin/.
join_logo_scp の動作確認
# cd ~ # vi join_temp.avs TSFilePath="GR27_test.ts" LWLibavVideoSource(TSFilePath, repeat=true, dominance=1) AudioDub(last,LWLibavAudioSource(TSFilePath, av_sync=true)) # chapter_exe -v join_temp.avs -oa temp_inscp.txt # logoframe join_temp.avs -logo GR27.lgd -oa temp_inlogo.txt # join_logo_scp -inlogo temp_inlogo.txt -inscp temp_inscp.txt -incmd JL_標準.txt -o temp_join_logo_scp.txt # cat temp_join_logo_scp.txt ※Trim情報が記載されていること
透過性ロゴ フィルタ for AviSynth+ 3.5.x & Linux のインストール
https://github.com/tobitti0/delogo-AviSynthPlus-Linux
# apt install gcc-9 g++-9 # cd /usr/local/src/ # git clone --depth 1 https://github.com/tobitti0/delogo-AviSynthPlus-Linux.git # cd delogo-AviSynthPlus-Linux/src # make CC=gcc-9 CXX=gcc-9 LD=gcc-9 # make install # ldconfig
delogo の動作確認
# cd ~ # vi delogo_temp.avs TSFilePath="GR27_test.ts" LWLibavVideoSource(TSFilePath, repeat=true, dominance=1) AudioDub(last,LWLibavAudioSource(TSFilePath, av_sync=true)) EraseLOGO(logofile="GR27.lgd", interlaced=true) # ffmpeg -f avisynth -i delogo_temp.avs -c:v libsvtav1 -c:a libfdk_aac GR27_test.mp4