fstabとは

2025/11/16

Linuxにおけるfstabの役割

fstabとは

/etc/fstab(file systems table)は、Linuxシステムにおいてファイルシステムのマウント情報を定義する重要な設定ファイルです。システム起動時に自動的にマウントするファイルシステムや、その際のオプションを指定します。

主な役割

自動マウントの管理
  • システム起動時に必要なファイルシステムを自動的にマウント
  • ルートファイルシステム、swap領域、追加ストレージなどの設定を一元管理
マウントオプションの指定
  • 各ファイルシステムに対する詳細な動作設定
  • セキュリティ、パフォーマンス、互換性の調整
システム管理の簡素化
  • mountコマンドでデバイス名のみでマウント可能に
  • 一貫性のあるマウント設定を維持

fstabの書式

各行は6つのフィールドで構成されます:

<device> <mount point> <fs type> <options> <dump> <pass>

各フィールドの詳細

第1フィールド:デバイス

デバイスの指定方法には複数あります:

  • デバイスファイル:/dev/sda1
  • UUID:UUID=550e8400-e29b-41d4-a716-446655440000
  • ラベル:LABEL=ROOT
  • ネットワークファイルシステム:server:/export/home

UUIDを使用する利点は、デバイス名が変更されても影響を受けないことです。

第2フィールド:マウントポイント

ファイルシステムをマウントするディレクトリパスを指定します。swapの場合はnoneを指定。

第3フィールド:ファイルシステムタイプ
  • ext4:Linux標準ファイルシステム
  • xfs:高性能ファイルシステム
  • btrfs:次世代ファイルシステム
  • vfat:FAT32(USBメモリなど)
  • ntfs:Windows NTFS
  • nfs:ネットワークファイルシステム
  • swap:スワップ領域
  • auto:自動検出
第4フィールド:マウントオプション

カンマ区切りで複数指定可能:

基本オプション
  • defaults:標準オプション(rw,suid,dev,exec,auto,nouser,async)
  • ro/rw:読み取り専用/読み書き可能
  • noauto:起動時に自動マウントしない
  • user/nouser:一般ユーザのマウント許可/禁止
セキュリティ関連
  • nosuid:SUIDビットを無効化
  • nodev:デバイスファイルを無効化
  • noexec:実行ファイルの実行を禁止
パフォーマンス関連
  • async/sync:非同期/同期I/O
  • noatime:アクセス時刻を更新しない(パフォーマンス向上)
  • nodiratime:ディレクトリのアクセス時刻を更新しない
  • relatime:アクセス時刻の更新を制限
第5フィールド:dump
  • 0:バックアップ不要
  • 1:dumpコマンドでバックアップ対象
第6フィールド:pass(fsckの順序)
  • 0:チェックしない
  • 1:ルートファイルシステム(最優先)
  • 2:その他のファイルシステム

設定例

典型的なfstabの例:

# <device>                                <mount point>  <type>  <options>           <dump> <pass>
UUID=8f2d4c6a-9b1e-4d8a-b3c5-1a2b3c4d5e6f /              ext4    defaults            1      1
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /boot          ext4    defaults            1      2
UUID=12345678-90ab-cdef-1234-567890abcdef swap           swap    defaults            0      0
UUID=fedcba98-7654-3210-fedc-ba9876543210 /home          ext4    defaults,noatime    1      2

# 外部ストレージ
/dev/sdb1                                 /mnt/backup    ext4    noauto,user         0      0

# ネットワークドライブ
192.168.1.100:/share                      /mnt/nfs       nfs     defaults,_netdev    0      0

# Windows共有
//192.168.1.101/share                     /mnt/smb       cifs    credentials=/home/user/.smbcreds,uid=1000,gid=1000,iocharset=utf8 0 0

# tmpfs(メモリ上のファイルシステム)
tmpfs                                      /tmp           tmpfs   defaults,noatime,mode=1777,size=2G 0 0

実用的な設定のポイント

UUIDの確認方法
blkid
# または
lsblk -f
fstab編集時の注意点
  1. 編集前にバックアップを作成
  2. 編集後はmount -aで構文エラーをチェック
  3. ルートファイルシステムの設定は特に慎重に
トラブルシューティング
  • 起動時にエラーが発生した場合、シングルユーザーモードまたはレスキューモードで修正
  • systemctl statusでマウント失敗の詳細を確認
  • _netdevオプションでネットワークドライブの起動順序を制御
セキュリティ考慮事項
  • 外部メディアにはnosuid,nodev,noexecを設定
  • 機密データを含むパーティションには適切な権限設定
  • NFSやCIFSの認証情報は別ファイルで管理

まとめ

fstabは、Linuxシステムの起動と運用において中核的な役割を果たす設定ファイルです.

2025/11/13(木)さらばHamachi

WireGuardに出会うことができましたので、hamachiからは卒業することとなりました。
これまでhamachi-VPNを使って、外出先から事務所パソコンにリモートデスクトップしたりしていたのですが、WireGuardに乗り換えました。
Wireguard自体は無料ですが、中継サーバーを使う方式としたので、若干の月額料金がかかりますが、hamachi有料版に比べれば安いものです。

それにしても、hamachiの解約は面倒でした。
解約ボタンなどなく、一般の問い合わせから、解約したいと英語で問い合わせ。
submitすると、「logmeinサポートまで電話をしないと、解約できない」と自動で告げられる。

日本の電話番号はあったのですが、英語対応。
解約するぞの一心で、たどたどしく解約を伝えました。
何度、最初はサポート、その次は請求部署に回され、さらに技術部署へとたらい回し。その都度、名前からメールアドレスからIDまで、何度も本人確認される。認証情報は引き継いでくれよん、と強く思いました。
何度も、解約理由についても聞かれました。だからもう使わないから解約なんだって。

しかし電話でも完結せず、メールのやりとりが必要とのこと。じゃあなんで電話を噛ますねん。

メールが来てからはスムーズ。何度も聞かれた解約理由をまた買いて、すべてのサービスの契約意思を改めて伝える。
確認のメールがきて、1.5日で終了しました。

それにしても、英語を電話で話さなければならないハードルの高さよ。
狙いだと思うけれども、そういう姿勢はいかがなものか。

さらば、Hamachi 十年以上お世話になったね。

antiXでVPN接続-wireguard

2025/11/11
wireguardでVPNを構築したので、覚書です。

antiXにwireguard導入(さらばhamachi)

sudo apt update
sudo apt install wireguard wireguard-tools
# wireguard用鍵ペアの作成
# 専用ディレクトリの作成
mkdir -p ~/wireguard-keys

#鍵ペアの作成
wg genkey | tee ~/wireguard-keys/private.key | wg pubkey > ~/wireguard-keys/public.key

chmod 600 ~/wireguard-keys/private.key
sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = (上で作成した秘密鍵)
Address = 10.200.0.10/32
DNS = 8.8.8.8, 1.1.1.1

[Peer]
PublicKey = (中継サーバーの公開鍵)
AllowedIPs = 10.200.0.0/24
Endpoint = 160.xxx.xxx.185:5xxx0
PersistentKeepalive = 25
sudo chmod 600 /etc/wireguard/wg0.conf

手動起動

WireGuard を手動で起動・停止するには、wg-quick というコマンドラインツールを使用します。

1. 手動で接続を開始する

ターミナルを開き、以下のコマンドを実行します。
`wg0` の部分は、`/etc/wireguard/` に配置した設定ファイル名(例: `wg0.conf`)に合わせてください。
sudo wg-quick up wg0
2. 接続状態を確認する

接続が成功したか、現在の状態を確認するには、以下のコマンドを使用します。
ピア(接続先)の情報や、直近のハンドシェイク(通信確立)の時刻が表示されます。
sudo wg show
3. 手動で接続を停止する

接続を終了したい場合は、以下のコマンドを実行します。
sudo wg-quick down wg0

自動起動設定

WireGuard はインターフェース作成に root 権限が必要なため、単純に wg-quick up wg0 をユーザーセッションで実行しても失敗します。

環境例

OSantiX 23 runit
VPNツールWireGuard(wg-quick)
構成クライアント側VPN起動を自動化

sudoers許可+ユーザーセッションで起動(GUIログイン時にVPN)

特徴
  1. デスクトップログイン後にVPNを上げたい場合に便利。
  2. sudoパスワード入力を省略して自動起動可能。
手順
① sudoers に権限を追加
sudo visudo
次を末尾に追加
yourusername ALL=(ALL) NOPASSWD: /usr/bin/wg-quick up wg0, /usr/bin/wg-quick down wg0

(`yourusername` を実際のユーザー名に変更)
② `~/.desktop-session/startup` に起動コマンドを追加
# WireGuard 起動(sudo経由)

sudo /usr/bin/wg-quick up wg0 &
③ 確認
sudo wg
GUIログイン後に自動でVPN接続が確立します。
ログアウト・再起動後も再接続されます。

zoomtest

2025/11/11
Zoom ミーティングに参加する
https://us06web.zoom.us/j/84642735255?pwd=KYAfcfz2b9SYRDJbnoJdaGX2Sa1qmd.1

ミーティング ID: 846 4273 5255
パスコード: 352382

VPN-クライアント設定編WireGuard

2025/11/11
ウィンドウズ端末での追加設定はこちら

VPNに繋ぐクライアント設定

wireguardの外部サーバーを使った構成は、外部サーバー(中心的な中継サーバー)以外はすべて同じ扱いであり、どのパソコンからどのパソコンに繋ぐかは、運用として決めます。
ここでは、職場にあるwindows機A(10.200.0.2とする)に外出先パソコン2機(B機 windows 10.200.0.10,C機 linux 10.200.0.11)からつなぐような運用を想定しています。

構成概要

項目設定値
VPSグローバルIP160.xxx.xxx.185
WireGuardポート5xxx0/udp
VPNネットワーク10.200.0.0/24
VPS VPN IP10.200.0.1
事務所PC A10.200.0.2
外出先端末B (Windows)10.200.0.10
外出先端末C (Linux antiX)10.200.0.11

STEP 1: クライアント鍵ペア生成

Windows機での鍵ペア生成

WireGuard for Windowsのインストール
  1. 公式サイトからダウンロード:https://www.wireguard.com/install/
  2. wireguard-installer.exeを実行してインストール

鍵ペア生成

  1. WireGuardアプリを起動
  2. 「トンネルを追加」→「空のトンネルを追加」をクリック
  3. 自動的に秘密鍵と公開鍵が生成されるはず。
  4. トンネル名を入力(任意で決めて良い)
ここでトンネルの名前(すべて共通にする必要はないが、共通のほうが管理しやすいかも)を決めておきましょう
例: wireguard-tips456

※鍵ペアは、必ず、WireGuardの機能で作成するようにしましょう。専用のものです。

公開鍵の登録

それぞれのクライアント端末の公開鍵は、すべて中継サーバー(VPS)の設定に転記します。
中継サーバー(VPS)の公開鍵(public.key)は、すべてのクライアント端末のwireguardに転記します。
これにより、中継サーバーが中心となって、すべてのクライアント間のVPNを構築することとなります。
くれぐれも秘密鍵を転記しないようにしてください。

STEP 2: 中継サーバ側 Peer 登録

中継サーバ(さくらVPS)側の設定です。

/etc/wireguard/wg0.conf を編集します。

※microはお好きなエディタに置き換えてください。
sudo micro /etc/wireguard/wg0.conf
内容:
中継サーバーの情報はすでに、WireGuard設定時に記載されたはずなので、重複しないようにしてください。
サブネットマスクは中継サーバーだけが、/24 であり、他は /32 なので気を付けてください。

5xxx0はサーバー編で設定したUDPポートです
[Interface]
Address = 10.200.0.1/24
ListenPort = 5xxx0
PrivateKey = (サーバ秘密鍵)

# クライアント登録

[Peer]  # 事務所PC A
PublicKey = (office-pc-public.key)
AllowedIPs = 10.200.0.2/32

[Peer]  # 外出先端末B (Windows)
PublicKey = (mobile-win-public.key)
AllowedIPs = 10.200.0.10/32

[Peer]  # 外出先端末C (Linux antiX)
PublicKey = (mobile-linux-public.key)
AllowedIPs = 10.200.0.11/32
WireGuard再起動:
sudo systemctl restart wg-quick@wg0
sudo wg show

STEP 3: クライアント設定テンプレート

続いて、各クライアントに中継サーバーの公開鍵を転記します。
WireGuardのアプリの「編集」から、[Peer]のほうにサーバーの公開鍵を転記します。
中継サーバーの公開鍵は中継サーバーで確認し、コピーします。

公開鍵の確認
sudo wg show

事務所PC A (Windows)

160.xxx.xxx.185:5xxx0 は中継サーバのIPアドレスとポートです。

[Interface]は/32 [Peer] は/24
[Interface]
Address = 10.200.0.2/32
PrivateKey = (office-pc-private.key)
DNS = 8.8.8.8, 1.1.1.1

[Peer]
PublicKey = (server_public.key)
Endpoint = 160.xxx.xxx.185:5xxx0
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25

外出先端末B (Windows)

ウィンドウズ端末での追加設定はこちら
[Interface]
Address = 10.200.0.10/32
PrivateKey = (mobile-win-private.key)
DNS = 8.8.8.8, 1.1.1.1

[Peer]
PublicKey = (server_public.key)
Endpoint = 160.xxx.xxx.185:5xxx0
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25

外出先端末C (antiX Linux)

antiXの場合、
#DNS = 8.8.8.8, 1.1.1.1
とコメントアウトします。
WireGuardは、resolve.confをスタート時に書き換えるのですが、終了時に元に戻してくれません。
一般のlinuxであれば、linuxのほうでリカバリーできるそうですが、antiXは軽量版のため、そこまで面倒見がよくありません。
他の軽量linuxはわかりません。
[Interface]
Address = 10.200.0.11/32
PrivateKey = (mobile-linux-private.key)
#DNS = 8.8.8.8, 1.1.1.1

[Peer]
PublicKey = (server_public.key)
Endpoint = 160.xxx.xxx.185:5xxx0
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25

STEP 4: 接続テスト


# 各クライアントでVPN起動

wg-quick up wg0  # Linux

# Windows: WireGuardアプリで「有効化」

# VPSへPing

ping 10.200.0.1

# 事務所PCへPing

ping 10.200.0.2

# VPS側で確認

sudo wg show

Windows端末での注意点

Windowの設定によっては、以下の設定をしないとpingが通らないものもあるようです。
※ PowerShellを管理者権限で実行
私の環境では、下記の設定をしなくても通る機もあれば、1をしないと通らない機もあります。
2は遭遇していないですが、念のための記載です。

※ひょっとしたらインターネット直繋ぎか、プライベートLAN経由かによって違うのかもしれません。

1.WireGuardのネットワークを public → private に変更

Set-NetConnectionProfile -InterfaceAlias "(wireguardのトンネル名)" -NetworkCategory Private

2.10.200.0.0/24については、通信(TCP,RDP)が通るようにします。

# ICMP (Ping) を WireGuardサブネットから許可
New-NetFirewallRule -DisplayName "Allow ICMP from WireGuard subnet" `
  -Protocol ICMPv4 -Direction Inbound -Action Allow `
  -RemoteAddress 10.200.0.0/24 -Profile Private

# RDP (3389) を WireGuardサブネットから許可(必要なら)
New-NetFirewallRule -DisplayName "Allow RDP from WireGuard subnet" `
  -Protocol TCP -LocalPort 3389 -Direction Inbound -Action Allow `
  -RemoteAddress 10.200.0.0/24 -Profile Private

STEP 5: RDP確認

Windows外出先端末Bから:

RDP先: 10.200.0.2
ポート: 3389
ユーザ: 事務所PCのWindowsユーザ名

Linux外出先端末Cから:

remmina

# 新規接続: RDP / 10.200.0.2 / ユーザ名・パスワード

STEP 6: セキュリティ補足

秘密鍵(private.key)は絶対に他端末にコピーしない。
クライアント紛失時はwg0.confの該当Peerを削除。
firewalld / fail2banは既に恒久設定済み。

これでVPN網 (10.200.0.0/24) に3台のクライアントが登録完了し、外出先から事務所PCへRDPアクセスが可能になります。