コンテンツにスキップ

「Linux Containers で OpenVPN サーバー」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
リダイレクトに変更
タグ: 新規リダイレクト
1行目: 1行目:
#REDIRECT [[Linux Containers/VPN の使用]]
[[Category:Virtual Private Network]]
[[Category:仮想化]]
[[en:OpenVPN (server) in Linux containers]]
{{Related articles start}}
{{Related|Easy-RSA}}
{{Related|Linux Containers}}
{{Related|OpenVPN}}
{{Related|Linux Containers で OpenVPN クライアント}}
{{Related|ufw}}
{{Related articles end}}
この記事ではセキュアかつプライベートにインターネットを利用するために [[Linux Containers]] で [[OpenVPN]] をサーバーモードで実行する方法を説明します。[[VirtualBox]] や [[QEMU]] のような完全仮想化と比べてオーバーヘッドが最小限に抑えられて低性能のデバイスでも使えるというメリットがあります。

== ホストの設定 ==
# ホスト OS にはコンテナから使えるブリッジイーサネットを設定する必要があります。[[Linux Containers#ホストネットワークの設定]]を参照してください。
# パケット転送を有効にする必要があります。[[インターネット共有#パケット転送の有効化]]を見てください。
# 必須ではありませんが[[ファイアウォール]]を設定することが強く推奨されます。

== コンテナの設定 ==
[[Linux Containers]] の基本的な知識が必要です。この記事では既にベースとなる LXC の設定は終わっていることを前提とします。初めて LXC を使用する場合は [[Linux Containers]] の記事を読んでください。

=== LXC の設定 ===
コンテナの設定を編集して OpenVPN を実行するのに必要なセクションを複数記述してください。

例えば、lxc の名前が "playtime" ならば設定は以下のようになります:
{{hc|/var/lib/lxc/playtime/config|<nowiki>
# Template used to create this container: /usr/share/lxc/templates/lxc-archlinux
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

lxc.rootfs = /var/lib/lxc/playtime/rootfs
lxc.utsname = playtime
lxc.arch = x86_64
lxc.include = /usr/share/lxc/config/archlinux.common.conf

## network
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.name = eth0

## systemd within the lxc
lxc.autodev = 1
lxc.hook.autodev = /var/lib/lxc/playtime/autodev
lxc.pts = 1024
lxc.kmsg = 0

## mounts
lxc.mount.entry = /var/cache/pacman/pkg var/cache/pacman/pkg none bind 0 0

## for openvpn
lxc.cgroup.devices.allow = c 10:200 rwm
</nowiki>}}

{{Note|上記の例では '''autodev''' フックを使って {{ic|/var/lib/lxc/playtime/autodev}} スクリプトを呼び出していますが、スクリプトはユーザーが作成して実行可能権限を与える必要があります。スクリプトは以下に記載しています。[[Linux Containers]] も参照してください。}}

{{hc|/var/lib/lxc/playtime/autodev|<nowiki>
#!/bin/bash
cd ${LXC_ROOTFS_MOUNT}/dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun
</nowiki>}}

=== コンテナにインストールする必要があるパッケージ ===

ベース環境に加えて、[[公式リポジトリ]]の {{Pkg|openvpn}} パッケージが必要です。また、コンテナの中で[[ファイアウォール]]を設定することを強く推奨します。このガイドでは設定しやすい {{pkg|ufw}} を使いますが別のファイアウォールでもかまいません。

=== パッケージの設定 ===
==== OpenVPN ====
[[OpenVPN]] の記事を参照してホームサーバーをセットアップしてください。{{ic|openvpn@myprofile.service}} を[[起動]]してコンテナから openvpn が使えることが確認できたら[[有効化]]してください。

==== ufw ====
[[OpenVPN#ファイアウォールの設定]]を参照してコンテナの中でファイアウォールをセットアップしてください。設定が間違っていると openvpn がコンテナの中で正しく動作しないことがあります。

{{ic|ufw.service}} を[[起動]]・[[有効化]]してください:
# ufw enable

2024年4月11日 (木) 19:31時点における版