<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarisia</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarisia"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Sarisia"/>
	<updated>2026-05-15T17:09:01Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9079</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9079"/>
		<updated>2017-06-19T12:14:41Z</updated>

		<summary type="html">&lt;p&gt;Sarisia: Wikipediaリンク修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Virtual Private Network]]&lt;br /&gt;
[[de:OpenVPN]]&lt;br /&gt;
[[en:OpenVPN]]&lt;br /&gt;
[[ru:OpenVPN]]&lt;br /&gt;
[[zh-hans:OpenVPN]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN クライアント}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN サーバー}}&lt;br /&gt;
{{Related|Easy-RSA}}&lt;br /&gt;
{{Related|Airvpn}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では、小規模な事業やプレイベートでの利用に適している、[http://openvpn.net OpenVPN] の基本的なインストールと設定について説明します。詳しい情報は [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を見て下さい。OpenVPN は堅牢で高い柔軟性を持つ [[Wikipedia:VPN|VPN]] デーモンです。[[Wikipedia:SSL/TLS|SSL/TLS]] セキュリティ, [[Wikipedia:Bridging_(networking)|Ethernet ブリッジ]], [[Wikipedia:Proxy_server|プロキシ]]や [[Wikipedia:Network address translation|NAT]] による [[Wikipedia:Transmission_Control_Protocol|TCP]] や [[Wikipedia:User_Datagram_Protocol|UDP]] の[[Wikipedia:Tunneling_protocol|トンネリング]]をサポートしています。さらに、動的 IP アドレスと [[Wikipedia:Dynamic_Host_Configuration_Protocol|DHCP]] をサポートしており、数百あるいは数千までのユーザーに対応し、主要な OS プラットフォームで動作します。&lt;br /&gt;
&lt;br /&gt;
OpenVPN は [http://www.openssl.org OpenSSL] ライブラリと密接に関係しており、OpenSSL の暗号機能を多数利用しています。[[Wikipedia:Pre-shared_key|事前共有秘密鍵]]による慣用暗号 (Static Key モード) とクライアントとサーバーの証明書を用いる[[Wikipedia:Public_key|公開鍵暗号]] ([[Wikipedia:SSL/TLS|SSL/TLS]] モード) をサポートしています。さらに、暗号化を施さない TCP/UDP トンネルにも対応しています。&lt;br /&gt;
&lt;br /&gt;
ほとんどのプラットフォームに存在する [[Wikipedia:TUN/TAP|TUN/TAP]] 仮想ネットワークインターフェイスを使うように OpenVPN は設計されています。OpenVPN は [[Wikipedia:Ipsec|IPSec]] の主要な機能の多くを提供しますがフットプリントは比較的軽量に抑えられます。OpenVPN は James Yonan によって書かれ [[Wikipedia:GNU General Public License|GNU General Public License (GPL)]] の下で公開されています。&lt;br /&gt;
&lt;br /&gt;
== OpenVPN のインストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openvpn}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|このパッケージに含まれているソフトウェアはクライアントとサーバー両方のモードをサポートするため、VPN 接続を作成する全てのマシンにインストールしてください。}}&lt;br /&gt;
&lt;br /&gt;
== カーネルの設定 ==&lt;br /&gt;
&lt;br /&gt;
OpenVPN は TUN/TAP のサポートを必要としますが、デフォルトカーネルでは既に設定済みです。自分でカーネルをビルドするときは、以下のように {{ic|tun}} モジュールを有効にしてください: &lt;br /&gt;
&lt;br /&gt;
{{hc|Kernel config file|&lt;br /&gt;
 Device Drivers&lt;br /&gt;
  --&amp;gt; Network device support&lt;br /&gt;
    [M] Universal TUN/TAP device driver support}}&lt;br /&gt;
&lt;br /&gt;
詳しくは[[カーネルモジュール]]を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 第三者の VPN に接続 ==&lt;br /&gt;
&lt;br /&gt;
サードパーティによって提供されている VPN サービスに接続する場合、以下に書かれていることのほとんど（特にサーバーの設定に関する部分）は無視することができます。[[#クライアントの設定ファイル|クライアントの設定ファイル]]にそって設定して、それから [[#OpenVPN の起動|OpenVPN の起動]]まで飛んでください。証明書はプロバイダによって提供されたものを使います。参照: [[Airvpn]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|フリーの VPN プロバイダの多くは [[PPTP サーバー|PPTP]] を提供しており、簡単に設定することが可能です。ただし、[http://poptop.sourceforge.net/dox/protocol-security.phtml セキュアではありません]。}}&lt;br /&gt;
&lt;br /&gt;
== 公開鍵基盤 (PKI) をスクラッチから作成 ==&lt;br /&gt;
&lt;br /&gt;
スクラッチから OpenVPN をセットアップする場合、[[Wikipedia:ja:公開鍵基盤|公開鍵基盤 (PKI)]] を作成する必要があります。詳しくは [[Easy-RSA]] の記事に書かれています。必要な証明書・秘密鍵・関連ファイルが作成できたら、{{ic|/etc/openvpn/server}} に以下のファイルが存在するはずです:&lt;br /&gt;
*{{ic|/etc/openvpn/server/ca.crt}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/dh.pem}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/servername.crt}} と {{ic|/etc/openvpn/server/servername.key}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/ta.key}}&lt;br /&gt;
&lt;br /&gt;
== ベーシックな L3 IP ルーティング設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|特に明示しないかぎり、この記事では以下の基本的な L3 IP ルーティング設定を使います。}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN は幅広い用途に使えるソフトウェアであり様々な設定ができます。マシンをサーバーとクライアントのどちらにでもできるので、サーバーとクライアントの区別は曖昧です。&lt;br /&gt;
&lt;br /&gt;
v2.4 のリリースから、サーバーの設定は {{ic|/etc/openvpn/server}} に保存され、クライアントの設定は {{ic|/etc/openvpn/client}} に保存されるようになり、それぞれ別の systemd ユニット ({{ic|openvpn-client@.service}} と {{ic|openvpn-server@.service}}) を使うようになりました。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
OpenVPN パッケージには様々な設定サンプルファイルが付属しています。以下の機能を持つベーシックな OpenVPN をセットアップしたい場合、サンプルのサーバーとクライアント設定ファイルを使用すると良いでしょう:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Public key infrastructure|Public Key Infrastructure (PKI)]] を使って認証。&lt;br /&gt;
* 仮想 TUN ネットワークインターフェイスを使用して VPN を作成 (OSI L3 IP ルーティング)。&lt;br /&gt;
* UDP ポート 1194 でクライアントから接続 (OpenVPN の[[Wikipedia:Port_number|公式 IANA ポート番号]])。&lt;br /&gt;
* 仮想アドレスを 10.8.0.0/24 サブネットからクライアントに配布。&lt;br /&gt;
&lt;br /&gt;
高度な設定例は公式の [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を読んでください。&lt;br /&gt;
&lt;br /&gt;
=== サーバーの設定ファイル ===&lt;br /&gt;
{{Note|サーバーまでの通り道にファイアウォールや NAT 変換ルーターがある場合、サーバー側で OpenVPN ポートを転送する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
サーバーのサンプル設定ファイルを {{ic|/etc/openvpn/server/server.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/server.conf /etc/openvpn/server/server.conf&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert servername.crt&lt;br /&gt;
key servername.key  # This file should be kept secret&lt;br /&gt;
dh dh.pem&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サーバーの堅牢化 ====&lt;br /&gt;
セキュリティが重要な場合、以下の設定を行うことを推奨します: 強固な暗号・認証方式、新しい tls 暗号だけを使うようにサーバーを設定。{{ic|/etc/openvpn/server/server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
auth SHA512&lt;br /&gt;
tls-version-min 1.2&lt;br /&gt;
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ cipher 行と auth 行を記述する必要があります (特に iOS と Android クライアントの場合)。}}&lt;br /&gt;
&lt;br /&gt;
==== 標準のポートやプロトコルを変更 ====&lt;br /&gt;
パブリックネットワークやプライベートネットワークの管理者によってデフォルトポートやデフォルトプロトコルで OpenVPN 接続が許可されていない場合があります。通常の https/SSL トラフィックのように偽装することで解決できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/openvpn/server/server.conf}} を以下のように設定してください:&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
port 443&lt;br /&gt;
proto tcp&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ port 行と proto 行を記述する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== TCP vs UDP =====&lt;br /&gt;
TCP と UDP には以下のような違いがあります。&lt;br /&gt;
&lt;br /&gt;
TCP&lt;br /&gt;
* いわゆる「ステートフルプロトコル」。&lt;br /&gt;
* 誤り訂正による高い信頼性 (パケット応答を待機)。&lt;br /&gt;
* UDP よりも低速。&lt;br /&gt;
&lt;br /&gt;
UDP&lt;br /&gt;
* いわゆる「ステートレスプロトコル」。&lt;br /&gt;
* 誤り訂正が使われないため TCP よりも信頼性が低い。&lt;br /&gt;
* TCP よりも高速。&lt;br /&gt;
&lt;br /&gt;
=== クライアントの設定ファイル ===&lt;br /&gt;
&lt;br /&gt;
クライアント設定ファイルのサンプルを {{ic|/etc/openvpn/client/client.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/client.conf /etc/openvpn/client/client.conf&lt;br /&gt;
&lt;br /&gt;
以下を編集してください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|remote}} ディレクティブにはサーバーの[[Wikipedia:Fully qualified domain name|完全修飾ドメイン名]], (クライアントから名前解決できる) ホストネーム, IP アドレスのどれかを指定してください。&lt;br /&gt;
* 特権を与えないようにするには {{ic|user}} と {{ic|group}} ディレクティブをアンコメントします。&lt;br /&gt;
* {{ic|ca}}, {{ic|cert}}, {{ic|key}} パラメータは鍵と証明書のパス・名前に合わせてください。&lt;br /&gt;
* SSL/TLS HMAC のハンドシェイクを有効にします。クライアントではパラメータを1にしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert client.crt&lt;br /&gt;
key client.key&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 接続後に root 権限を落とす ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルで {{ic|user nobody}} と {{ic|group nobody}} オプションを使うことで接続が確立した後 &#039;&#039;OpenVPN&#039;&#039; は権限を落とします。ただし、VPN が切断されたときにデーモンがネットワークルートを削除して再設定することができないという欠点があります。VPN 接続を使わずにトラフィックの転送を制限したい場合、ルートを残すのは望ましくありません。さらに、トンネルの起動時に OpenVPN サーバーがルートにアップデートをプッシュする可能性もあります。権限が落ちたクライアントではアップデートを実行することができずエラーを吐いて終了します。&lt;br /&gt;
&lt;br /&gt;
As it could seem to require manual action to manage the routes, the options {{ic|user nobody}} and {{ic|group nobody}} might seem undesirable. Depending on setup, however, there are four ways to handle these situations: &lt;br /&gt;
&lt;br /&gt;
* ユニットのエラーの場合、ユニットを[[systemd#ユニットファイルの編集|編集]]して {{ic|[Service]}} セクションに {{ic|1=Restart=on-failure}} を追加してください。ただし、これだけでは古いルートが削除されないため、再起動されたトンネルが正しくルーティングされません。&lt;br /&gt;
* The package contains the {{ic|/usr/lib/openvpn/plugins/openvpn-plugin-down-root.so}}, which can be used to let &#039;&#039;openvpn&#039;&#039; fork a process with root privileges with the only task to execute a custom script when receiving a down signal from the main process, which is handling the tunnel with dropped privileges (see also its [https://community.openvpn.net/openvpn/browser/plugin/down-root/README?rev=d02a86d37bed69ee3fb63d08913623a86c88da15 README]).&lt;br /&gt;
* The [https://openvpn.net/index.php/open-source/documentation/howto.html#security OpenVPN HowTo] explains another way how to create an unprivileged user mode and wrapper script to have the routes restored automatically. &lt;br /&gt;
* Further, it is possible to let OpenVPN start as a non-privileged user in the first place, without ever running as root, see [https://community.openvpn.net/openvpn/wiki/UnprivilegedUser this OpenVPN wiki HowTo].&lt;br /&gt;
&lt;br /&gt;
{{Note|The OpenVPN HowTos linked above create a dedicated non-privileged user/group, instead of the already existing {{ic|nobody}}. The advantage is that this avoids potential risks when sharing a user among daemons.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントプロファイル (Linux, iOS, Android 共通) ===&lt;br /&gt;
{{AUR|ovpngen}} パッケージは OpenVPN Connect の iOS 版や Android アプリでも使えるファイル形式で、OpenVPN 互換のトンネルプロファイルを作成できるシンプルなシェルスクリプトです。&lt;br /&gt;
&lt;br /&gt;
5つのトークンを指定してスクリプトを起動してください:&lt;br /&gt;
# OpenVPN サーバーの完全修飾ドメイン名 (または IP アドレス)。&lt;br /&gt;
# CA 証明書のフルパス。&lt;br /&gt;
# クライアント証明書のフルパス。&lt;br /&gt;
# クライアント秘密鍵のフルパス。&lt;br /&gt;
# サーバー TLS 共有秘密鍵のフルパス。&lt;br /&gt;
# (任意) ポート番号。&lt;br /&gt;
# (任意) プロトコル (udp または tcp)。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
 # ovpngen example.org /etc/openvpn/server/ca.crt /etc/easy-rsa/pki/signed/client1.crt /etc/easy-rsa/pki/private/client1.key /etc/openvpn/server/ta.key &amp;gt; iphone.ovpn&lt;br /&gt;
&lt;br /&gt;
スクリプトはコメント行を追加するので、必要であれば生成された {{ic|iphone.ovpn}} を編集してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|If the server.conf contains a specified cipher and/or auth line, it is highly recommended that users manually edit the generated .ovpn file adding matching lines for cipher and auth.  Failure to do so may results in connection errors!}}&lt;br /&gt;
&lt;br /&gt;
=== 証明書を暗号化された .p12 フォーマットに変換 ===&lt;br /&gt;
ソフトウェアによってはパスワードで暗号化された .p12 ファイルで保存された VPN 証明書しか読み込まない場合があります。ファイルは以下のコマンドで生成することができます:&lt;br /&gt;
{{bc|# openssl pkcs12 -export -inkey keys/bugs.key -in keys/bugs.crt -certfile keys/ca.crt -out keys/bugs.p12}}&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN 設定のテスト ===&lt;br /&gt;
&lt;br /&gt;
サーバーで {{ic|# openvpn /etc/openvpn/server/server.conf}} を実行して、クライアントで {{ic|# openvpn /etc/openvpn/client/client.conf}} を実行してください。以下のような出力がされるはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/server/server.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:26 2011 OpenVPN 2.2.1 x86_64-unknown-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:26 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:26 2011 Diffie-Hellman initialized with 2048 bit key&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:54 2011 bugs/95.126.136.73:48904 MULTI: primary virtual IP for bugs/95.126.136.73:48904: 10.8.0.6&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 PUSH: Received control message: &#039;PUSH_REQUEST&#039;&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 SENT CONTROL [bugs]: &#039;PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5&#039; (status=1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/client/client.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:50 2011 OpenVPN 2.2.1 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:50 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:50 2011 LZO compression initialized&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:57 2011 GID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 UID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 Initialization Sequence Completed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サーバーで、tunX デバイスに割り当てられた IP アドレスを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
40: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合、サーバーのトンネルの終末に割り当てられた IP アドレスは 10.8.0.1 です。&lt;br /&gt;
&lt;br /&gt;
クライアントでも同じように確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
37: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側の IP アドレスは 10.8.0.6 と確認できます。&lt;br /&gt;
&lt;br /&gt;
IP アドレスを確認したら ping を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
サーバー側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.6|2=&lt;br /&gt;
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=1 ttl=64 time=238 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=2 ttl=64 time=237 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=3 ttl=64 time=205 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.6 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2002ms&lt;br /&gt;
rtt min/avg/max/mdev = 205.862/227.266/238.788/15.160 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.1|2=&lt;br /&gt;
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=3 ttl=64 time=157 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.1 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2001ms&lt;br /&gt;
rtt min/avg/max/mdev = 157.426/158.278/158.940/0.711 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイアウォールを使っている場合、TUN デバイスの IP パケットがブロックされていないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
=== Fragment と MSS による MTU の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|MTU を設定しなかった場合 ping や DNS などパケット数が少ない通信は上手く行きますが、ウェブブラウザなどはできません。}}&lt;br /&gt;
&lt;br /&gt;
次は最大セグメントサイズ (MSS) の設定です。クライアントとサーバーの経路で最小の MTU を確認する必要があります。断片化を無効化してサーバーに ping することで確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 1500 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 1500(1528) bytes of data.&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
&lt;br /&gt;
--- core.myrelay.net ping statistics ---&lt;br /&gt;
0 packets transmitted, 0 received, +5 errors&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の ICMP メッセージによれば MTU は 576 バイトです。UDP のオーバーヘッドのために UDP パケットを 576 バイト未満に断片化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 548 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 548(576) bytes of data.&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=1 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=2 ttl=48 time=224 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=3 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=4 ttl=48 time=207 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=5 ttl=48 time=208 ms&lt;br /&gt;
&lt;br /&gt;
--- myrelay.net ping statistics ---&lt;br /&gt;
5 packets transmitted, 5 received, 0% packet loss, time 4001ms&lt;br /&gt;
rtt min/avg/max/mdev = 206.027/210.603/224.158/6.832 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
試行錯誤によりパケットを 548 バイトで断片化する必要があると確認できました。OpenVPN のクライアント設定ファイルを以下のように修正してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
mssfix 548&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
サーバーにも断片化について設定が必要です。サーバー側の設定では &amp;quot;mssfix&amp;quot; は不要なので注意してください:&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;fragment&#039; ディレクティブをサポートしていないクライアント (例: OpenELEC, [https://forums.openvpn.net/topic13201.html#p31156 iOS アプリ]) は &#039;fragment&#039; ディレクティブを使用しているサーバーに接続できません。そのようなクライアントを使用する場合は、このセクションはスキップして下で説明している &#039;mtu-test&#039; ディレクティブでクライアントを設定してください。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|The following will add about 3 minutes to OpenVPN start time. It is advisable to configure the fragment size unless your client is a laptop that will be connecting over many different networks and the bottle neck is on the client side.}}&lt;br /&gt;
&lt;br /&gt;
クライアントが VPN に接続するたびに OpenVPN でテストの ping を実行するように設定することもできます。クライアントはテストを実行していることを通知しない場合があり、テストが完了するまで接続が切れているかのように表示されることがあります。&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
mtu-test&lt;br /&gt;
...&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 ===&lt;br /&gt;
==== IPv6 でサーバーに接続 ====&lt;br /&gt;
&lt;br /&gt;
OpenVPN でデュアルスタックを有効にするには、{{ic|server.conf}} と {{ic|client.conf}} の両方で {{ic|proto udp}} を {{ic|proto udp6}} に変更してください。変更後、IPv4 と IPv6 の両方が有効になります。&lt;br /&gt;
&lt;br /&gt;
==== トンネルで IPv6 を使用 ====&lt;br /&gt;
&lt;br /&gt;
トンネルで IPv6 を使えるようにするには、IPv6 プレフィックスを OpenVPN サーバーにルーティングする必要があります。ゲートウェイでスタティックルートを設定するか (固定ブロックが割り当てられている場合)、あるいは DHCPv6 クライアントを使って DHCPv6 プレフィックス委譲でプレフィックスを取得してください (詳しくは [[IPv6#プレフィックス委譲 (DHCPv6-PD)|IPv6 プレフィックス委譲]]を参照)。アドレスブロック fc00::/7 からユニークなローカルアドレスを使うこともできます。どちらの方法もメリットとデメリットがあります:&lt;br /&gt;
&lt;br /&gt;
* Many ISPs only provide dynamically changing IPv6 prefixes. OpenVPN does not support prefix changes, so you need to change your server.conf every time the prefix is changed (Maybe can be automated with a script).&lt;br /&gt;
* ULA addresses are not routed to the Internet, and setting up NAT is not as straightforward as with IPv4. So you cannot route the entire traffic over the tunnel. If you only want to connect two sites via IPv6, without the need to connect to the Internet over the tunnel, the ULA addresses may be easier to use.&lt;br /&gt;
&lt;br /&gt;
プレフィックスを取得したら ({{ic|/64}} が推奨)、{{ic|server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 server-ipv6 2001:db8:0:123::/64&lt;br /&gt;
&lt;br /&gt;
This is the IPv6 equivalent to the default 10.8.0.0/24 network of OpenVPN and needs to be taken from the DHCPv6 client. Or use for example fd00:1234::/64.&lt;br /&gt;
&lt;br /&gt;
If you want to push a route to your home network (192.168.1.0/24 equivalent), also append:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route-ipv6 2001:db8:0:abc::/64&amp;quot;&lt;br /&gt;
&lt;br /&gt;
OpenVPN does not yet include DHCPv6, so there is no method to e.g. push DNS server over IPv6. This needs to be done with IPv4. The [https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN Wiki] provides some other configuration options.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN の起動 ==&lt;br /&gt;
&lt;br /&gt;
=== 手動起動 ===&lt;br /&gt;
&lt;br /&gt;
VPN 接続をトラブルシュートするときは、root で {{ic|openvpn /etc/openvpn/client/client.conf}} を実行して手動でクライアントのデーモンを起動してください。同じように、サーバーもサーバーの設定ファイル (例: {{ic|openvpn /etc/openvpn/server/server.conf}}) を使って起動できます。&lt;br /&gt;
&lt;br /&gt;
=== systemd サービスの設定 ===&lt;br /&gt;
&lt;br /&gt;
システムの起動時に OpenVPN を自動的に実行するには、クライアントでもサーバーでも、適当なマシンで {{ic|openvpn-server@&#039;&#039;&amp;lt;configuration&amp;gt;&#039;&#039;.service}} を[[有効化]]してください ({{ic|&amp;lt;configuration&amp;gt;}} に {{ic|.conf}} 拡張子は要りません)。&lt;br /&gt;
&lt;br /&gt;
例えば、クライアントの設定ファイルが {{ic|/etc/openvpn/client/&#039;&#039;client&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-client@&#039;&#039;client&#039;&#039;.service}} です。また、サーバーの設定ファイルが {{ic|/etc/openvpn/server/&#039;&#039;server&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-server@&#039;&#039;server&#039;&#039;.service}} となります。&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager で接続を開始 ===&lt;br /&gt;
&lt;br /&gt;
クライアント側で VPN トンネルを常時実行しない場合や特定の NetworkManager の接続だけで確立してほしい場合、{{ic|/etc/NetworkManager/dispatcher.d/}} にスクリプトを追加してください。以下の例では &amp;quot;Provider&amp;quot; が NetworkManager の接続名です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-openvpn|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
  up)&lt;br /&gt;
    if [ &amp;quot;$CONNECTION_ID&amp;quot; == &amp;quot;Provider&amp;quot; ]; then&lt;br /&gt;
      systemctl start openvpn@client&lt;br /&gt;
    fi&lt;br /&gt;
  ;;&lt;br /&gt;
  down)&lt;br /&gt;
    systemctl stop openvpn@client&lt;br /&gt;
  ;;&lt;br /&gt;
esac}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [[NetworkManager#ネットワークサービスと NetworkManager dispatcher]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Gnome の設定 ===&lt;br /&gt;
&lt;br /&gt;
Gnome のネットワーク設定を使ってクライアントから OpenVPN サーバーに接続したい場合、以下を実行してください。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|networkmanager-openvpn}} をインストールします。それから設定メニューを開いてネットワークを選択してください。プラス記号をクリックして新しい接続を追加し VPN を選択します。そこから、OpenVPN を選択することができるので手動で設定を入力してください。既に設定ファイルを作成している場合、[[#クライアントの設定ファイル|クライアントの設定ファイル]]をインポートすることもできます。ただし、インポートが上手くいかなかった場合 NetworkManager はエラーメッセージを表示しないので注意してください。後は、接続を有効にすれば設定が適用されて、VPN に接続されます (例: {{ic|journalctl -b --u NetworkManager}})。&lt;br /&gt;
&lt;br /&gt;
== 全てのクライアントの通信をサーバーにルーティング ==&lt;br /&gt;
&lt;br /&gt;
{{Note|There are potential pitfalls when routing all traffic through a VPN server. Refer to [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect the OpenVPN documentation on this topic] for more information.}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは OpenVPN サーバーから直接送受信されたトラフィックしか VPN を通過しません。ウェブのトラフィックなど全てのトラフィックを VPN を通過させたい場合、まずはサーバーの設定ファイル ({{ic|/etc/openvpn/server/server.conf}}) に以下を追加してください [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect]:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;redirect-gateway def1 bypass-dhcp&amp;quot;&lt;br /&gt;
 push &amp;quot;dhcp-option DNS 8.8.8.8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|8.8.8.8}} は使用したい DNS の IP アドレスに変えてください。&lt;br /&gt;
&lt;br /&gt;
サーバーに接続した後、DNS が反応しない場合は、シンプルな DNS フォワーダーとして [[BIND]] をインストールして OpenVPN サーバーの IP アドレスを DNS としてクライアントに送信してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルが設定できたら、サーバーで[[インターネット共有#パケット転送の有効化|パケットフォワーディングを有効化]]してください。さらに、サーバーのファイアウォールを設定して VPN の通信が通るようにします。以下では [[ufw]] と [[iptables]] の設定方法を解説しています。&lt;br /&gt;
&lt;br /&gt;
サーバーとは別の（プライベート）サブネットにもクライアントがアクセスできるようにしたい場合、{{ic|push &amp;quot;route &amp;lt;address pool&amp;gt; &amp;lt;subnet&amp;gt;&amp;quot;}} オプションを使ってください:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route 172.10.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
 push &amp;quot;route 172.20.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォールの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
VPN 通信の ufw 設定を行うにはまず以下を {{ic|/etc/default/ufw}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/default/ufw|2=&lt;br /&gt;
DEFAULT_FORWARD_POLICY=&amp;quot;ACCEPT&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして {{ic|/etc/ufw/before.rules}} を編集して以下のコードをヘッダーの後ろ、&amp;quot;*filter&amp;quot; 行の前に追加してください。IP やサブネットマスクは {{ic|/etc/openvpn/server/server.conf}} に設定した値と同じ値に変更してください。以下の例ではアダプタ ID が一般的な {{ic|eth0}} ですが必要に応じて編集してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ufw/before.rules|2=&lt;br /&gt;
# NAT (Network Address Translation) table rules&lt;br /&gt;
*nat&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allow traffic from clients to eth0&lt;br /&gt;
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# do not delete the &amp;quot;COMMIT&amp;quot; line or the NAT table rules above will not be processed&lt;br /&gt;
COMMIT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN のポート 1194 を開く:&lt;br /&gt;
&lt;br /&gt;
 # ufw allow 1194&lt;br /&gt;
&lt;br /&gt;
最後に、UFW をリロード:&lt;br /&gt;
&lt;br /&gt;
 # ufw reload&lt;br /&gt;
&lt;br /&gt;
==== iptables ====&lt;br /&gt;
&lt;br /&gt;
In order to allow VPN traffic through your iptables firewall of your server, first create an iptables rule for NAT forwarding [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect] on the server, assuming the interface you want to forward to is named {{ic|eth0}}:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
If you have difficulty pinging the server through the VPN, you may need to add explicit rules to open up TUN/TAP interfaces to all traffic. If that is the case, do the following [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn]:&lt;br /&gt;
&lt;br /&gt;
{{Warning|There are security implications for the following rules if you do not trust all clients which connect to the server. Refer to the [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn OpenVPN documentation on this topic] for more details.}}&lt;br /&gt;
&lt;br /&gt;
 iptables -A INPUT -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i tap+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tap+ -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Additionally be sure to accept connections from the OpenVPN port (default 1194) and through the physical interface.&lt;br /&gt;
&lt;br /&gt;
設定ができたら [[iptables#iptables の設定と実行]]に書かれているように設定を永続化させてください。&lt;br /&gt;
&lt;br /&gt;
If you have multiple {{ic|tun}} or {{ic|tap}} interfaces, or more than one VPN configuration, you can &amp;quot;pin&amp;quot; the name of your interface by specifying it in the OpenVPN config file, e.g. {{ic|tun22}} instead of {{ic|tun}}. This is advantageous if you have different firewall rules for different interfaces or OpenVPN configurations.&lt;br /&gt;
&lt;br /&gt;
=== VPN が落ちた時に漏洩を防止 ===&lt;br /&gt;
&lt;br /&gt;
The idea is simple: prevent all traffic through our default interface (enp3s0 for example) and only allow tun0. If the OpenVPN connection drops, your computer will lose its internet access and therefore, avoid your programs to continue connecting through an insecure network adapter.&lt;br /&gt;
&lt;br /&gt;
Be sure to set up a script to restart OpenVPN if it goes down if you do not want to manually restart it.&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
 # Default policies&lt;br /&gt;
 ufw default deny incoming&lt;br /&gt;
 ufw default deny outgoing&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn interface (adjust interface accordingly to your configuration)&lt;br /&gt;
 ufw allow in on tun0&lt;br /&gt;
 ufw allow out on tun0&lt;br /&gt;
 &lt;br /&gt;
 # Local Network (adjust ip accordingly to your configuration)&lt;br /&gt;
 ufw allow in on enp3s0 from 192.168.1.0/24&lt;br /&gt;
 ufw allow out on enp3s0 to 192.168.1.0/24&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn (adjust port accordingly to your configuration)&lt;br /&gt;
 ufw allow out on enp3s0 to any port 1194&lt;br /&gt;
 ufw allow in on enp3s0 from any port 1194&lt;br /&gt;
&lt;br /&gt;
{{Warning| DNS &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &#039;&#039;&#039;unless&#039;&#039;&#039; you run your own dns server like [[BIND]]&lt;br /&gt;
Otherwise, you will need to allow dns leak. &#039;&#039;&#039;Be sure to trust your dns server!&#039;&#039;&#039;&lt;br /&gt;
 # DNS&lt;br /&gt;
 ufw allow in from any to any port 53&lt;br /&gt;
 ufw allow out from any to any port 53&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== vpnfailsafe ====&lt;br /&gt;
&lt;br /&gt;
もしくは [https://github.com/wknapik/vpnfailsafe vpnfailsafe] ({{AUR|vpnfailsafe-git}}) スクリプトをクライアントで使うことでも DNS 漏洩を防ぐことができ、インターネット宛の全てのトラフィックが VPN を通過するようにできます。VPN トンネルが落ちた場合、インターネットへのアクセスはできなくなりますが、VPN サーバーへの接続は可能です。スクリプトには [[#アップデート resolv-conf スクリプト|update-resolv-conf]] の機能も含まれています。&lt;br /&gt;
&lt;br /&gt;
== L3 IPv4 ルーティング==&lt;br /&gt;
&lt;br /&gt;
このセクションでは L3 IPv4 ルーティングを使ってクライアント・サーバー LAN を互いに接続する方法を説明しています。&lt;br /&gt;
&lt;br /&gt;
=== LAN のルーティングの要件 ===&lt;br /&gt;
&lt;br /&gt;
ホストが LAN と VPN で IPv4 パケットを転送できるようにするために、NIC と tun/tap デバイスでパケットを転送できるようにする必要があります。詳しい設定方法は[[インターネット共有#パケット転送の有効化]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== ルーティングテーブル ====&lt;br /&gt;
&lt;br /&gt;
By default, all IP packets on a LAN addressed to a different subnet get sent to the default gateway.  If the LAN/VPN gateway is also the default gateway, there is no problem and the packets get properly forwarded. If not, the gateway has no way of knowing where to send the packets.  There are a couple of solutions to this problem.&lt;br /&gt;
&lt;br /&gt;
* Add a static route to the default gateway routing the VPN subnet to the LAN/VPN gateway&#039;s IP address.&lt;br /&gt;
* Add a static route on each host on the LAN that needs to send IP packets back to the VPN.&lt;br /&gt;
* Use [[iptables]]&#039; NAT feature on the LAN/VPN gateway to masquerade the incoming VPN IP packets.&lt;br /&gt;
&lt;br /&gt;
=== サーバー LAN をクライアントに接続 ===&lt;br /&gt;
&lt;br /&gt;
The server is on a LAN using the 10.66.0.0/24 subnet. To inform the client about the available subnet, add a push directive to the server configuration file:{{hc|/etc/openvpn/server/server.conf|push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the server to the client, add more push directives to the server configuration file, but keep in mind that the server side LANs will need to know how to route to the client.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアント LAN をサーバーに接続 ===&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
&lt;br /&gt;
* Any subnets used on the client side, must be unique and not in use on the server or by any other client. In this example we will use 192.168.4.0/24 for the clients LAN.&lt;br /&gt;
* Each client&#039;s certificate has a unique Common Name, in this case bugs.&lt;br /&gt;
* The server may not use the duplicate-cn directive in its config file.&lt;br /&gt;
&lt;br /&gt;
Create a client configuration directory on the server.  It will be searched for a file named the same as the client&#039;s common name, and the directives will be applied to the client when it connects.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /etc/openvpn/ccd&lt;br /&gt;
&lt;br /&gt;
Create a file in the client configuration directory called bugs, containing the {{ic|iroute 192.168.4.0 255.255.255.0}} directive.  It tells the server what subnet should be routed to the client:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
Add the client-config-dir and the {{ic|route 192.168.4.0 255.255.255.0}} directive to the server configuration file. It tells the server what subnet should be routed from the tun device to the server LAN:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the client to the server, add more iroute and route directives to the appropriate configuration files, but keep in mind that the client side LANs will need to know how to route to the server.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとサーバー両方の LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
Combine the two previous sections:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Remember to make sure that all the LANs or the needed hosts can route to all the destinations.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとクライアントの LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトではクライアントは互いを認識できません。クライアント間やクライアントの LAN 間の IP パケットを許可するには、サーバーの設定ファイルに {{ic|client-to-client}} ディレクティブを追加してください: {{hc|/etc/openvpn/server/server.conf|client-to-client}}&lt;br /&gt;
&lt;br /&gt;
他のクライアントやクライアント LAN が特定のクライアント LAN を認識できるようにしたい場合、各クライアントのサブネットに対して push ディレクティブをサーバーの設定ファイルに追加してください (サーバーが利用可能なサブネットを他のクライアントに通知します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-to-client&lt;br /&gt;
push &amp;quot;route 192.168.4.0 255.255.255.0&amp;quot;&lt;br /&gt;
push &amp;quot;route 192.168.5.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|As always, make sure that the routing is properly configured.}}&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
&lt;br /&gt;
システムによって使われる DNS サーバーは {{ic|/etc/resolv.conf}} に定義します。伝統的に、このファイルはシステムをネットワークに接続するプログラムによって扱われます (例: Wicd, NetworkManager など)。しかしながら、リモート側で名前解決ができるようにするには、OpenVPN がこのファイルを修正する必要があります。{{pkg|openresolv}} をインストールすることで、複数のプログラムが互いに干渉することなく {{ic|resolv.conf}} を編集できるようになります。&lt;br /&gt;
&lt;br /&gt;
先に進む前に、ネットワーク接続を再起動して {{ic|resolv.conf}} の中に &#039;&#039;resolvconf&#039;&#039; によって生成されたという文言があること、そして DNS の解決が問題なく機能することを確認してください。openresolv を設定する必要はありません。ネットワークによって自動的に認識されて使用されます。&lt;br /&gt;
&lt;br /&gt;
Linux の場合、OpenVPN は DNS のホスト情報を送信することができますが、外部プロセスがそれを扱うようになっています。{{ic|/usr/share/openvpn/contrib/pull-resolv-conf/}} に存在する {{ic|client.up}} と {{ic|client.down}} スクリプトを使用します。スクリプトを {{ic|/etc/openvpn/client/}} にインストールする方法はコメントを見てください。以下は &#039;&#039;resolvconf&#039;&#039; と[[#接続後に root 権限を落とす]]のオプションを組み合わせてスクリプトを使って作成されたクライアント設定の抜粋です:&lt;br /&gt;
{{hc|/etc/openvpn/client/&#039;&#039;clienttunnel&#039;&#039;.conf|&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
# Optional, choose a suitable path to chroot into for your system&lt;br /&gt;
chroot /srv&lt;br /&gt;
script-security 2&lt;br /&gt;
up /etc/openvpn/client/client.up&lt;br /&gt;
plugin /usr/lib/openvpn/plugins/openvpn-plugin-down-root.so &amp;quot;/etc/openvpn/client/client.down tun0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート resolv-conf スクリプト === &lt;br /&gt;
&lt;br /&gt;
パッケージに含まれているスクリプトのかわりとして [https://github.com/masterkorp/openvpn-update-resolv-conf openvpn-update-resolv-conf] スクリプトを使うことができます。{{ic|/etc/openvpn/update-resolv-conf}} などに保存して [[chmod]] で実行可能属性を付与してください。AUR の {{AUR|openvpn-update-resolv-conf}} パッケージでスクリプトをインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
スクリプトをインストールしたら OpenVPN のクライアント設定ファイルに以下のような行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
&lt;br /&gt;
これで OpenVPN 接続を起動すると {{ic|resolv.conf}} ファイルが正しく更新され、接続を終了すると通常の {{ic|resolv.conf}} に戻ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|When using {{ic|openresolv}} with the &#039;&#039;-p&#039;&#039; or &#039;&#039;-x&#039;&#039; options in a script (as both the included {{ic|client.up}} and {{ic|update-resolv-conf}} scripts currently do), a DNS resolver like {{Pkg|dnsmasq}} or {{Pkg|unbound}} is required for {{ic|openresolv}} to correctly update {{ic|/etc/resolv.conf}}.  In contrast, when using the default DNS resolution from {{ic|libc}} the &#039;&#039;-p&#039;&#039; and &#039;&#039;-x&#039;&#039; options must be removed in order for {{ic|/etc/resolv.conf}} to be correctly updated by {{ic|openresolv}}. For example, if the script contains a command like {{ic|resolvconf -p -a }} and the default DNS resolver from {{ic|libc}} is being used, change the command in the script to be {{ic|resolvconf -a }}.}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート systemd-resolved スクリプト === &lt;br /&gt;
&lt;br /&gt;
systemd-229 から、[[systemd-networkd]] の {{ic|systemd-resolved.service}} には DBus を使ってリンクごとに DNS の設定を管理することができる API が用意されています。{{ic|/etc/resolv.conf}} が {{ic|systemd-resolved}} によって管理されている場合、{{pkg|openresolv}} などのツールは上手く動かない場合があります。さらに、{{ic|/etc/nsswitch.conf}} ファイルで {{ic|dns}} のかわりに {{ic|resolve}} を使っている場合は全く動作しません。[https://github.com/jonathanio/update-systemd-resolved update-systemd-resolved] スクリプトは DBus を通して OpenVPN と {{ic|systemd-resolved}} をリンクし DNS レコードを更新します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを {{ic|/etc/openvpn}} にコピーして [[chmod]] で実行可能属性を付与するか、AUR パッケージでインストールして ({{AUR|openvpn-update-systemd-resolved}})、OpenVPN のクライアント設定ファイルに以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 setenv PATH /usr/bin&lt;br /&gt;
 up /etc/openvpn/update-systemd-resolved&lt;br /&gt;
 down-pre /etc/openvpn/update-systemd-resolved&lt;br /&gt;
&lt;br /&gt;
== L2 Ethernet ブリッジ ==&lt;br /&gt;
&lt;br /&gt;
次を参照: [[en2:OpenVPN Bridge|OpenVPN Bridge]]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== サスペンド後にクライアントデーモンが再起動しない ===&lt;br /&gt;
&lt;br /&gt;
クライアントをスリープ状態にしてから復帰しても OpenVPN が再起動しないために切断してしまう場合、以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/vpn.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;pre&amp;quot; ]&lt;br /&gt;
then&lt;br /&gt;
  killall openvpn&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|chmod a+x /usr/lib/systemd/system-sleep/vpn.sh}} に実行可能属性を付与してサービスを編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/openvpn-client@.service.d/restart.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=always&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== しばらく通信しないと接続が切れる ===&lt;br /&gt;
&lt;br /&gt;
データを通信していないと接続中と表示されているのに数秒で VPN 接続が切れて、データがトンネルで転送されない場合、サーバーの設定に {{ic|keepalive}} ディレクティブを追加してみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
keepalive 10 120&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定でサーバーは ping のようなメッセージを10秒ごとにクライアントに送信してトンネルを維持します。クライアントから120秒以上反応を得られなかった場合、サーバーはクライアントが切断されたと判断します。&lt;br /&gt;
&lt;br /&gt;
ping の間隔を小さくすることでトンネルの安定性を上げることができますが、発生するトラフィックが増大します。接続環境によっては10秒以下に設定してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://openvpn.net/index.php/open-source.html OpenVPN 公式サイト]&lt;/div&gt;</summary>
		<author><name>Sarisia</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9078</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9078"/>
		<updated>2017-06-19T12:13:38Z</updated>

		<summary type="html">&lt;p&gt;Sarisia: Sarisia (トーク) による版 9077 を取り消し&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Virtual Private Network]]&lt;br /&gt;
[[de:OpenVPN]]&lt;br /&gt;
[[en:OpenVPN]]&lt;br /&gt;
[[ru:OpenVPN]]&lt;br /&gt;
[[zh-hans:OpenVPN]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN クライアント}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN サーバー}}&lt;br /&gt;
{{Related|Easy-RSA}}&lt;br /&gt;
{{Related|Airvpn}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では、小規模な事業やプレイベートでの利用に適している、[http://openvpn.net OpenVPN] の基本的なインストールと設定について説明します。詳しい情報は [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を見て下さい。OpenVPN は堅牢で高い柔軟性を持つ [[Wikipedia:VPN|VPN]] デーモンです。[[Wikipedia:SSL/TLS|SSL/TLS]] セキュリティ, [[Wikipedia:Bridging_(networking)|Ethernet ブリッジ]], [[Wikipedia:Proxy_server|プロキシ]]や [[Wikipedia:Network address translation|NAT]] による [[Wikipedia:Transmission_Control_Protocol|TCP]] や [[Wikipedia:User_Datagram_Protocol|UDP]] の[[Wikipedia:Tunneling_protocol|トンネリング]]をサポートしています。さらに、動的 IP アドレスと [[Wikipedia:Dynamic_Host_Configuration_Protocol|DHCP]] をサポートしており、数百あるいは数千までのユーザーに対応し、主要な OS プラットフォームで動作します。&lt;br /&gt;
&lt;br /&gt;
OpenVPN は [http://www.openssl.org OpenSSL] ライブラリと密接に関係しており、OpenSSL の暗号機能を多数利用しています。[[Wikipedia:Pre-shared_key|事前共有秘密鍵]]による慣用暗号 (Static Key モード) とクライアントとサーバーの証明書を用いる[[Wikipedia:Public_key|公開鍵暗号]] ([[Wikipedia:SSL/TLS|SSL/TLS]] モード) をサポートしています。さらに、暗号化を施さない TCP/UDP トンネルにも対応しています。&lt;br /&gt;
&lt;br /&gt;
ほとんどのプラットフォームに存在する [[Wikipedia:TUN/TAP|TUN/TAP]] 仮想ネットワークインターフェイスを使うように OpenVPN は設計されています。OpenVPN は [[Wikipedia:Ipsec|IPSec]] の主要な機能の多くを提供しますがフットプリントは比較的軽量に抑えられます。OpenVPN は James Yonan によって書かれ [[Wikipedia:GNU General Public License|GNU General Public License (GPL)]] の下で公開されています。&lt;br /&gt;
&lt;br /&gt;
== OpenVPN のインストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openvpn}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|このパッケージに含まれているソフトウェアはクライアントとサーバー両方のモードをサポートするため、VPN 接続を作成する全てのマシンにインストールしてください。}}&lt;br /&gt;
&lt;br /&gt;
== カーネルの設定 ==&lt;br /&gt;
&lt;br /&gt;
OpenVPN は TUN/TAP のサポートを必要としますが、デフォルトカーネルでは既に設定済みです。自分でカーネルをビルドするときは、以下のように {{ic|tun}} モジュールを有効にしてください: &lt;br /&gt;
&lt;br /&gt;
{{hc|Kernel config file|&lt;br /&gt;
 Device Drivers&lt;br /&gt;
  --&amp;gt; Network device support&lt;br /&gt;
    [M] Universal TUN/TAP device driver support}}&lt;br /&gt;
&lt;br /&gt;
詳しくは[[カーネルモジュール]]を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 第三者の VPN に接続 ==&lt;br /&gt;
&lt;br /&gt;
サードパーティによって提供されている VPN サービスに接続する場合、以下に書かれていることのほとんど（特にサーバーの設定に関する部分）は無視することができます。[[#クライアントの設定ファイル|クライアントの設定ファイル]]にそって設定して、それから [[#OpenVPN の起動|OpenVPN の起動]]まで飛んでください。証明書はプロバイダによって提供されたものを使います。参照: [[Airvpn]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|フリーの VPN プロバイダの多くは [[PPTP サーバー|PPTP]] を提供しており、簡単に設定することが可能です。ただし、[http://poptop.sourceforge.net/dox/protocol-security.phtml セキュアではありません]。}}&lt;br /&gt;
&lt;br /&gt;
== 公開鍵基盤 (PKI) をスクラッチから作成 ==&lt;br /&gt;
&lt;br /&gt;
スクラッチから OpenVPN をセットアップする場合、[[Wikipedia:Public key infrastructure|公開鍵基盤 (PKI)]] を作成する必要があります。詳しくは [[Easy-RSA]] の記事に書かれています。必要な証明書・秘密鍵・関連ファイルが作成できたら、{{ic|/etc/openvpn/server}} に以下のファイルが存在するはずです:&lt;br /&gt;
*{{ic|/etc/openvpn/server/ca.crt}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/dh.pem}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/servername.crt}} と {{ic|/etc/openvpn/server/servername.key}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/ta.key}}&lt;br /&gt;
&lt;br /&gt;
== ベーシックな L3 IP ルーティング設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|特に明示しないかぎり、この記事では以下の基本的な L3 IP ルーティング設定を使います。}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN は幅広い用途に使えるソフトウェアであり様々な設定ができます。マシンをサーバーとクライアントのどちらにでもできるので、サーバーとクライアントの区別は曖昧です。&lt;br /&gt;
&lt;br /&gt;
v2.4 のリリースから、サーバーの設定は {{ic|/etc/openvpn/server}} に保存され、クライアントの設定は {{ic|/etc/openvpn/client}} に保存されるようになり、それぞれ別の systemd ユニット ({{ic|openvpn-client@.service}} と {{ic|openvpn-server@.service}}) を使うようになりました。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
OpenVPN パッケージには様々な設定サンプルファイルが付属しています。以下の機能を持つベーシックな OpenVPN をセットアップしたい場合、サンプルのサーバーとクライアント設定ファイルを使用すると良いでしょう:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Public key infrastructure|Public Key Infrastructure (PKI)]] を使って認証。&lt;br /&gt;
* 仮想 TUN ネットワークインターフェイスを使用して VPN を作成 (OSI L3 IP ルーティング)。&lt;br /&gt;
* UDP ポート 1194 でクライアントから接続 (OpenVPN の[[Wikipedia:Port_number|公式 IANA ポート番号]])。&lt;br /&gt;
* 仮想アドレスを 10.8.0.0/24 サブネットからクライアントに配布。&lt;br /&gt;
&lt;br /&gt;
高度な設定例は公式の [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を読んでください。&lt;br /&gt;
&lt;br /&gt;
=== サーバーの設定ファイル ===&lt;br /&gt;
{{Note|サーバーまでの通り道にファイアウォールや NAT 変換ルーターがある場合、サーバー側で OpenVPN ポートを転送する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
サーバーのサンプル設定ファイルを {{ic|/etc/openvpn/server/server.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/server.conf /etc/openvpn/server/server.conf&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert servername.crt&lt;br /&gt;
key servername.key  # This file should be kept secret&lt;br /&gt;
dh dh.pem&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サーバーの堅牢化 ====&lt;br /&gt;
セキュリティが重要な場合、以下の設定を行うことを推奨します: 強固な暗号・認証方式、新しい tls 暗号だけを使うようにサーバーを設定。{{ic|/etc/openvpn/server/server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
auth SHA512&lt;br /&gt;
tls-version-min 1.2&lt;br /&gt;
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ cipher 行と auth 行を記述する必要があります (特に iOS と Android クライアントの場合)。}}&lt;br /&gt;
&lt;br /&gt;
==== 標準のポートやプロトコルを変更 ====&lt;br /&gt;
パブリックネットワークやプライベートネットワークの管理者によってデフォルトポートやデフォルトプロトコルで OpenVPN 接続が許可されていない場合があります。通常の https/SSL トラフィックのように偽装することで解決できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/openvpn/server/server.conf}} を以下のように設定してください:&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
port 443&lt;br /&gt;
proto tcp&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ port 行と proto 行を記述する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== TCP vs UDP =====&lt;br /&gt;
TCP と UDP には以下のような違いがあります。&lt;br /&gt;
&lt;br /&gt;
TCP&lt;br /&gt;
* いわゆる「ステートフルプロトコル」。&lt;br /&gt;
* 誤り訂正による高い信頼性 (パケット応答を待機)。&lt;br /&gt;
* UDP よりも低速。&lt;br /&gt;
&lt;br /&gt;
UDP&lt;br /&gt;
* いわゆる「ステートレスプロトコル」。&lt;br /&gt;
* 誤り訂正が使われないため TCP よりも信頼性が低い。&lt;br /&gt;
* TCP よりも高速。&lt;br /&gt;
&lt;br /&gt;
=== クライアントの設定ファイル ===&lt;br /&gt;
&lt;br /&gt;
クライアント設定ファイルのサンプルを {{ic|/etc/openvpn/client/client.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/client.conf /etc/openvpn/client/client.conf&lt;br /&gt;
&lt;br /&gt;
以下を編集してください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|remote}} ディレクティブにはサーバーの[[Wikipedia:Fully qualified domain name|完全修飾ドメイン名]], (クライアントから名前解決できる) ホストネーム, IP アドレスのどれかを指定してください。&lt;br /&gt;
* 特権を与えないようにするには {{ic|user}} と {{ic|group}} ディレクティブをアンコメントします。&lt;br /&gt;
* {{ic|ca}}, {{ic|cert}}, {{ic|key}} パラメータは鍵と証明書のパス・名前に合わせてください。&lt;br /&gt;
* SSL/TLS HMAC のハンドシェイクを有効にします。クライアントではパラメータを1にしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert client.crt&lt;br /&gt;
key client.key&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 接続後に root 権限を落とす ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルで {{ic|user nobody}} と {{ic|group nobody}} オプションを使うことで接続が確立した後 &#039;&#039;OpenVPN&#039;&#039; は権限を落とします。ただし、VPN が切断されたときにデーモンがネットワークルートを削除して再設定することができないという欠点があります。VPN 接続を使わずにトラフィックの転送を制限したい場合、ルートを残すのは望ましくありません。さらに、トンネルの起動時に OpenVPN サーバーがルートにアップデートをプッシュする可能性もあります。権限が落ちたクライアントではアップデートを実行することができずエラーを吐いて終了します。&lt;br /&gt;
&lt;br /&gt;
As it could seem to require manual action to manage the routes, the options {{ic|user nobody}} and {{ic|group nobody}} might seem undesirable. Depending on setup, however, there are four ways to handle these situations: &lt;br /&gt;
&lt;br /&gt;
* ユニットのエラーの場合、ユニットを[[systemd#ユニットファイルの編集|編集]]して {{ic|[Service]}} セクションに {{ic|1=Restart=on-failure}} を追加してください。ただし、これだけでは古いルートが削除されないため、再起動されたトンネルが正しくルーティングされません。&lt;br /&gt;
* The package contains the {{ic|/usr/lib/openvpn/plugins/openvpn-plugin-down-root.so}}, which can be used to let &#039;&#039;openvpn&#039;&#039; fork a process with root privileges with the only task to execute a custom script when receiving a down signal from the main process, which is handling the tunnel with dropped privileges (see also its [https://community.openvpn.net/openvpn/browser/plugin/down-root/README?rev=d02a86d37bed69ee3fb63d08913623a86c88da15 README]).&lt;br /&gt;
* The [https://openvpn.net/index.php/open-source/documentation/howto.html#security OpenVPN HowTo] explains another way how to create an unprivileged user mode and wrapper script to have the routes restored automatically. &lt;br /&gt;
* Further, it is possible to let OpenVPN start as a non-privileged user in the first place, without ever running as root, see [https://community.openvpn.net/openvpn/wiki/UnprivilegedUser this OpenVPN wiki HowTo].&lt;br /&gt;
&lt;br /&gt;
{{Note|The OpenVPN HowTos linked above create a dedicated non-privileged user/group, instead of the already existing {{ic|nobody}}. The advantage is that this avoids potential risks when sharing a user among daemons.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントプロファイル (Linux, iOS, Android 共通) ===&lt;br /&gt;
{{AUR|ovpngen}} パッケージは OpenVPN Connect の iOS 版や Android アプリでも使えるファイル形式で、OpenVPN 互換のトンネルプロファイルを作成できるシンプルなシェルスクリプトです。&lt;br /&gt;
&lt;br /&gt;
5つのトークンを指定してスクリプトを起動してください:&lt;br /&gt;
# OpenVPN サーバーの完全修飾ドメイン名 (または IP アドレス)。&lt;br /&gt;
# CA 証明書のフルパス。&lt;br /&gt;
# クライアント証明書のフルパス。&lt;br /&gt;
# クライアント秘密鍵のフルパス。&lt;br /&gt;
# サーバー TLS 共有秘密鍵のフルパス。&lt;br /&gt;
# (任意) ポート番号。&lt;br /&gt;
# (任意) プロトコル (udp または tcp)。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
 # ovpngen example.org /etc/openvpn/server/ca.crt /etc/easy-rsa/pki/signed/client1.crt /etc/easy-rsa/pki/private/client1.key /etc/openvpn/server/ta.key &amp;gt; iphone.ovpn&lt;br /&gt;
&lt;br /&gt;
スクリプトはコメント行を追加するので、必要であれば生成された {{ic|iphone.ovpn}} を編集してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|If the server.conf contains a specified cipher and/or auth line, it is highly recommended that users manually edit the generated .ovpn file adding matching lines for cipher and auth.  Failure to do so may results in connection errors!}}&lt;br /&gt;
&lt;br /&gt;
=== 証明書を暗号化された .p12 フォーマットに変換 ===&lt;br /&gt;
ソフトウェアによってはパスワードで暗号化された .p12 ファイルで保存された VPN 証明書しか読み込まない場合があります。ファイルは以下のコマンドで生成することができます:&lt;br /&gt;
{{bc|# openssl pkcs12 -export -inkey keys/bugs.key -in keys/bugs.crt -certfile keys/ca.crt -out keys/bugs.p12}}&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN 設定のテスト ===&lt;br /&gt;
&lt;br /&gt;
サーバーで {{ic|# openvpn /etc/openvpn/server/server.conf}} を実行して、クライアントで {{ic|# openvpn /etc/openvpn/client/client.conf}} を実行してください。以下のような出力がされるはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/server/server.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:26 2011 OpenVPN 2.2.1 x86_64-unknown-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:26 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:26 2011 Diffie-Hellman initialized with 2048 bit key&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:54 2011 bugs/95.126.136.73:48904 MULTI: primary virtual IP for bugs/95.126.136.73:48904: 10.8.0.6&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 PUSH: Received control message: &#039;PUSH_REQUEST&#039;&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 SENT CONTROL [bugs]: &#039;PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5&#039; (status=1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/client/client.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:50 2011 OpenVPN 2.2.1 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:50 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:50 2011 LZO compression initialized&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:57 2011 GID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 UID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 Initialization Sequence Completed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サーバーで、tunX デバイスに割り当てられた IP アドレスを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
40: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合、サーバーのトンネルの終末に割り当てられた IP アドレスは 10.8.0.1 です。&lt;br /&gt;
&lt;br /&gt;
クライアントでも同じように確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
37: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側の IP アドレスは 10.8.0.6 と確認できます。&lt;br /&gt;
&lt;br /&gt;
IP アドレスを確認したら ping を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
サーバー側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.6|2=&lt;br /&gt;
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=1 ttl=64 time=238 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=2 ttl=64 time=237 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=3 ttl=64 time=205 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.6 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2002ms&lt;br /&gt;
rtt min/avg/max/mdev = 205.862/227.266/238.788/15.160 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.1|2=&lt;br /&gt;
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=3 ttl=64 time=157 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.1 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2001ms&lt;br /&gt;
rtt min/avg/max/mdev = 157.426/158.278/158.940/0.711 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイアウォールを使っている場合、TUN デバイスの IP パケットがブロックされていないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
=== Fragment と MSS による MTU の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|MTU を設定しなかった場合 ping や DNS などパケット数が少ない通信は上手く行きますが、ウェブブラウザなどはできません。}}&lt;br /&gt;
&lt;br /&gt;
次は最大セグメントサイズ (MSS) の設定です。クライアントとサーバーの経路で最小の MTU を確認する必要があります。断片化を無効化してサーバーに ping することで確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 1500 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 1500(1528) bytes of data.&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
&lt;br /&gt;
--- core.myrelay.net ping statistics ---&lt;br /&gt;
0 packets transmitted, 0 received, +5 errors&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の ICMP メッセージによれば MTU は 576 バイトです。UDP のオーバーヘッドのために UDP パケットを 576 バイト未満に断片化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 548 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 548(576) bytes of data.&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=1 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=2 ttl=48 time=224 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=3 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=4 ttl=48 time=207 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=5 ttl=48 time=208 ms&lt;br /&gt;
&lt;br /&gt;
--- myrelay.net ping statistics ---&lt;br /&gt;
5 packets transmitted, 5 received, 0% packet loss, time 4001ms&lt;br /&gt;
rtt min/avg/max/mdev = 206.027/210.603/224.158/6.832 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
試行錯誤によりパケットを 548 バイトで断片化する必要があると確認できました。OpenVPN のクライアント設定ファイルを以下のように修正してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
mssfix 548&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
サーバーにも断片化について設定が必要です。サーバー側の設定では &amp;quot;mssfix&amp;quot; は不要なので注意してください:&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;fragment&#039; ディレクティブをサポートしていないクライアント (例: OpenELEC, [https://forums.openvpn.net/topic13201.html#p31156 iOS アプリ]) は &#039;fragment&#039; ディレクティブを使用しているサーバーに接続できません。そのようなクライアントを使用する場合は、このセクションはスキップして下で説明している &#039;mtu-test&#039; ディレクティブでクライアントを設定してください。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|The following will add about 3 minutes to OpenVPN start time. It is advisable to configure the fragment size unless your client is a laptop that will be connecting over many different networks and the bottle neck is on the client side.}}&lt;br /&gt;
&lt;br /&gt;
クライアントが VPN に接続するたびに OpenVPN でテストの ping を実行するように設定することもできます。クライアントはテストを実行していることを通知しない場合があり、テストが完了するまで接続が切れているかのように表示されることがあります。&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
mtu-test&lt;br /&gt;
...&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 ===&lt;br /&gt;
==== IPv6 でサーバーに接続 ====&lt;br /&gt;
&lt;br /&gt;
OpenVPN でデュアルスタックを有効にするには、{{ic|server.conf}} と {{ic|client.conf}} の両方で {{ic|proto udp}} を {{ic|proto udp6}} に変更してください。変更後、IPv4 と IPv6 の両方が有効になります。&lt;br /&gt;
&lt;br /&gt;
==== トンネルで IPv6 を使用 ====&lt;br /&gt;
&lt;br /&gt;
トンネルで IPv6 を使えるようにするには、IPv6 プレフィックスを OpenVPN サーバーにルーティングする必要があります。ゲートウェイでスタティックルートを設定するか (固定ブロックが割り当てられている場合)、あるいは DHCPv6 クライアントを使って DHCPv6 プレフィックス委譲でプレフィックスを取得してください (詳しくは [[IPv6#プレフィックス委譲 (DHCPv6-PD)|IPv6 プレフィックス委譲]]を参照)。アドレスブロック fc00::/7 からユニークなローカルアドレスを使うこともできます。どちらの方法もメリットとデメリットがあります:&lt;br /&gt;
&lt;br /&gt;
* Many ISPs only provide dynamically changing IPv6 prefixes. OpenVPN does not support prefix changes, so you need to change your server.conf every time the prefix is changed (Maybe can be automated with a script).&lt;br /&gt;
* ULA addresses are not routed to the Internet, and setting up NAT is not as straightforward as with IPv4. So you cannot route the entire traffic over the tunnel. If you only want to connect two sites via IPv6, without the need to connect to the Internet over the tunnel, the ULA addresses may be easier to use.&lt;br /&gt;
&lt;br /&gt;
プレフィックスを取得したら ({{ic|/64}} が推奨)、{{ic|server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 server-ipv6 2001:db8:0:123::/64&lt;br /&gt;
&lt;br /&gt;
This is the IPv6 equivalent to the default 10.8.0.0/24 network of OpenVPN and needs to be taken from the DHCPv6 client. Or use for example fd00:1234::/64.&lt;br /&gt;
&lt;br /&gt;
If you want to push a route to your home network (192.168.1.0/24 equivalent), also append:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route-ipv6 2001:db8:0:abc::/64&amp;quot;&lt;br /&gt;
&lt;br /&gt;
OpenVPN does not yet include DHCPv6, so there is no method to e.g. push DNS server over IPv6. This needs to be done with IPv4. The [https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN Wiki] provides some other configuration options.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN の起動 ==&lt;br /&gt;
&lt;br /&gt;
=== 手動起動 ===&lt;br /&gt;
&lt;br /&gt;
VPN 接続をトラブルシュートするときは、root で {{ic|openvpn /etc/openvpn/client/client.conf}} を実行して手動でクライアントのデーモンを起動してください。同じように、サーバーもサーバーの設定ファイル (例: {{ic|openvpn /etc/openvpn/server/server.conf}}) を使って起動できます。&lt;br /&gt;
&lt;br /&gt;
=== systemd サービスの設定 ===&lt;br /&gt;
&lt;br /&gt;
システムの起動時に OpenVPN を自動的に実行するには、クライアントでもサーバーでも、適当なマシンで {{ic|openvpn-server@&#039;&#039;&amp;lt;configuration&amp;gt;&#039;&#039;.service}} を[[有効化]]してください ({{ic|&amp;lt;configuration&amp;gt;}} に {{ic|.conf}} 拡張子は要りません)。&lt;br /&gt;
&lt;br /&gt;
例えば、クライアントの設定ファイルが {{ic|/etc/openvpn/client/&#039;&#039;client&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-client@&#039;&#039;client&#039;&#039;.service}} です。また、サーバーの設定ファイルが {{ic|/etc/openvpn/server/&#039;&#039;server&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-server@&#039;&#039;server&#039;&#039;.service}} となります。&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager で接続を開始 ===&lt;br /&gt;
&lt;br /&gt;
クライアント側で VPN トンネルを常時実行しない場合や特定の NetworkManager の接続だけで確立してほしい場合、{{ic|/etc/NetworkManager/dispatcher.d/}} にスクリプトを追加してください。以下の例では &amp;quot;Provider&amp;quot; が NetworkManager の接続名です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-openvpn|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
  up)&lt;br /&gt;
    if [ &amp;quot;$CONNECTION_ID&amp;quot; == &amp;quot;Provider&amp;quot; ]; then&lt;br /&gt;
      systemctl start openvpn@client&lt;br /&gt;
    fi&lt;br /&gt;
  ;;&lt;br /&gt;
  down)&lt;br /&gt;
    systemctl stop openvpn@client&lt;br /&gt;
  ;;&lt;br /&gt;
esac}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [[NetworkManager#ネットワークサービスと NetworkManager dispatcher]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Gnome の設定 ===&lt;br /&gt;
&lt;br /&gt;
Gnome のネットワーク設定を使ってクライアントから OpenVPN サーバーに接続したい場合、以下を実行してください。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|networkmanager-openvpn}} をインストールします。それから設定メニューを開いてネットワークを選択してください。プラス記号をクリックして新しい接続を追加し VPN を選択します。そこから、OpenVPN を選択することができるので手動で設定を入力してください。既に設定ファイルを作成している場合、[[#クライアントの設定ファイル|クライアントの設定ファイル]]をインポートすることもできます。ただし、インポートが上手くいかなかった場合 NetworkManager はエラーメッセージを表示しないので注意してください。後は、接続を有効にすれば設定が適用されて、VPN に接続されます (例: {{ic|journalctl -b --u NetworkManager}})。&lt;br /&gt;
&lt;br /&gt;
== 全てのクライアントの通信をサーバーにルーティング ==&lt;br /&gt;
&lt;br /&gt;
{{Note|There are potential pitfalls when routing all traffic through a VPN server. Refer to [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect the OpenVPN documentation on this topic] for more information.}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは OpenVPN サーバーから直接送受信されたトラフィックしか VPN を通過しません。ウェブのトラフィックなど全てのトラフィックを VPN を通過させたい場合、まずはサーバーの設定ファイル ({{ic|/etc/openvpn/server/server.conf}}) に以下を追加してください [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect]:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;redirect-gateway def1 bypass-dhcp&amp;quot;&lt;br /&gt;
 push &amp;quot;dhcp-option DNS 8.8.8.8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|8.8.8.8}} は使用したい DNS の IP アドレスに変えてください。&lt;br /&gt;
&lt;br /&gt;
サーバーに接続した後、DNS が反応しない場合は、シンプルな DNS フォワーダーとして [[BIND]] をインストールして OpenVPN サーバーの IP アドレスを DNS としてクライアントに送信してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルが設定できたら、サーバーで[[インターネット共有#パケット転送の有効化|パケットフォワーディングを有効化]]してください。さらに、サーバーのファイアウォールを設定して VPN の通信が通るようにします。以下では [[ufw]] と [[iptables]] の設定方法を解説しています。&lt;br /&gt;
&lt;br /&gt;
サーバーとは別の（プライベート）サブネットにもクライアントがアクセスできるようにしたい場合、{{ic|push &amp;quot;route &amp;lt;address pool&amp;gt; &amp;lt;subnet&amp;gt;&amp;quot;}} オプションを使ってください:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route 172.10.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
 push &amp;quot;route 172.20.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォールの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
VPN 通信の ufw 設定を行うにはまず以下を {{ic|/etc/default/ufw}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/default/ufw|2=&lt;br /&gt;
DEFAULT_FORWARD_POLICY=&amp;quot;ACCEPT&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして {{ic|/etc/ufw/before.rules}} を編集して以下のコードをヘッダーの後ろ、&amp;quot;*filter&amp;quot; 行の前に追加してください。IP やサブネットマスクは {{ic|/etc/openvpn/server/server.conf}} に設定した値と同じ値に変更してください。以下の例ではアダプタ ID が一般的な {{ic|eth0}} ですが必要に応じて編集してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ufw/before.rules|2=&lt;br /&gt;
# NAT (Network Address Translation) table rules&lt;br /&gt;
*nat&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allow traffic from clients to eth0&lt;br /&gt;
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# do not delete the &amp;quot;COMMIT&amp;quot; line or the NAT table rules above will not be processed&lt;br /&gt;
COMMIT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN のポート 1194 を開く:&lt;br /&gt;
&lt;br /&gt;
 # ufw allow 1194&lt;br /&gt;
&lt;br /&gt;
最後に、UFW をリロード:&lt;br /&gt;
&lt;br /&gt;
 # ufw reload&lt;br /&gt;
&lt;br /&gt;
==== iptables ====&lt;br /&gt;
&lt;br /&gt;
In order to allow VPN traffic through your iptables firewall of your server, first create an iptables rule for NAT forwarding [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect] on the server, assuming the interface you want to forward to is named {{ic|eth0}}:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
If you have difficulty pinging the server through the VPN, you may need to add explicit rules to open up TUN/TAP interfaces to all traffic. If that is the case, do the following [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn]:&lt;br /&gt;
&lt;br /&gt;
{{Warning|There are security implications for the following rules if you do not trust all clients which connect to the server. Refer to the [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn OpenVPN documentation on this topic] for more details.}}&lt;br /&gt;
&lt;br /&gt;
 iptables -A INPUT -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i tap+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tap+ -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Additionally be sure to accept connections from the OpenVPN port (default 1194) and through the physical interface.&lt;br /&gt;
&lt;br /&gt;
設定ができたら [[iptables#iptables の設定と実行]]に書かれているように設定を永続化させてください。&lt;br /&gt;
&lt;br /&gt;
If you have multiple {{ic|tun}} or {{ic|tap}} interfaces, or more than one VPN configuration, you can &amp;quot;pin&amp;quot; the name of your interface by specifying it in the OpenVPN config file, e.g. {{ic|tun22}} instead of {{ic|tun}}. This is advantageous if you have different firewall rules for different interfaces or OpenVPN configurations.&lt;br /&gt;
&lt;br /&gt;
=== VPN が落ちた時に漏洩を防止 ===&lt;br /&gt;
&lt;br /&gt;
The idea is simple: prevent all traffic through our default interface (enp3s0 for example) and only allow tun0. If the OpenVPN connection drops, your computer will lose its internet access and therefore, avoid your programs to continue connecting through an insecure network adapter.&lt;br /&gt;
&lt;br /&gt;
Be sure to set up a script to restart OpenVPN if it goes down if you do not want to manually restart it.&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
 # Default policies&lt;br /&gt;
 ufw default deny incoming&lt;br /&gt;
 ufw default deny outgoing&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn interface (adjust interface accordingly to your configuration)&lt;br /&gt;
 ufw allow in on tun0&lt;br /&gt;
 ufw allow out on tun0&lt;br /&gt;
 &lt;br /&gt;
 # Local Network (adjust ip accordingly to your configuration)&lt;br /&gt;
 ufw allow in on enp3s0 from 192.168.1.0/24&lt;br /&gt;
 ufw allow out on enp3s0 to 192.168.1.0/24&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn (adjust port accordingly to your configuration)&lt;br /&gt;
 ufw allow out on enp3s0 to any port 1194&lt;br /&gt;
 ufw allow in on enp3s0 from any port 1194&lt;br /&gt;
&lt;br /&gt;
{{Warning| DNS &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &#039;&#039;&#039;unless&#039;&#039;&#039; you run your own dns server like [[BIND]]&lt;br /&gt;
Otherwise, you will need to allow dns leak. &#039;&#039;&#039;Be sure to trust your dns server!&#039;&#039;&#039;&lt;br /&gt;
 # DNS&lt;br /&gt;
 ufw allow in from any to any port 53&lt;br /&gt;
 ufw allow out from any to any port 53&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== vpnfailsafe ====&lt;br /&gt;
&lt;br /&gt;
もしくは [https://github.com/wknapik/vpnfailsafe vpnfailsafe] ({{AUR|vpnfailsafe-git}}) スクリプトをクライアントで使うことでも DNS 漏洩を防ぐことができ、インターネット宛の全てのトラフィックが VPN を通過するようにできます。VPN トンネルが落ちた場合、インターネットへのアクセスはできなくなりますが、VPN サーバーへの接続は可能です。スクリプトには [[#アップデート resolv-conf スクリプト|update-resolv-conf]] の機能も含まれています。&lt;br /&gt;
&lt;br /&gt;
== L3 IPv4 ルーティング==&lt;br /&gt;
&lt;br /&gt;
このセクションでは L3 IPv4 ルーティングを使ってクライアント・サーバー LAN を互いに接続する方法を説明しています。&lt;br /&gt;
&lt;br /&gt;
=== LAN のルーティングの要件 ===&lt;br /&gt;
&lt;br /&gt;
ホストが LAN と VPN で IPv4 パケットを転送できるようにするために、NIC と tun/tap デバイスでパケットを転送できるようにする必要があります。詳しい設定方法は[[インターネット共有#パケット転送の有効化]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== ルーティングテーブル ====&lt;br /&gt;
&lt;br /&gt;
By default, all IP packets on a LAN addressed to a different subnet get sent to the default gateway.  If the LAN/VPN gateway is also the default gateway, there is no problem and the packets get properly forwarded. If not, the gateway has no way of knowing where to send the packets.  There are a couple of solutions to this problem.&lt;br /&gt;
&lt;br /&gt;
* Add a static route to the default gateway routing the VPN subnet to the LAN/VPN gateway&#039;s IP address.&lt;br /&gt;
* Add a static route on each host on the LAN that needs to send IP packets back to the VPN.&lt;br /&gt;
* Use [[iptables]]&#039; NAT feature on the LAN/VPN gateway to masquerade the incoming VPN IP packets.&lt;br /&gt;
&lt;br /&gt;
=== サーバー LAN をクライアントに接続 ===&lt;br /&gt;
&lt;br /&gt;
The server is on a LAN using the 10.66.0.0/24 subnet. To inform the client about the available subnet, add a push directive to the server configuration file:{{hc|/etc/openvpn/server/server.conf|push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the server to the client, add more push directives to the server configuration file, but keep in mind that the server side LANs will need to know how to route to the client.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアント LAN をサーバーに接続 ===&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
&lt;br /&gt;
* Any subnets used on the client side, must be unique and not in use on the server or by any other client. In this example we will use 192.168.4.0/24 for the clients LAN.&lt;br /&gt;
* Each client&#039;s certificate has a unique Common Name, in this case bugs.&lt;br /&gt;
* The server may not use the duplicate-cn directive in its config file.&lt;br /&gt;
&lt;br /&gt;
Create a client configuration directory on the server.  It will be searched for a file named the same as the client&#039;s common name, and the directives will be applied to the client when it connects.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /etc/openvpn/ccd&lt;br /&gt;
&lt;br /&gt;
Create a file in the client configuration directory called bugs, containing the {{ic|iroute 192.168.4.0 255.255.255.0}} directive.  It tells the server what subnet should be routed to the client:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
Add the client-config-dir and the {{ic|route 192.168.4.0 255.255.255.0}} directive to the server configuration file. It tells the server what subnet should be routed from the tun device to the server LAN:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the client to the server, add more iroute and route directives to the appropriate configuration files, but keep in mind that the client side LANs will need to know how to route to the server.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとサーバー両方の LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
Combine the two previous sections:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Remember to make sure that all the LANs or the needed hosts can route to all the destinations.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとクライアントの LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトではクライアントは互いを認識できません。クライアント間やクライアントの LAN 間の IP パケットを許可するには、サーバーの設定ファイルに {{ic|client-to-client}} ディレクティブを追加してください: {{hc|/etc/openvpn/server/server.conf|client-to-client}}&lt;br /&gt;
&lt;br /&gt;
他のクライアントやクライアント LAN が特定のクライアント LAN を認識できるようにしたい場合、各クライアントのサブネットに対して push ディレクティブをサーバーの設定ファイルに追加してください (サーバーが利用可能なサブネットを他のクライアントに通知します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-to-client&lt;br /&gt;
push &amp;quot;route 192.168.4.0 255.255.255.0&amp;quot;&lt;br /&gt;
push &amp;quot;route 192.168.5.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|As always, make sure that the routing is properly configured.}}&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
&lt;br /&gt;
システムによって使われる DNS サーバーは {{ic|/etc/resolv.conf}} に定義します。伝統的に、このファイルはシステムをネットワークに接続するプログラムによって扱われます (例: Wicd, NetworkManager など)。しかしながら、リモート側で名前解決ができるようにするには、OpenVPN がこのファイルを修正する必要があります。{{pkg|openresolv}} をインストールすることで、複数のプログラムが互いに干渉することなく {{ic|resolv.conf}} を編集できるようになります。&lt;br /&gt;
&lt;br /&gt;
先に進む前に、ネットワーク接続を再起動して {{ic|resolv.conf}} の中に &#039;&#039;resolvconf&#039;&#039; によって生成されたという文言があること、そして DNS の解決が問題なく機能することを確認してください。openresolv を設定する必要はありません。ネットワークによって自動的に認識されて使用されます。&lt;br /&gt;
&lt;br /&gt;
Linux の場合、OpenVPN は DNS のホスト情報を送信することができますが、外部プロセスがそれを扱うようになっています。{{ic|/usr/share/openvpn/contrib/pull-resolv-conf/}} に存在する {{ic|client.up}} と {{ic|client.down}} スクリプトを使用します。スクリプトを {{ic|/etc/openvpn/client/}} にインストールする方法はコメントを見てください。以下は &#039;&#039;resolvconf&#039;&#039; と[[#接続後に root 権限を落とす]]のオプションを組み合わせてスクリプトを使って作成されたクライアント設定の抜粋です:&lt;br /&gt;
{{hc|/etc/openvpn/client/&#039;&#039;clienttunnel&#039;&#039;.conf|&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
# Optional, choose a suitable path to chroot into for your system&lt;br /&gt;
chroot /srv&lt;br /&gt;
script-security 2&lt;br /&gt;
up /etc/openvpn/client/client.up&lt;br /&gt;
plugin /usr/lib/openvpn/plugins/openvpn-plugin-down-root.so &amp;quot;/etc/openvpn/client/client.down tun0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート resolv-conf スクリプト === &lt;br /&gt;
&lt;br /&gt;
パッケージに含まれているスクリプトのかわりとして [https://github.com/masterkorp/openvpn-update-resolv-conf openvpn-update-resolv-conf] スクリプトを使うことができます。{{ic|/etc/openvpn/update-resolv-conf}} などに保存して [[chmod]] で実行可能属性を付与してください。AUR の {{AUR|openvpn-update-resolv-conf}} パッケージでスクリプトをインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
スクリプトをインストールしたら OpenVPN のクライアント設定ファイルに以下のような行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
&lt;br /&gt;
これで OpenVPN 接続を起動すると {{ic|resolv.conf}} ファイルが正しく更新され、接続を終了すると通常の {{ic|resolv.conf}} に戻ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|When using {{ic|openresolv}} with the &#039;&#039;-p&#039;&#039; or &#039;&#039;-x&#039;&#039; options in a script (as both the included {{ic|client.up}} and {{ic|update-resolv-conf}} scripts currently do), a DNS resolver like {{Pkg|dnsmasq}} or {{Pkg|unbound}} is required for {{ic|openresolv}} to correctly update {{ic|/etc/resolv.conf}}.  In contrast, when using the default DNS resolution from {{ic|libc}} the &#039;&#039;-p&#039;&#039; and &#039;&#039;-x&#039;&#039; options must be removed in order for {{ic|/etc/resolv.conf}} to be correctly updated by {{ic|openresolv}}. For example, if the script contains a command like {{ic|resolvconf -p -a }} and the default DNS resolver from {{ic|libc}} is being used, change the command in the script to be {{ic|resolvconf -a }}.}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート systemd-resolved スクリプト === &lt;br /&gt;
&lt;br /&gt;
systemd-229 から、[[systemd-networkd]] の {{ic|systemd-resolved.service}} には DBus を使ってリンクごとに DNS の設定を管理することができる API が用意されています。{{ic|/etc/resolv.conf}} が {{ic|systemd-resolved}} によって管理されている場合、{{pkg|openresolv}} などのツールは上手く動かない場合があります。さらに、{{ic|/etc/nsswitch.conf}} ファイルで {{ic|dns}} のかわりに {{ic|resolve}} を使っている場合は全く動作しません。[https://github.com/jonathanio/update-systemd-resolved update-systemd-resolved] スクリプトは DBus を通して OpenVPN と {{ic|systemd-resolved}} をリンクし DNS レコードを更新します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを {{ic|/etc/openvpn}} にコピーして [[chmod]] で実行可能属性を付与するか、AUR パッケージでインストールして ({{AUR|openvpn-update-systemd-resolved}})、OpenVPN のクライアント設定ファイルに以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 setenv PATH /usr/bin&lt;br /&gt;
 up /etc/openvpn/update-systemd-resolved&lt;br /&gt;
 down-pre /etc/openvpn/update-systemd-resolved&lt;br /&gt;
&lt;br /&gt;
== L2 Ethernet ブリッジ ==&lt;br /&gt;
&lt;br /&gt;
次を参照: [[en2:OpenVPN Bridge|OpenVPN Bridge]]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== サスペンド後にクライアントデーモンが再起動しない ===&lt;br /&gt;
&lt;br /&gt;
クライアントをスリープ状態にしてから復帰しても OpenVPN が再起動しないために切断してしまう場合、以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/vpn.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;pre&amp;quot; ]&lt;br /&gt;
then&lt;br /&gt;
  killall openvpn&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|chmod a+x /usr/lib/systemd/system-sleep/vpn.sh}} に実行可能属性を付与してサービスを編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/openvpn-client@.service.d/restart.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=always&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== しばらく通信しないと接続が切れる ===&lt;br /&gt;
&lt;br /&gt;
データを通信していないと接続中と表示されているのに数秒で VPN 接続が切れて、データがトンネルで転送されない場合、サーバーの設定に {{ic|keepalive}} ディレクティブを追加してみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
keepalive 10 120&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定でサーバーは ping のようなメッセージを10秒ごとにクライアントに送信してトンネルを維持します。クライアントから120秒以上反応を得られなかった場合、サーバーはクライアントが切断されたと判断します。&lt;br /&gt;
&lt;br /&gt;
ping の間隔を小さくすることでトンネルの安定性を上げることができますが、発生するトラフィックが増大します。接続環境によっては10秒以下に設定してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://openvpn.net/index.php/open-source.html OpenVPN 公式サイト]&lt;/div&gt;</summary>
		<author><name>Sarisia</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9077</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OpenVPN&amp;diff=9077"/>
		<updated>2017-06-19T12:13:14Z</updated>

		<summary type="html">&lt;p&gt;Sarisia: Wikipediaリンク修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Virtual Private Network]]&lt;br /&gt;
[[de:OpenVPN]]&lt;br /&gt;
[[en:OpenVPN]]&lt;br /&gt;
[[ru:OpenVPN]]&lt;br /&gt;
[[zh-hans:OpenVPN]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN クライアント}}&lt;br /&gt;
{{Related|Linux Containers で OpenVPN サーバー}}&lt;br /&gt;
{{Related|Easy-RSA}}&lt;br /&gt;
{{Related|Airvpn}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では、小規模な事業やプレイベートでの利用に適している、[http://openvpn.net OpenVPN] の基本的なインストールと設定について説明します。詳しい情報は [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を見て下さい。OpenVPN は堅牢で高い柔軟性を持つ [[Wikipedia:VPN|VPN]] デーモンです。[[Wikipedia:SSL/TLS|SSL/TLS]] セキュリティ, [[Wikipedia:Bridging_(networking)|Ethernet ブリッジ]], [[Wikipedia:Proxy_server|プロキシ]]や [[Wikipedia:Network address translation|NAT]] による [[Wikipedia:Transmission_Control_Protocol|TCP]] や [[Wikipedia:User_Datagram_Protocol|UDP]] の[[Wikipedia:Tunneling_protocol|トンネリング]]をサポートしています。さらに、動的 IP アドレスと [[Wikipedia:Dynamic_Host_Configuration_Protocol|DHCP]] をサポートしており、数百あるいは数千までのユーザーに対応し、主要な OS プラットフォームで動作します。&lt;br /&gt;
&lt;br /&gt;
OpenVPN は [http://www.openssl.org OpenSSL] ライブラリと密接に関係しており、OpenSSL の暗号機能を多数利用しています。[[Wikipedia:Pre-shared_key|事前共有秘密鍵]]による慣用暗号 (Static Key モード) とクライアントとサーバーの証明書を用いる[[Wikipedia:Public_key|公開鍵暗号]] ([[Wikipedia:SSL/TLS|SSL/TLS]] モード) をサポートしています。さらに、暗号化を施さない TCP/UDP トンネルにも対応しています。&lt;br /&gt;
&lt;br /&gt;
ほとんどのプラットフォームに存在する [[Wikipedia:TUN/TAP|TUN/TAP]] 仮想ネットワークインターフェイスを使うように OpenVPN は設計されています。OpenVPN は [[Wikipedia:Ipsec|IPSec]] の主要な機能の多くを提供しますがフットプリントは比較的軽量に抑えられます。OpenVPN は James Yonan によって書かれ [[Wikipedia:GNU General Public License|GNU General Public License (GPL)]] の下で公開されています。&lt;br /&gt;
&lt;br /&gt;
== OpenVPN のインストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openvpn}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|このパッケージに含まれているソフトウェアはクライアントとサーバー両方のモードをサポートするため、VPN 接続を作成する全てのマシンにインストールしてください。}}&lt;br /&gt;
&lt;br /&gt;
== カーネルの設定 ==&lt;br /&gt;
&lt;br /&gt;
OpenVPN は TUN/TAP のサポートを必要としますが、デフォルトカーネルでは既に設定済みです。自分でカーネルをビルドするときは、以下のように {{ic|tun}} モジュールを有効にしてください: &lt;br /&gt;
&lt;br /&gt;
{{hc|Kernel config file|&lt;br /&gt;
 Device Drivers&lt;br /&gt;
  --&amp;gt; Network device support&lt;br /&gt;
    [M] Universal TUN/TAP device driver support}}&lt;br /&gt;
&lt;br /&gt;
詳しくは[[カーネルモジュール]]を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 第三者の VPN に接続 ==&lt;br /&gt;
&lt;br /&gt;
サードパーティによって提供されている VPN サービスに接続する場合、以下に書かれていることのほとんど（特にサーバーの設定に関する部分）は無視することができます。[[#クライアントの設定ファイル|クライアントの設定ファイル]]にそって設定して、それから [[#OpenVPN の起動|OpenVPN の起動]]まで飛んでください。証明書はプロバイダによって提供されたものを使います。参照: [[Airvpn]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|フリーの VPN プロバイダの多くは [[PPTP サーバー|PPTP]] を提供しており、簡単に設定することが可能です。ただし、[http://poptop.sourceforge.net/dox/protocol-security.phtml セキュアではありません]。}}&lt;br /&gt;
&lt;br /&gt;
== 公開鍵基盤 (PKI) をスクラッチから作成 ==&lt;br /&gt;
&lt;br /&gt;
スクラッチから OpenVPN をセットアップする場合、[[Wikipedia:ja:公開鍵基盤 (PKI)]] を作成する必要があります。詳しくは [[Easy-RSA]] の記事に書かれています。必要な証明書・秘密鍵・関連ファイルが作成できたら、{{ic|/etc/openvpn/server}} に以下のファイルが存在するはずです:&lt;br /&gt;
*{{ic|/etc/openvpn/server/ca.crt}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/dh.pem}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/servername.crt}} と {{ic|/etc/openvpn/server/servername.key}}&lt;br /&gt;
*{{ic|/etc/openvpn/server/ta.key}}&lt;br /&gt;
&lt;br /&gt;
== ベーシックな L3 IP ルーティング設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|特に明示しないかぎり、この記事では以下の基本的な L3 IP ルーティング設定を使います。}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN は幅広い用途に使えるソフトウェアであり様々な設定ができます。マシンをサーバーとクライアントのどちらにでもできるので、サーバーとクライアントの区別は曖昧です。&lt;br /&gt;
&lt;br /&gt;
v2.4 のリリースから、サーバーの設定は {{ic|/etc/openvpn/server}} に保存され、クライアントの設定は {{ic|/etc/openvpn/client}} に保存されるようになり、それぞれ別の systemd ユニット ({{ic|openvpn-client@.service}} と {{ic|openvpn-server@.service}}) を使うようになりました。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
OpenVPN パッケージには様々な設定サンプルファイルが付属しています。以下の機能を持つベーシックな OpenVPN をセットアップしたい場合、サンプルのサーバーとクライアント設定ファイルを使用すると良いでしょう:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Public key infrastructure|Public Key Infrastructure (PKI)]] を使って認証。&lt;br /&gt;
* 仮想 TUN ネットワークインターフェイスを使用して VPN を作成 (OSI L3 IP ルーティング)。&lt;br /&gt;
* UDP ポート 1194 でクライアントから接続 (OpenVPN の[[Wikipedia:Port_number|公式 IANA ポート番号]])。&lt;br /&gt;
* 仮想アドレスを 10.8.0.0/24 サブネットからクライアントに配布。&lt;br /&gt;
&lt;br /&gt;
高度な設定例は公式の [https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage OpenVPN 2.4 man ページ] や [http://openvpn.net/index.php/open-source/documentation OpenVPN ドキュメント] を読んでください。&lt;br /&gt;
&lt;br /&gt;
=== サーバーの設定ファイル ===&lt;br /&gt;
{{Note|サーバーまでの通り道にファイアウォールや NAT 変換ルーターがある場合、サーバー側で OpenVPN ポートを転送する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
サーバーのサンプル設定ファイルを {{ic|/etc/openvpn/server/server.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/server.conf /etc/openvpn/server/server.conf&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert servername.crt&lt;br /&gt;
key servername.key  # This file should be kept secret&lt;br /&gt;
dh dh.pem&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サーバーの堅牢化 ====&lt;br /&gt;
セキュリティが重要な場合、以下の設定を行うことを推奨します: 強固な暗号・認証方式、新しい tls 暗号だけを使うようにサーバーを設定。{{ic|/etc/openvpn/server/server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
auth SHA512&lt;br /&gt;
tls-version-min 1.2&lt;br /&gt;
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ cipher 行と auth 行を記述する必要があります (特に iOS と Android クライアントの場合)。}}&lt;br /&gt;
&lt;br /&gt;
==== 標準のポートやプロトコルを変更 ====&lt;br /&gt;
パブリックネットワークやプライベートネットワークの管理者によってデフォルトポートやデフォルトプロトコルで OpenVPN 接続が許可されていない場合があります。通常の https/SSL トラフィックのように偽装することで解決できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/openvpn/server/server.conf}} を以下のように設定してください:&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
port 443&lt;br /&gt;
proto tcp&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|.ovpn クライアントプロファイルには同じ port 行と proto 行を記述する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== TCP vs UDP =====&lt;br /&gt;
TCP と UDP には以下のような違いがあります。&lt;br /&gt;
&lt;br /&gt;
TCP&lt;br /&gt;
* いわゆる「ステートフルプロトコル」。&lt;br /&gt;
* 誤り訂正による高い信頼性 (パケット応答を待機)。&lt;br /&gt;
* UDP よりも低速。&lt;br /&gt;
&lt;br /&gt;
UDP&lt;br /&gt;
* いわゆる「ステートレスプロトコル」。&lt;br /&gt;
* 誤り訂正が使われないため TCP よりも信頼性が低い。&lt;br /&gt;
* TCP よりも高速。&lt;br /&gt;
&lt;br /&gt;
=== クライアントの設定ファイル ===&lt;br /&gt;
&lt;br /&gt;
クライアント設定ファイルのサンプルを {{ic|/etc/openvpn/client/client.conf}} にコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp /usr/share/openvpn/examples/client.conf /etc/openvpn/client/client.conf&lt;br /&gt;
&lt;br /&gt;
以下を編集してください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|remote}} ディレクティブにはサーバーの[[Wikipedia:Fully qualified domain name|完全修飾ドメイン名]], (クライアントから名前解決できる) ホストネーム, IP アドレスのどれかを指定してください。&lt;br /&gt;
* 特権を与えないようにするには {{ic|user}} と {{ic|group}} ディレクティブをアンコメントします。&lt;br /&gt;
* {{ic|ca}}, {{ic|cert}}, {{ic|key}} パラメータは鍵と証明書のパス・名前に合わせてください。&lt;br /&gt;
* SSL/TLS HMAC のハンドシェイクを有効にします。クライアントではパラメータを1にしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
.&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
ca ca.crt&lt;br /&gt;
cert client.crt&lt;br /&gt;
key client.key&lt;br /&gt;
.&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 接続後に root 権限を落とす ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルで {{ic|user nobody}} と {{ic|group nobody}} オプションを使うことで接続が確立した後 &#039;&#039;OpenVPN&#039;&#039; は権限を落とします。ただし、VPN が切断されたときにデーモンがネットワークルートを削除して再設定することができないという欠点があります。VPN 接続を使わずにトラフィックの転送を制限したい場合、ルートを残すのは望ましくありません。さらに、トンネルの起動時に OpenVPN サーバーがルートにアップデートをプッシュする可能性もあります。権限が落ちたクライアントではアップデートを実行することができずエラーを吐いて終了します。&lt;br /&gt;
&lt;br /&gt;
As it could seem to require manual action to manage the routes, the options {{ic|user nobody}} and {{ic|group nobody}} might seem undesirable. Depending on setup, however, there are four ways to handle these situations: &lt;br /&gt;
&lt;br /&gt;
* ユニットのエラーの場合、ユニットを[[systemd#ユニットファイルの編集|編集]]して {{ic|[Service]}} セクションに {{ic|1=Restart=on-failure}} を追加してください。ただし、これだけでは古いルートが削除されないため、再起動されたトンネルが正しくルーティングされません。&lt;br /&gt;
* The package contains the {{ic|/usr/lib/openvpn/plugins/openvpn-plugin-down-root.so}}, which can be used to let &#039;&#039;openvpn&#039;&#039; fork a process with root privileges with the only task to execute a custom script when receiving a down signal from the main process, which is handling the tunnel with dropped privileges (see also its [https://community.openvpn.net/openvpn/browser/plugin/down-root/README?rev=d02a86d37bed69ee3fb63d08913623a86c88da15 README]).&lt;br /&gt;
* The [https://openvpn.net/index.php/open-source/documentation/howto.html#security OpenVPN HowTo] explains another way how to create an unprivileged user mode and wrapper script to have the routes restored automatically. &lt;br /&gt;
* Further, it is possible to let OpenVPN start as a non-privileged user in the first place, without ever running as root, see [https://community.openvpn.net/openvpn/wiki/UnprivilegedUser this OpenVPN wiki HowTo].&lt;br /&gt;
&lt;br /&gt;
{{Note|The OpenVPN HowTos linked above create a dedicated non-privileged user/group, instead of the already existing {{ic|nobody}}. The advantage is that this avoids potential risks when sharing a user among daemons.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントプロファイル (Linux, iOS, Android 共通) ===&lt;br /&gt;
{{AUR|ovpngen}} パッケージは OpenVPN Connect の iOS 版や Android アプリでも使えるファイル形式で、OpenVPN 互換のトンネルプロファイルを作成できるシンプルなシェルスクリプトです。&lt;br /&gt;
&lt;br /&gt;
5つのトークンを指定してスクリプトを起動してください:&lt;br /&gt;
# OpenVPN サーバーの完全修飾ドメイン名 (または IP アドレス)。&lt;br /&gt;
# CA 証明書のフルパス。&lt;br /&gt;
# クライアント証明書のフルパス。&lt;br /&gt;
# クライアント秘密鍵のフルパス。&lt;br /&gt;
# サーバー TLS 共有秘密鍵のフルパス。&lt;br /&gt;
# (任意) ポート番号。&lt;br /&gt;
# (任意) プロトコル (udp または tcp)。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
 # ovpngen example.org /etc/openvpn/server/ca.crt /etc/easy-rsa/pki/signed/client1.crt /etc/easy-rsa/pki/private/client1.key /etc/openvpn/server/ta.key &amp;gt; iphone.ovpn&lt;br /&gt;
&lt;br /&gt;
スクリプトはコメント行を追加するので、必要であれば生成された {{ic|iphone.ovpn}} を編集してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|If the server.conf contains a specified cipher and/or auth line, it is highly recommended that users manually edit the generated .ovpn file adding matching lines for cipher and auth.  Failure to do so may results in connection errors!}}&lt;br /&gt;
&lt;br /&gt;
=== 証明書を暗号化された .p12 フォーマットに変換 ===&lt;br /&gt;
ソフトウェアによってはパスワードで暗号化された .p12 ファイルで保存された VPN 証明書しか読み込まない場合があります。ファイルは以下のコマンドで生成することができます:&lt;br /&gt;
{{bc|# openssl pkcs12 -export -inkey keys/bugs.key -in keys/bugs.crt -certfile keys/ca.crt -out keys/bugs.p12}}&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN 設定のテスト ===&lt;br /&gt;
&lt;br /&gt;
サーバーで {{ic|# openvpn /etc/openvpn/server/server.conf}} を実行して、クライアントで {{ic|# openvpn /etc/openvpn/client/client.conf}} を実行してください。以下のような出力がされるはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/server/server.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:26 2011 OpenVPN 2.2.1 x86_64-unknown-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:26 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:26 2011 Diffie-Hellman initialized with 2048 bit key&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:54 2011 bugs/95.126.136.73:48904 MULTI: primary virtual IP for bugs/95.126.136.73:48904: 10.8.0.6&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 PUSH: Received control message: &#039;PUSH_REQUEST&#039;&lt;br /&gt;
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 SENT CONTROL [bugs]: &#039;PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5&#039; (status=1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|# openvpn /etc/openvpn/client/client.conf|2=&lt;br /&gt;
Wed Dec 28 14:41:50 2011 OpenVPN 2.2.1 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011&lt;br /&gt;
Wed Dec 28 14:41:50 2011 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables&lt;br /&gt;
Wed Dec 28 14:41:50 2011 LZO compression initialized&lt;br /&gt;
...&lt;br /&gt;
Wed Dec 28 14:41:57 2011 GID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 UID set to nobody&lt;br /&gt;
Wed Dec 28 14:41:57 2011 Initialization Sequence Completed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サーバーで、tunX デバイスに割り当てられた IP アドレスを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
40: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合、サーバーのトンネルの終末に割り当てられた IP アドレスは 10.8.0.1 です。&lt;br /&gt;
&lt;br /&gt;
クライアントでも同じように確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ip addr show|2=&lt;br /&gt;
...&lt;br /&gt;
37: tun0: &amp;lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100&lt;br /&gt;
    link/none&lt;br /&gt;
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側の IP アドレスは 10.8.0.6 と確認できます。&lt;br /&gt;
&lt;br /&gt;
IP アドレスを確認したら ping を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
サーバー側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.6|2=&lt;br /&gt;
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=1 ttl=64 time=238 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=2 ttl=64 time=237 ms&lt;br /&gt;
64 bytes from 10.8.0.6: icmp_req=3 ttl=64 time=205 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.6 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2002ms&lt;br /&gt;
rtt min/avg/max/mdev = 205.862/227.266/238.788/15.160 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
クライアント側:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c3 10.8.0.1|2=&lt;br /&gt;
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=158 ms&lt;br /&gt;
64 bytes from 10.8.0.1: icmp_req=3 ttl=64 time=157 ms&lt;br /&gt;
&lt;br /&gt;
--- 10.8.0.1 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 received, 0% packet loss, time 2001ms&lt;br /&gt;
rtt min/avg/max/mdev = 157.426/158.278/158.940/0.711 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイアウォールを使っている場合、TUN デバイスの IP パケットがブロックされていないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
=== Fragment と MSS による MTU の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|MTU を設定しなかった場合 ping や DNS などパケット数が少ない通信は上手く行きますが、ウェブブラウザなどはできません。}}&lt;br /&gt;
&lt;br /&gt;
次は最大セグメントサイズ (MSS) の設定です。クライアントとサーバーの経路で最小の MTU を確認する必要があります。断片化を無効化してサーバーに ping することで確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 1500 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 1500(1528) bytes of data.&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)&lt;br /&gt;
&lt;br /&gt;
--- core.myrelay.net ping statistics ---&lt;br /&gt;
0 packets transmitted, 0 received, +5 errors&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の ICMP メッセージによれば MTU は 576 バイトです。UDP のオーバーヘッドのために UDP パケットを 576 バイト未満に断片化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|# ping -c5 -M do -s 548 elmer.acmecorp.org|2=&lt;br /&gt;
PING elmer.acmecorp.org (99.88.77.66) 548(576) bytes of data.&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=1 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=2 ttl=48 time=224 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=3 ttl=48 time=206 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=4 ttl=48 time=207 ms&lt;br /&gt;
556 bytes from 99.88.77.66: icmp_seq=5 ttl=48 time=208 ms&lt;br /&gt;
&lt;br /&gt;
--- myrelay.net ping statistics ---&lt;br /&gt;
5 packets transmitted, 5 received, 0% packet loss, time 4001ms&lt;br /&gt;
rtt min/avg/max/mdev = 206.027/210.603/224.158/6.832 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
試行錯誤によりパケットを 548 バイトで断片化する必要があると確認できました。OpenVPN のクライアント設定ファイルを以下のように修正してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
mssfix 548&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
サーバーにも断片化について設定が必要です。サーバー側の設定では &amp;quot;mssfix&amp;quot; は不要なので注意してください:&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;fragment&#039; ディレクティブをサポートしていないクライアント (例: OpenELEC, [https://forums.openvpn.net/topic13201.html#p31156 iOS アプリ]) は &#039;fragment&#039; ディレクティブを使用しているサーバーに接続できません。そのようなクライアントを使用する場合は、このセクションはスキップして下で説明している &#039;mtu-test&#039; ディレクティブでクライアントを設定してください。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
fragment 548&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|The following will add about 3 minutes to OpenVPN start time. It is advisable to configure the fragment size unless your client is a laptop that will be connecting over many different networks and the bottle neck is on the client side.}}&lt;br /&gt;
&lt;br /&gt;
クライアントが VPN に接続するたびに OpenVPN でテストの ping を実行するように設定することもできます。クライアントはテストを実行していることを通知しない場合があり、テストが完了するまで接続が切れているかのように表示されることがあります。&lt;br /&gt;
{{hc|/etc/openvpn/client/client.conf|&lt;br /&gt;
remote elmer.acmecorp.org 1194&lt;br /&gt;
...&lt;br /&gt;
mtu-test&lt;br /&gt;
...&lt;br /&gt;
tls-auth ta.key &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 ===&lt;br /&gt;
==== IPv6 でサーバーに接続 ====&lt;br /&gt;
&lt;br /&gt;
OpenVPN でデュアルスタックを有効にするには、{{ic|server.conf}} と {{ic|client.conf}} の両方で {{ic|proto udp}} を {{ic|proto udp6}} に変更してください。変更後、IPv4 と IPv6 の両方が有効になります。&lt;br /&gt;
&lt;br /&gt;
==== トンネルで IPv6 を使用 ====&lt;br /&gt;
&lt;br /&gt;
トンネルで IPv6 を使えるようにするには、IPv6 プレフィックスを OpenVPN サーバーにルーティングする必要があります。ゲートウェイでスタティックルートを設定するか (固定ブロックが割り当てられている場合)、あるいは DHCPv6 クライアントを使って DHCPv6 プレフィックス委譲でプレフィックスを取得してください (詳しくは [[IPv6#プレフィックス委譲 (DHCPv6-PD)|IPv6 プレフィックス委譲]]を参照)。アドレスブロック fc00::/7 からユニークなローカルアドレスを使うこともできます。どちらの方法もメリットとデメリットがあります:&lt;br /&gt;
&lt;br /&gt;
* Many ISPs only provide dynamically changing IPv6 prefixes. OpenVPN does not support prefix changes, so you need to change your server.conf every time the prefix is changed (Maybe can be automated with a script).&lt;br /&gt;
* ULA addresses are not routed to the Internet, and setting up NAT is not as straightforward as with IPv4. So you cannot route the entire traffic over the tunnel. If you only want to connect two sites via IPv6, without the need to connect to the Internet over the tunnel, the ULA addresses may be easier to use.&lt;br /&gt;
&lt;br /&gt;
プレフィックスを取得したら ({{ic|/64}} が推奨)、{{ic|server.conf}} に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 server-ipv6 2001:db8:0:123::/64&lt;br /&gt;
&lt;br /&gt;
This is the IPv6 equivalent to the default 10.8.0.0/24 network of OpenVPN and needs to be taken from the DHCPv6 client. Or use for example fd00:1234::/64.&lt;br /&gt;
&lt;br /&gt;
If you want to push a route to your home network (192.168.1.0/24 equivalent), also append:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route-ipv6 2001:db8:0:abc::/64&amp;quot;&lt;br /&gt;
&lt;br /&gt;
OpenVPN does not yet include DHCPv6, so there is no method to e.g. push DNS server over IPv6. This needs to be done with IPv4. The [https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN Wiki] provides some other configuration options.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN の起動 ==&lt;br /&gt;
&lt;br /&gt;
=== 手動起動 ===&lt;br /&gt;
&lt;br /&gt;
VPN 接続をトラブルシュートするときは、root で {{ic|openvpn /etc/openvpn/client/client.conf}} を実行して手動でクライアントのデーモンを起動してください。同じように、サーバーもサーバーの設定ファイル (例: {{ic|openvpn /etc/openvpn/server/server.conf}}) を使って起動できます。&lt;br /&gt;
&lt;br /&gt;
=== systemd サービスの設定 ===&lt;br /&gt;
&lt;br /&gt;
システムの起動時に OpenVPN を自動的に実行するには、クライアントでもサーバーでも、適当なマシンで {{ic|openvpn-server@&#039;&#039;&amp;lt;configuration&amp;gt;&#039;&#039;.service}} を[[有効化]]してください ({{ic|&amp;lt;configuration&amp;gt;}} に {{ic|.conf}} 拡張子は要りません)。&lt;br /&gt;
&lt;br /&gt;
例えば、クライアントの設定ファイルが {{ic|/etc/openvpn/client/&#039;&#039;client&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-client@&#039;&#039;client&#039;&#039;.service}} です。また、サーバーの設定ファイルが {{ic|/etc/openvpn/server/&#039;&#039;server&#039;&#039;.conf}} の場合、サービス名は {{ic|openvpn-server@&#039;&#039;server&#039;&#039;.service}} となります。&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager で接続を開始 ===&lt;br /&gt;
&lt;br /&gt;
クライアント側で VPN トンネルを常時実行しない場合や特定の NetworkManager の接続だけで確立してほしい場合、{{ic|/etc/NetworkManager/dispatcher.d/}} にスクリプトを追加してください。以下の例では &amp;quot;Provider&amp;quot; が NetworkManager の接続名です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-openvpn|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
  up)&lt;br /&gt;
    if [ &amp;quot;$CONNECTION_ID&amp;quot; == &amp;quot;Provider&amp;quot; ]; then&lt;br /&gt;
      systemctl start openvpn@client&lt;br /&gt;
    fi&lt;br /&gt;
  ;;&lt;br /&gt;
  down)&lt;br /&gt;
    systemctl stop openvpn@client&lt;br /&gt;
  ;;&lt;br /&gt;
esac}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [[NetworkManager#ネットワークサービスと NetworkManager dispatcher]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Gnome の設定 ===&lt;br /&gt;
&lt;br /&gt;
Gnome のネットワーク設定を使ってクライアントから OpenVPN サーバーに接続したい場合、以下を実行してください。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|networkmanager-openvpn}} をインストールします。それから設定メニューを開いてネットワークを選択してください。プラス記号をクリックして新しい接続を追加し VPN を選択します。そこから、OpenVPN を選択することができるので手動で設定を入力してください。既に設定ファイルを作成している場合、[[#クライアントの設定ファイル|クライアントの設定ファイル]]をインポートすることもできます。ただし、インポートが上手くいかなかった場合 NetworkManager はエラーメッセージを表示しないので注意してください。後は、接続を有効にすれば設定が適用されて、VPN に接続されます (例: {{ic|journalctl -b --u NetworkManager}})。&lt;br /&gt;
&lt;br /&gt;
== 全てのクライアントの通信をサーバーにルーティング ==&lt;br /&gt;
&lt;br /&gt;
{{Note|There are potential pitfalls when routing all traffic through a VPN server. Refer to [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect the OpenVPN documentation on this topic] for more information.}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは OpenVPN サーバーから直接送受信されたトラフィックしか VPN を通過しません。ウェブのトラフィックなど全てのトラフィックを VPN を通過させたい場合、まずはサーバーの設定ファイル ({{ic|/etc/openvpn/server/server.conf}}) に以下を追加してください [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect]:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;redirect-gateway def1 bypass-dhcp&amp;quot;&lt;br /&gt;
 push &amp;quot;dhcp-option DNS 8.8.8.8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|8.8.8.8}} は使用したい DNS の IP アドレスに変えてください。&lt;br /&gt;
&lt;br /&gt;
サーバーに接続した後、DNS が反応しない場合は、シンプルな DNS フォワーダーとして [[BIND]] をインストールして OpenVPN サーバーの IP アドレスを DNS としてクライアントに送信してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルが設定できたら、サーバーで[[インターネット共有#パケット転送の有効化|パケットフォワーディングを有効化]]してください。さらに、サーバーのファイアウォールを設定して VPN の通信が通るようにします。以下では [[ufw]] と [[iptables]] の設定方法を解説しています。&lt;br /&gt;
&lt;br /&gt;
サーバーとは別の（プライベート）サブネットにもクライアントがアクセスできるようにしたい場合、{{ic|push &amp;quot;route &amp;lt;address pool&amp;gt; &amp;lt;subnet&amp;gt;&amp;quot;}} オプションを使ってください:&lt;br /&gt;
&lt;br /&gt;
 push &amp;quot;route 172.10.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
 push &amp;quot;route 172.20.142.0 255.255.255.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォールの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
VPN 通信の ufw 設定を行うにはまず以下を {{ic|/etc/default/ufw}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/default/ufw|2=&lt;br /&gt;
DEFAULT_FORWARD_POLICY=&amp;quot;ACCEPT&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして {{ic|/etc/ufw/before.rules}} を編集して以下のコードをヘッダーの後ろ、&amp;quot;*filter&amp;quot; 行の前に追加してください。IP やサブネットマスクは {{ic|/etc/openvpn/server/server.conf}} に設定した値と同じ値に変更してください。以下の例ではアダプタ ID が一般的な {{ic|eth0}} ですが必要に応じて編集してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ufw/before.rules|2=&lt;br /&gt;
# NAT (Network Address Translation) table rules&lt;br /&gt;
*nat&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allow traffic from clients to eth0&lt;br /&gt;
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# do not delete the &amp;quot;COMMIT&amp;quot; line or the NAT table rules above will not be processed&lt;br /&gt;
COMMIT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
OpenVPN のポート 1194 を開く:&lt;br /&gt;
&lt;br /&gt;
 # ufw allow 1194&lt;br /&gt;
&lt;br /&gt;
最後に、UFW をリロード:&lt;br /&gt;
&lt;br /&gt;
 # ufw reload&lt;br /&gt;
&lt;br /&gt;
==== iptables ====&lt;br /&gt;
&lt;br /&gt;
In order to allow VPN traffic through your iptables firewall of your server, first create an iptables rule for NAT forwarding [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect] on the server, assuming the interface you want to forward to is named {{ic|eth0}}:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
If you have difficulty pinging the server through the VPN, you may need to add explicit rules to open up TUN/TAP interfaces to all traffic. If that is the case, do the following [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn]:&lt;br /&gt;
&lt;br /&gt;
{{Warning|There are security implications for the following rules if you do not trust all clients which connect to the server. Refer to the [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn OpenVPN documentation on this topic] for more details.}}&lt;br /&gt;
&lt;br /&gt;
 iptables -A INPUT -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tun+ -j ACCEPT&lt;br /&gt;
 iptables -A INPUT -i tap+ -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -i tap+ -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Additionally be sure to accept connections from the OpenVPN port (default 1194) and through the physical interface.&lt;br /&gt;
&lt;br /&gt;
設定ができたら [[iptables#iptables の設定と実行]]に書かれているように設定を永続化させてください。&lt;br /&gt;
&lt;br /&gt;
If you have multiple {{ic|tun}} or {{ic|tap}} interfaces, or more than one VPN configuration, you can &amp;quot;pin&amp;quot; the name of your interface by specifying it in the OpenVPN config file, e.g. {{ic|tun22}} instead of {{ic|tun}}. This is advantageous if you have different firewall rules for different interfaces or OpenVPN configurations.&lt;br /&gt;
&lt;br /&gt;
=== VPN が落ちた時に漏洩を防止 ===&lt;br /&gt;
&lt;br /&gt;
The idea is simple: prevent all traffic through our default interface (enp3s0 for example) and only allow tun0. If the OpenVPN connection drops, your computer will lose its internet access and therefore, avoid your programs to continue connecting through an insecure network adapter.&lt;br /&gt;
&lt;br /&gt;
Be sure to set up a script to restart OpenVPN if it goes down if you do not want to manually restart it.&lt;br /&gt;
&lt;br /&gt;
==== ufw ====&lt;br /&gt;
&lt;br /&gt;
 # Default policies&lt;br /&gt;
 ufw default deny incoming&lt;br /&gt;
 ufw default deny outgoing&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn interface (adjust interface accordingly to your configuration)&lt;br /&gt;
 ufw allow in on tun0&lt;br /&gt;
 ufw allow out on tun0&lt;br /&gt;
 &lt;br /&gt;
 # Local Network (adjust ip accordingly to your configuration)&lt;br /&gt;
 ufw allow in on enp3s0 from 192.168.1.0/24&lt;br /&gt;
 ufw allow out on enp3s0 to 192.168.1.0/24&lt;br /&gt;
 &lt;br /&gt;
 # Openvpn (adjust port accordingly to your configuration)&lt;br /&gt;
 ufw allow out on enp3s0 to any port 1194&lt;br /&gt;
 ufw allow in on enp3s0 from any port 1194&lt;br /&gt;
&lt;br /&gt;
{{Warning| DNS &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &#039;&#039;&#039;unless&#039;&#039;&#039; you run your own dns server like [[BIND]]&lt;br /&gt;
Otherwise, you will need to allow dns leak. &#039;&#039;&#039;Be sure to trust your dns server!&#039;&#039;&#039;&lt;br /&gt;
 # DNS&lt;br /&gt;
 ufw allow in from any to any port 53&lt;br /&gt;
 ufw allow out from any to any port 53&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== vpnfailsafe ====&lt;br /&gt;
&lt;br /&gt;
もしくは [https://github.com/wknapik/vpnfailsafe vpnfailsafe] ({{AUR|vpnfailsafe-git}}) スクリプトをクライアントで使うことでも DNS 漏洩を防ぐことができ、インターネット宛の全てのトラフィックが VPN を通過するようにできます。VPN トンネルが落ちた場合、インターネットへのアクセスはできなくなりますが、VPN サーバーへの接続は可能です。スクリプトには [[#アップデート resolv-conf スクリプト|update-resolv-conf]] の機能も含まれています。&lt;br /&gt;
&lt;br /&gt;
== L3 IPv4 ルーティング==&lt;br /&gt;
&lt;br /&gt;
このセクションでは L3 IPv4 ルーティングを使ってクライアント・サーバー LAN を互いに接続する方法を説明しています。&lt;br /&gt;
&lt;br /&gt;
=== LAN のルーティングの要件 ===&lt;br /&gt;
&lt;br /&gt;
ホストが LAN と VPN で IPv4 パケットを転送できるようにするために、NIC と tun/tap デバイスでパケットを転送できるようにする必要があります。詳しい設定方法は[[インターネット共有#パケット転送の有効化]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== ルーティングテーブル ====&lt;br /&gt;
&lt;br /&gt;
By default, all IP packets on a LAN addressed to a different subnet get sent to the default gateway.  If the LAN/VPN gateway is also the default gateway, there is no problem and the packets get properly forwarded. If not, the gateway has no way of knowing where to send the packets.  There are a couple of solutions to this problem.&lt;br /&gt;
&lt;br /&gt;
* Add a static route to the default gateway routing the VPN subnet to the LAN/VPN gateway&#039;s IP address.&lt;br /&gt;
* Add a static route on each host on the LAN that needs to send IP packets back to the VPN.&lt;br /&gt;
* Use [[iptables]]&#039; NAT feature on the LAN/VPN gateway to masquerade the incoming VPN IP packets.&lt;br /&gt;
&lt;br /&gt;
=== サーバー LAN をクライアントに接続 ===&lt;br /&gt;
&lt;br /&gt;
The server is on a LAN using the 10.66.0.0/24 subnet. To inform the client about the available subnet, add a push directive to the server configuration file:{{hc|/etc/openvpn/server/server.conf|push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the server to the client, add more push directives to the server configuration file, but keep in mind that the server side LANs will need to know how to route to the client.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアント LAN をサーバーに接続 ===&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
&lt;br /&gt;
* Any subnets used on the client side, must be unique and not in use on the server or by any other client. In this example we will use 192.168.4.0/24 for the clients LAN.&lt;br /&gt;
* Each client&#039;s certificate has a unique Common Name, in this case bugs.&lt;br /&gt;
* The server may not use the duplicate-cn directive in its config file.&lt;br /&gt;
&lt;br /&gt;
Create a client configuration directory on the server.  It will be searched for a file named the same as the client&#039;s common name, and the directives will be applied to the client when it connects.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /etc/openvpn/ccd&lt;br /&gt;
&lt;br /&gt;
Create a file in the client configuration directory called bugs, containing the {{ic|iroute 192.168.4.0 255.255.255.0}} directive.  It tells the server what subnet should be routed to the client:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
Add the client-config-dir and the {{ic|route 192.168.4.0 255.255.255.0}} directive to the server configuration file. It tells the server what subnet should be routed from the tun device to the server LAN:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|To route more LANs from the client to the server, add more iroute and route directives to the appropriate configuration files, but keep in mind that the client side LANs will need to know how to route to the server.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとサーバー両方の LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
Combine the two previous sections:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
push &amp;quot;route 10.66.0.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
client-config-dir ccd&lt;br /&gt;
route 192.168.4.0 255.255.255.0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Remember to make sure that all the LANs or the needed hosts can route to all the destinations.}}&lt;br /&gt;
&lt;br /&gt;
=== クライアントとクライアントの LAN を接続 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトではクライアントは互いを認識できません。クライアント間やクライアントの LAN 間の IP パケットを許可するには、サーバーの設定ファイルに {{ic|client-to-client}} ディレクティブを追加してください: {{hc|/etc/openvpn/server/server.conf|client-to-client}}&lt;br /&gt;
&lt;br /&gt;
他のクライアントやクライアント LAN が特定のクライアント LAN を認識できるようにしたい場合、各クライアントのサブネットに対して push ディレクティブをサーバーの設定ファイルに追加してください (サーバーが利用可能なサブネットを他のクライアントに通知します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
client-to-client&lt;br /&gt;
push &amp;quot;route 192.168.4.0 255.255.255.0&amp;quot;&lt;br /&gt;
push &amp;quot;route 192.168.5.0 255.255.255.0&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|As always, make sure that the routing is properly configured.}}&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
&lt;br /&gt;
システムによって使われる DNS サーバーは {{ic|/etc/resolv.conf}} に定義します。伝統的に、このファイルはシステムをネットワークに接続するプログラムによって扱われます (例: Wicd, NetworkManager など)。しかしながら、リモート側で名前解決ができるようにするには、OpenVPN がこのファイルを修正する必要があります。{{pkg|openresolv}} をインストールすることで、複数のプログラムが互いに干渉することなく {{ic|resolv.conf}} を編集できるようになります。&lt;br /&gt;
&lt;br /&gt;
先に進む前に、ネットワーク接続を再起動して {{ic|resolv.conf}} の中に &#039;&#039;resolvconf&#039;&#039; によって生成されたという文言があること、そして DNS の解決が問題なく機能することを確認してください。openresolv を設定する必要はありません。ネットワークによって自動的に認識されて使用されます。&lt;br /&gt;
&lt;br /&gt;
Linux の場合、OpenVPN は DNS のホスト情報を送信することができますが、外部プロセスがそれを扱うようになっています。{{ic|/usr/share/openvpn/contrib/pull-resolv-conf/}} に存在する {{ic|client.up}} と {{ic|client.down}} スクリプトを使用します。スクリプトを {{ic|/etc/openvpn/client/}} にインストールする方法はコメントを見てください。以下は &#039;&#039;resolvconf&#039;&#039; と[[#接続後に root 権限を落とす]]のオプションを組み合わせてスクリプトを使って作成されたクライアント設定の抜粋です:&lt;br /&gt;
{{hc|/etc/openvpn/client/&#039;&#039;clienttunnel&#039;&#039;.conf|&lt;br /&gt;
user nobody&lt;br /&gt;
group nobody&lt;br /&gt;
# Optional, choose a suitable path to chroot into for your system&lt;br /&gt;
chroot /srv&lt;br /&gt;
script-security 2&lt;br /&gt;
up /etc/openvpn/client/client.up&lt;br /&gt;
plugin /usr/lib/openvpn/plugins/openvpn-plugin-down-root.so &amp;quot;/etc/openvpn/client/client.down tun0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート resolv-conf スクリプト === &lt;br /&gt;
&lt;br /&gt;
パッケージに含まれているスクリプトのかわりとして [https://github.com/masterkorp/openvpn-update-resolv-conf openvpn-update-resolv-conf] スクリプトを使うことができます。{{ic|/etc/openvpn/update-resolv-conf}} などに保存して [[chmod]] で実行可能属性を付与してください。AUR の {{AUR|openvpn-update-resolv-conf}} パッケージでスクリプトをインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
スクリプトをインストールしたら OpenVPN のクライアント設定ファイルに以下のような行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
&lt;br /&gt;
これで OpenVPN 接続を起動すると {{ic|resolv.conf}} ファイルが正しく更新され、接続を終了すると通常の {{ic|resolv.conf}} に戻ります。&lt;br /&gt;
&lt;br /&gt;
{{Note|When using {{ic|openresolv}} with the &#039;&#039;-p&#039;&#039; or &#039;&#039;-x&#039;&#039; options in a script (as both the included {{ic|client.up}} and {{ic|update-resolv-conf}} scripts currently do), a DNS resolver like {{Pkg|dnsmasq}} or {{Pkg|unbound}} is required for {{ic|openresolv}} to correctly update {{ic|/etc/resolv.conf}}.  In contrast, when using the default DNS resolution from {{ic|libc}} the &#039;&#039;-p&#039;&#039; and &#039;&#039;-x&#039;&#039; options must be removed in order for {{ic|/etc/resolv.conf}} to be correctly updated by {{ic|openresolv}}. For example, if the script contains a command like {{ic|resolvconf -p -a }} and the default DNS resolver from {{ic|libc}} is being used, change the command in the script to be {{ic|resolvconf -a }}.}}&lt;br /&gt;
&lt;br /&gt;
=== アップデート systemd-resolved スクリプト === &lt;br /&gt;
&lt;br /&gt;
systemd-229 から、[[systemd-networkd]] の {{ic|systemd-resolved.service}} には DBus を使ってリンクごとに DNS の設定を管理することができる API が用意されています。{{ic|/etc/resolv.conf}} が {{ic|systemd-resolved}} によって管理されている場合、{{pkg|openresolv}} などのツールは上手く動かない場合があります。さらに、{{ic|/etc/nsswitch.conf}} ファイルで {{ic|dns}} のかわりに {{ic|resolve}} を使っている場合は全く動作しません。[https://github.com/jonathanio/update-systemd-resolved update-systemd-resolved] スクリプトは DBus を通して OpenVPN と {{ic|systemd-resolved}} をリンクし DNS レコードを更新します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを {{ic|/etc/openvpn}} にコピーして [[chmod]] で実行可能属性を付与するか、AUR パッケージでインストールして ({{AUR|openvpn-update-systemd-resolved}})、OpenVPN のクライアント設定ファイルに以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 script-security 2&lt;br /&gt;
 setenv PATH /usr/bin&lt;br /&gt;
 up /etc/openvpn/update-systemd-resolved&lt;br /&gt;
 down-pre /etc/openvpn/update-systemd-resolved&lt;br /&gt;
&lt;br /&gt;
== L2 Ethernet ブリッジ ==&lt;br /&gt;
&lt;br /&gt;
次を参照: [[en2:OpenVPN Bridge|OpenVPN Bridge]]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== サスペンド後にクライアントデーモンが再起動しない ===&lt;br /&gt;
&lt;br /&gt;
クライアントをスリープ状態にしてから復帰しても OpenVPN が再起動しないために切断してしまう場合、以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/vpn.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;pre&amp;quot; ]&lt;br /&gt;
then&lt;br /&gt;
  killall openvpn&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|chmod a+x /usr/lib/systemd/system-sleep/vpn.sh}} に実行可能属性を付与してサービスを編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/openvpn-client@.service.d/restart.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=always&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== しばらく通信しないと接続が切れる ===&lt;br /&gt;
&lt;br /&gt;
データを通信していないと接続中と表示されているのに数秒で VPN 接続が切れて、データがトンネルで転送されない場合、サーバーの設定に {{ic|keepalive}} ディレクティブを追加してみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/openvpn/server/server.conf|&lt;br /&gt;
...&lt;br /&gt;
keepalive 10 120&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定でサーバーは ping のようなメッセージを10秒ごとにクライアントに送信してトンネルを維持します。クライアントから120秒以上反応を得られなかった場合、サーバーはクライアントが切断されたと判断します。&lt;br /&gt;
&lt;br /&gt;
ping の間隔を小さくすることでトンネルの安定性を上げることができますが、発生するトラフィックが増大します。接続環境によっては10秒以下に設定してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://openvpn.net/index.php/open-source.html OpenVPN 公式サイト]&lt;/div&gt;</summary>
		<author><name>Sarisia</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fcitx&amp;diff=9022</id>
		<title>Fcitx</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fcitx&amp;diff=9022"/>
		<updated>2017-06-04T14:20:58Z</updated>

		<summary type="html">&lt;p&gt;Sarisia: Gnome on Wayland with Fcitxの追記&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:国際化]]&lt;br /&gt;
[[en:Fcitx]]&lt;br /&gt;
[[zh-hans:Fcitx]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|IBus}}&lt;br /&gt;
{{Related|SCIM}}&lt;br /&gt;
{{Related2|uim を使って日本語を入力|UIM}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://fcitx-im.org/wiki/Fcitx Fcitx] (Flexible Input Method Framework) は Linux に環境非依存の言語サポートを提供する[[Wikipedia:ja:インプットメソッド|インプットメソッドフレームワーク]]です。多くの言語をサポートし便利な non-CJK 機能が含まれています。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
{{Pkg|fcitx}} は[[公式リポジトリ]]から [[Pacman]] でインストールできます。&lt;br /&gt;
&lt;br /&gt;
=== インプットメソッドエンジン ===&lt;br /&gt;
&lt;br /&gt;
入力したい言語にあわせて、インプットメソッドエンジンをインストールしてください:&lt;br /&gt;
&lt;br /&gt;
====日本語====&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx-anthy}}: 人気の日本語入力エンジン。開発は停止しています。&lt;br /&gt;
* {{Pkg|fcitx-mozc}}: Google 日本語入力のオープンソース版である [[Mozc]] がベース。&lt;br /&gt;
* {{Pkg|fcitx-kkc}}: {{Pkg|libkkc}} がベースの新しい日本語仮名漢字入力エンジン。&lt;br /&gt;
* {{Pkg|fcitx-skk}}: {{Pkg|libskk}} がベースの日本語仮名漢字入力エンジン。&lt;br /&gt;
&lt;br /&gt;
==== 他の言語 ====&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx-sunpinyin}}: {{Pkg|sunpinyin}} がベース。速度と正確性のバランスが良い。&lt;br /&gt;
* {{Pkg|fcitx-libpinyin}}: {{Pkg|libpinyin}} がベース。{{Pkg|fcitx-sunpinyin}} よりも優れたアルゴリズムが使われています。&lt;br /&gt;
* {{Pkg|fcitx-rime}}: [[Rime IME]] プロジェクトのスキーマがベース。&lt;br /&gt;
* {{Pkg|fcitx-googlepinyin}}: {{Pkg|libgooglepinyin}} がベース。Android 用の Google ピンイン IME。&lt;br /&gt;
* {{AUR|fcitx-sogoupinyin}}: Linux 向けの捜狗インプットメソッド。同音異字、クラウド入力、英語入力、混合入力をサポート。&lt;br /&gt;
* {{Pkg|fcitx-cloudpinyin}}: クラウドによる中国語入力をサポート。&lt;br /&gt;
* {{Pkg|fcitx-chewing}}: {{Pkg|libchewing}} がベースの繁体字の注音入力エンジン。&lt;br /&gt;
* {{Pkg|fcitx-table-extra}}: [[Wikipedia:ja:倉頡輸入法|倉頡]], [[Wikipedia:Zhengma_method|郑码]], [[Wikipedia:Boshiamy_method|嘸蝦米]]サポートを追加。&lt;br /&gt;
* {{Pkg|fcitx-hangul}}: {{Pkg|libhangul}} がベースの韓国語のハングル入力エンジン。&lt;br /&gt;
* {{Pkg|fcitx-unikey}}: ベトナム文字入力エンジン。&lt;br /&gt;
* {{Pkg|fcitx-sayura}}: シンハラ文字入力エンジン。&lt;br /&gt;
* {{Pkg|fcitx-m17n}}: [http://www.nongnu.org/m17n/ M17n] によって提供されている他の言語の入力エンジン。&lt;br /&gt;
&lt;br /&gt;
=== インプットメソッドモジュール ===&lt;br /&gt;
&lt;br /&gt;
GTK+ や Qt プログラムでより良い動作を得るには、必要に応じて {{Pkg|fcitx-gtk2}}, {{Pkg|fcitx-gtk3}}, {{Pkg|fcitx-qt4}}, {{Pkg|fcitx-qt5}} パッケージをインストールしてください。もしくは {{Grp|fcitx-im}} グループで全てのパッケージをインストールできます。&lt;br /&gt;
&lt;br /&gt;
以下のアプリケーションは GTK+/Qt インプットモジュールを使用しません:&lt;br /&gt;
&lt;br /&gt;
* Tk, motif, xlib などを使用するアプリケーション&lt;br /&gt;
* [[Emacs]], [[Opera]], [[OpenOffice]], [[LibreOffice]], [[Skype]], [[Wine]], [[Java]], [[Xterm]], [[urxvt]], WPS&lt;br /&gt;
&lt;br /&gt;
=== スキン ===&lt;br /&gt;
fcitx にはスキンで外観をカスタマイズする機能があります。標準では dark, classic, default の3つのスキンのみが提供されています。&lt;br /&gt;
&lt;br /&gt;
しかしながら、いくつかの追加スキンが [[AUR]] からインストールできます。以下はその一部です:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|fcitx-skin-material}}: マテリアルデザイン風の fcitx スキン。&lt;br /&gt;
* {{AUR|fcitx-skins}}: 8個のスキンを含んだリッチなパッケージ。&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|fcitx-ui-light}}: fcitx の軽量 UI。&lt;br /&gt;
* {{Pkg|fcitx-fbterm}}{{Broken package link|{{aur-mirror|fcitx-fbterm}}}}: Fbterm のサポート。&lt;br /&gt;
* {{Pkg|fcitx-table-other}}: Latex, 絵文字など。&lt;br /&gt;
* {{AUR|fcitx-tablet}}: 手書きのタブレットサポート。&lt;br /&gt;
* {{AUR|fcitx-tsundere}}: 文字を入力した後に何某かを追加するモジュール。&lt;br /&gt;
* {{Pkg|kcm-fcitx}}: fcitx の KDE 設定モジュール。&lt;br /&gt;
&lt;br /&gt;
fcitx のコンポーネントをインストールした後は fcitx の再起動が必要です。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境 ===&lt;br /&gt;
&lt;br /&gt;
[[KDE]], [[GNOME]], [[Xfce]], [[LXDE]] などの XDG 互換のデスクトップ環境を使っている場合は、再ログインで自動的に起動するようになるはずです。起動しないときは、ターミナルを開いて次のように入力してください:&lt;br /&gt;
&lt;br /&gt;
 $ fcitx-autostart&lt;br /&gt;
&lt;br /&gt;
fcitx が正しく動作しているか確認するために、leafpad といったアプリケーションを開いて CTRL+Space (インプットメソッドの切り替えのデフォルトのショートカット) を押して FCITX を呼び出しなにか文字を入力してみて下さい。&lt;br /&gt;
&lt;br /&gt;
Fcitx があなたの環境で自動で起動しない場合や fctix を起動するパラメータを変更したい場合は、デスクトップ環境によって提供されているツールを使って xdg の自動起動を設定するか {{ic|~/.config/autostart/}} ディレクトリ内の {{ic|fcitx-autostart.desktop}} ファイルを編集してください (存在しないときは {{ic|/etc/xdg/autostart/}} からコピーしてください)。&lt;br /&gt;
&lt;br /&gt;
デスクトップ環境が xdg 自動起動をサポートしていない場合は、(環境変数を正しく設定した後に) 次の行をスタートアップスクリプトに追加してください:&lt;br /&gt;
&lt;br /&gt;
 $ fcitx-autostart&lt;br /&gt;
&lt;br /&gt;
xim サポートのある他のインプットメソッドが動作していると、Fcitx は xim エラーで起動できません。Fcitx を起動する前に他のインプットメソッドが動いていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== 非デスクトップ環境 ===&lt;br /&gt;
&lt;br /&gt;
以下の行をデスクトップのスタートアップスクリプトファイル (KDM, GDM, LightDM, SDDM を使っている場合は {{ic|.xprofile}} もしくは {{ic|.profile}}、startx や Slim を使っている場合は {{ic|.xinitrc}}) に追加してください。この設定で、fcitx は gtk/qt のインプットメソッドモジュールを使うようになり xim プログラムをサポートします (必要なインプットメソッドモジュールがすでにインストールされているか確認してください):&lt;br /&gt;
&lt;br /&gt;
 export GTK_IM_MODULE=fcitx&lt;br /&gt;
 export QT_IM_MODULE=fcitx&lt;br /&gt;
 export XMODIFIERS=@im=fcitx&lt;br /&gt;
&lt;br /&gt;
{{Warning|上記の設定を {{ic|.bashrc}} でしないでください。{{ic|.bashrc}} はインタラクティブな bash セッションを初期化するときに使われます。インタラクティブでないセッションや X セッションの初期化では用いられません。さらに、{{ic|.bashrc}} で環境変数を設定すると、コマンドラインから実行した診断ツールに誤解を与えて、X セッションでは環境変数が使われていないのに正しく設定されているかのように表示されることがあります。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 上の設定で動かないときは {{ic|1=export DefaultIMModule=fcitx}} を追加してみて下さい。&lt;br /&gt;
* Fcitx で全ての Qt アプリに問題が発生する場合、qtconfig (qtconfig-qt4) を起動して、3番目のタブを開いて、&amp;quot;Default Input Method&amp;quot; コンボボックスに fcitx があることを確認してください。&lt;br /&gt;
* 現在、Qt5 アプリケーション + fcitx を使用する場合、上記の環境変数を {{ic|.bashrc}} ファイルにも追加しないと動作しないという報告があります (Plasma 5 を startx した場合や、gnome-shell で qt5 アプリケーションを起動した場合)。}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するためにログインしなおしてください。&lt;br /&gt;
&lt;br /&gt;
=== Xim ===&lt;br /&gt;
&lt;br /&gt;
任意で、gtk や qt のプログラムで xim を使うように設定することも可能で、その場合上の行を以下のように変更してください:&lt;br /&gt;
&lt;br /&gt;
 export GTK_IM_MODULE=xim&lt;br /&gt;
 export QT_IM_MODULE=xim&lt;br /&gt;
&lt;br /&gt;
{{Warning|xim を使用するとインプットメソッドによって、入力ができなくなったりインプットメソッドを再起動するとアプリケーションがフリーズするなどの問題がおこることがあります。xim 関連の問題に対しては Fcitx は修正やサポートを提供できません。これは他のインプットメソッドフレームワークでも同じで、可能な限り xim ではなく ツールキット (gtk/qt) のインプットメソッドモジュールを使って下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Gtk2 は 2.24.20 から immodule のキャッシュファイルとして {{ic|/usr/lib/gtk-2.0/2.10.0/immodules.cache}} を使っています。{{ic|GTM_IM_MODULE_FILE}} 環境変数を設定していたり公式パッケージの install スクリプトを使ってキャッシュを更新していない場合、環境変数を変更・削除して {{ic|/usr/bin/gtk-query-immodules-2.0 --update-cache}} を使って immodule キャッシュを更新してください。}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するためにログインしなおしてください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 設定ツール ===&lt;br /&gt;
&lt;br /&gt;
Fcitx は GUI の設定ツールを提供しています。{{Pkg|kcm-fcitx}} (KDE) または {{Pkg|fcitx-configtool}} (GTK+3 ベース) がインストールできます。{{Pkg|fcitx-configtool}} をインストールしたら &#039;&#039;fcitx-config-gtk3&#039;&#039; を起動してください。別の言語のインプットメソッドを使用したいときは &#039;&#039;Only Show Current Language&#039;&#039; の設定を解除してください。&lt;br /&gt;
&lt;br /&gt;
GUI で使っている場合に Fcitx を手動設定することはできません。&lt;br /&gt;
&lt;br /&gt;
スペルチェックを有効にするには、fcitx が fcitx-keyboard によるインプットメソッドを使っている時に ctrl + alt + h を押して下さい。長い単語を入力すれば、動いているかどうか確認できます。&lt;br /&gt;
&lt;br /&gt;
=== デフォルト UI の変更 ===&lt;br /&gt;
&lt;br /&gt;
Fcitx は kimpanel プロトコルによるデスクトップの統合をサポートしています。&lt;br /&gt;
&lt;br /&gt;
====Gnome-Shell====&lt;br /&gt;
&lt;br /&gt;
extensions.gnome.org や [[Arch User Repository|AUR]] の {{AUR|gnome-shell-extension-kimpanel-git}} パッケージから kimpanel をインストールでき、ibus-gjs と同じように使うことができます。&lt;br /&gt;
&lt;br /&gt;
====KDE====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|kdeplasma-addons-applets-kimpanel}}{{Broken package link|package not found}} は kde と統合するための plasmoid です。kimpanel を plasma に追加すれば fcitx は自動的に切り替えます。&lt;br /&gt;
&lt;br /&gt;
==== kimpanel UI ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|kimtoy}} は Sogou や fcitx のスキンを使えます。&lt;br /&gt;
&lt;br /&gt;
=== ピンイン辞書の拡張 ===&lt;br /&gt;
&lt;br /&gt;
ピンイン辞書は {{ic|~/.config/fcitx/pinyin}} に存在します。{{ic|pybase.mb}} ファイルには単一文字が {{ic|pyphrase.mb}} ファイルにはピンインのフレーズが定義されています。拡張するには {{ic|/usr/share/fcitx/pinyin}} にファイルを保存して fcitx を再起動してください。&lt;br /&gt;
&lt;br /&gt;
== Tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
===クリップボード===&lt;br /&gt;
fcitx を使ってクリップボード (とクリップボード履歴) にある文章を入力することが可能です。デフォルトのトリガーキーは Control-; です。このトリガーキーはクリップボードのアドオンの設定ページにある他のオプションと同じように設定することが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Note|クリップボードマネージャではないため、クリップボードマネージャにあるような中身の選択や変更はできません。クリップボードからの入力にだけ使えます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|クライアントによっては複数行の入力をサポートしていないため fcitx-clipboard を使ってクリップボードの中身をペーストすると一行しか出ないことがあります。これはバグかプログラムの方の入力の問題なので fcitx は何もできません。}}&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
=== 問題の診断 ===&lt;br /&gt;
fcitx を使っていて問題が発生する場合、例えばどのアプリケーションでも Ctrl+Space が使えないなどのことが起こるときは、{{ic|fcitx-diagnose}} を使ってまず問題を診断してみてください。{{ic|fcitx-diagnose}} はよくある問題についての手がかりを提供してくれます。また、(IRC やフォーラムなどで) 他の人に相談するときはコマンドの出力を貼り付けると役に立つはずです。&lt;br /&gt;
&lt;br /&gt;
===Emacs===&lt;br /&gt;
{{ic|LC_CTYPE}} が英語の場合、emacs のバグによって emacs でインプットメソッドが使えなくなることがあります。emacs を起動する前に {{ic|ja_JP.UTF-8}} など {{ic|LC_CTYPE}} を他の値に設定することで問題を回避できます。&lt;br /&gt;
&lt;br /&gt;
使用するロケールは有効である必要があります。{{ic|/etc/locale.gen}} を編集して適当な行 (例: {{ic|ja_JP.UTF-8}}) をアンコメントし、{{ic|locale-gen}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのフォントセットはベースフォントとして {{ic|-*-*-*-r-normal--14-*-*-*-*-*-*-*}} を使います (src/xfns.c)。マッチするフォント (terminus や 75dpi など、{{ic|xlsfonts}} の出力を見て下さい) がない場合、XIM は有効になりません。&lt;br /&gt;
&lt;br /&gt;
==== Emacs デーモン ====&lt;br /&gt;
&lt;br /&gt;
[[Emacs#デーモンとして|emacs デーモン/クライアントモード]]を使う場合、デーモンの起動時に {{ic|LC_CTYPE}} を設定してください。例えば {{ic|1=LC_CTYPE=ja_JP.UTF-8 emacs --daemon}} というコマンドを使って emacs デーモンを起動します。&lt;br /&gt;
&lt;br /&gt;
systemd から emacs デーモンを起動している場合、ユニットファイルで以下のように Environment を設定してください:&lt;br /&gt;
&lt;br /&gt;
 Environment=&amp;quot;LC_CTYPE=ja_JP.UTF-8&amp;quot; &amp;quot;XMODIFIERS=@im=fcitx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemd は {{ic|.xprofile}} をロードしないため XMODIFIERS は明示的に設定する必要があります。emacs で {{ic|initial-environment}} 変数をチェックして変数が両方とも正しく設定されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
===Ctrl+Space が GTK のプログラムで機能しない===&lt;br /&gt;
&lt;br /&gt;
ロケールを英語に設定しているとこの問題が発生することがあります。GTK_IM_MODULE が正しく設定されているか確認してください。&lt;br /&gt;
&lt;br /&gt;
参照: [http://fcitx-im.org/wiki/FAQ#When_use_Ctrl_.2B_Space.2C_Fcitx_cannot_be_triggered_on FAQ]&lt;br /&gt;
&lt;br /&gt;
*_IM_MODULE 環境変数を設定していても fcitx が有効にできない場合は、適切なインプットメソッドモジュールをインストールしているか確認してください。&lt;br /&gt;
&lt;br /&gt;
プログラムによっては xim しか使わないため、そうしたプログラムを使っているときは、XMODIFIERS が正しく設定されているか確認してください。プログラムの例: gtk や qt を使わないプログラム全て (例: tk や motif、もしくは xlib を直接使っているプログラム), emacs, opera, openoffice, libreoffice, skype。&lt;br /&gt;
&lt;br /&gt;
gnome の gnome-terminal で fcitx が有効にできず、上の方法で効果がない場合は、以下のコマンドを試してみて下さい:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides &amp;quot;{&#039;Gtk/IMModule&#039;:&amp;lt;&#039;fcitx&#039;&amp;gt;}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 内蔵の Chinese Pinyin がデフォルトで有効にならない ===&lt;br /&gt;
&lt;br /&gt;
ロケールが {{ic|en_US.UTF-8}} である場合、fcitx は内蔵の Chinese Pinyin インプットメソッドをデフォルトで有効にしません。{{ic|fcitx-keyboard-us}} インプットメソッドだけが有効にされます。{{ic|fcitx-diagnose}} コマンドを実行すると以下のように表示されます:&lt;br /&gt;
&lt;br /&gt;
    ## Input Methods:&lt;br /&gt;
        1.  Found 1 enabled input methods:&lt;br /&gt;
                fcitx-keyboard-us&lt;br /&gt;
        2.  Default input methods:&lt;br /&gt;
            **You only have one input method enabled, please add a keyboard input method as the first one and your main input method as the second one.**&lt;br /&gt;
&lt;br /&gt;
GUI の設定ツールで {{ic|Pinyin}} や {{ic|Shuangpin}} インプットメソッドを追加してインプットメソッドが有効にしてください。&lt;br /&gt;
&lt;br /&gt;
=== fcitx と KDE ===&lt;br /&gt;
&lt;br /&gt;
何らかの理由で、[[KDE]] がキーボードレイアウトを適切に扱えないことがあります。例えば、US (English) から LT (Lithuanian) に切り替えた場合、キーボードの数字キーは全てリトアニア文字になるはずですが、数字が出力されてしまいます。以下の手順で修正することが可能です:&lt;br /&gt;
&lt;br /&gt;
# [[#KDE|上のセクション]]で書かれているパッケージをインストールしてください。&lt;br /&gt;
# バックグラウンドで {{ic|fcitx}} を動かしている場合は終了してください。&lt;br /&gt;
# KDE に関連することを無効にします:&lt;br /&gt;
## &#039;&#039;System settings --&amp;gt; Input devices --&amp;gt; Layouts (tab)&#039;&#039; から &amp;quot;Configure layouts&amp;quot; のチェックを外して下さい。&lt;br /&gt;
## &#039;&#039;System settings --&amp;gt; Input devices --&amp;gt; Advanced (tab)&#039;&#039; から &amp;quot;Configure keyboard options&amp;quot; のチェックを外して下さい。&lt;br /&gt;
# ターミナルを開いて {{ic|fcitx}} と入力して fcitx を起動します。ターミナルは閉じてもかまいません。{{ic|fcitx}} はバックグラウンドで動作し続けます。&lt;br /&gt;
# 必要なレイアウトを設定してください (システムトレイアイコンを右クリックして &amp;quot;Configure&amp;quot; をクリック)。&lt;br /&gt;
# システムトレイアイコンを右クリックして、&amp;quot;Exit&amp;quot; をクリック。&lt;br /&gt;
&lt;br /&gt;
これでレイアウトがちゃんと使えるようになるはずです。KDE のレイアウト切り替えrアイコンが表示され、マウススクロールしたりアイコンをクリックすることでレイアウトを切り替えられます。&lt;br /&gt;
&lt;br /&gt;
=== 勝手にインプットメソッドが英語に切り替わってしまう ===&lt;br /&gt;
&lt;br /&gt;
XMind でエンターを押してノードを作成したときなど、インプットメソッドが勝手に英語に切り替わってしまって、元のインプットメソッドに手動で戻さなくてはならないことがあります。&lt;br /&gt;
&lt;br /&gt;
この問題を修正するには、fcitx の GUI 設定ツール ({{Pkg|fcitx-configtool}} に含まれています) を開いて、&amp;quot;Global Config&amp;quot; タブの &amp;quot;Share State Among Window&amp;quot; ドロップダウンメニューから、&amp;quot;PerProgram&amp;quot; または &amp;quot;All&amp;quot; を選択してください。&lt;br /&gt;
&lt;br /&gt;
=== GNOME/Wayland上でのFcitxの利用 ===&lt;br /&gt;
&lt;br /&gt;
Waylandは {{ic|~/.xprofile}} に保管された環境変数を読み込むことができないため、Wayland上ではFcitxは正常に動作しません。Fcitxを利用するにはディスプレイマネージャからXorgセッションを起動してください。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
*[https://github.com/fcitx/fcitx/ Fcitx GitHub]&lt;br /&gt;
*[http://fcitx-im.org/ Fcitx Wiki]&lt;/div&gt;</summary>
		<author><name>Sarisia</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Razer&amp;diff=9021</id>
		<title>Razer</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Razer&amp;diff=9021"/>
		<updated>2017-06-04T14:16:42Z</updated>

		<summary type="html">&lt;p&gt;Sarisia: razer-driver-metaをopenrazer-metaパッケージに変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:マウス]]&lt;br /&gt;
[[Category:キーボード]]&lt;br /&gt;
[[bg:Razer]]&lt;br /&gt;
[[en:Razer]]&lt;br /&gt;
現在 Razer の周辺機器の公式ドライバーは Linux に存在しません。しかしながら、Michael Buesch によって作成されたツール [http://bues.ch/cms/hacking/razercfg.html razercfg] を使って Linux でも Razer のマウスを設定することができます。また、Razer のキーボードのマクロキーを有効にするスクリプトも存在します。比較的新しい {{AUR|razer-driver-meta}}{{Broken package link|package not found}} パッケージを使って Razer のサポートを有効にすることもできます。サポートされているデバイスは [http://github.com/terrycain/razer-drivers こちら] に記載されています。&lt;br /&gt;
&lt;br /&gt;
== Razer 周辺機器 ==&lt;br /&gt;
&lt;br /&gt;
=== 互換性 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;razercfg&#039;&#039; では以下のモデルのマウスを扱うことができます:&lt;br /&gt;
&lt;br /&gt;
* Razer DeathAdder Classic&lt;br /&gt;
* Razer DeathAdder 3500 DPI&lt;br /&gt;
* Razer DeathAdder Black Edition&lt;br /&gt;
* Razer DeathAdder 2013&lt;br /&gt;
* Razer DeathAdder Chroma&lt;br /&gt;
* Razer Krait&lt;br /&gt;
* Razer Naga Classic&lt;br /&gt;
* Razer Naga 2012&lt;br /&gt;
* Razer Naga 2014&lt;br /&gt;
* Razer Naga Hex&lt;br /&gt;
* Razer Taipan&lt;br /&gt;
&lt;br /&gt;
また、以下のモデルも使えますが全ての機能が使えるとは限りません:&lt;br /&gt;
&lt;br /&gt;
* Razer Lachesis&lt;br /&gt;
* Razer Copperhead&lt;br /&gt;
* Razer Boomslang CE&lt;br /&gt;
&lt;br /&gt;
=== インストール ===&lt;br /&gt;
&lt;br /&gt;
[[AUR]] から {{AUR|razercfg}} または {{AUR|razercfg-git}} (開発版) をダウンロード・インストールしてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/X11/xorg.conf}} ファイルを編集して以下のようになっている行をコメントアウトして現在のマウスの設定を無効化してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
 Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
    Identifier  &amp;quot;Mouse&amp;quot;&lt;br /&gt;
    Driver  &amp;quot;mouse&amp;quot;&lt;br /&gt;
    Option  &amp;quot;Device&amp;quot; &amp;quot;/dev/input/mice&amp;quot;&lt;br /&gt;
 EndSection}}&lt;br /&gt;
&lt;br /&gt;
{{ic|xorg.conf}} に記述するのは {{ic|Mouse}} だけで {{ic|Mouse#}} は存在しないようにするのも重要です。&lt;br /&gt;
&lt;br /&gt;
コンピュータを再起動して、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 # udevadm control --reload-rules&lt;br /&gt;
&lt;br /&gt;
それから {{ic|razerd}} デーモンを[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== Razer Configuration Tool を使う ===&lt;br /&gt;
&lt;br /&gt;
コマンドラインツールの &#039;&#039;razercfg&#039;&#039; と Qt による GUI ツール &#039;&#039;qrazercfg&#039;&#039; のどちらかを使うことができます。&lt;br /&gt;
&lt;br /&gt;
ツールからは、マウスの DPI や周波数を変更したり、スクロールやロゴのライトを有効化・無効化したり、ボタンを設定することが可能です。&lt;br /&gt;
&lt;br /&gt;
再起動したらカラーがリセットされてしまう場合、設定ファイルを直接編集してテストしてみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/razer.conf|&lt;br /&gt;
# Configure LEDs&lt;br /&gt;
led&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:GlowingLogo:on&lt;br /&gt;
led&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:Scrollwheel:on&lt;br /&gt;
mode&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:Scrollwheel:static&lt;br /&gt;
color&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:Scrollwheel:0000FF&lt;br /&gt;
mode&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:GlowingLogo:static&lt;br /&gt;
color&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;1:GlowingLogo:FFFFFF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;static&amp;quot; は spectrum や breathing に変更することができ、LED をオフにしたい場合 mode や color は削除します。&lt;br /&gt;
&lt;br /&gt;
== Razer Blade ==&lt;br /&gt;
&lt;br /&gt;
Razer Blade は Razer のゲーミングノートパソコンシリーズです。現在12インチ (Razer Blade Stealth) と14インチ (Razer Blade) と17インチ (Razer Blade Pro) のモデルが存在します。17インチの SBUI トラックパッドはプロプライエタリなため、USB プロトコルをリバースエンジニアリングしないかぎり動作させることは不可能です。&lt;br /&gt;
&lt;br /&gt;
=== 2016 バージョン (Razer Blade &amp;amp; Razer Blade Stealth) ===&lt;br /&gt;
&lt;br /&gt;
通常どおりにインストールすれば動作しますが、例外として以下の点に気をつけてください。&lt;br /&gt;
&lt;br /&gt;
==== Killer 無線ネットワークアダプタ ====&lt;br /&gt;
&lt;br /&gt;
Killer Wireless アダプタは特別なファームウェアがなくても動作します。特に設定は不要です。&lt;br /&gt;
&lt;br /&gt;
重い処理のときに接続が切れてしまう場合 {{Aur|ath10k-firmware-qca9887-git}} パッケージを試してみてください。&lt;br /&gt;
&lt;br /&gt;
==== タッチパッド ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-input-libinput}} パッケージを[[インストール]]してください。ドライバーについては [[Libinput]] を参照。  &lt;br /&gt;
&lt;br /&gt;
もしくは、[[Synaptics タッチパッド]]ドライバーを使用したい場合、{{Pkg|xf86-input-synaptics}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
==== タッチスクリーン ====&lt;br /&gt;
&lt;br /&gt;
タッチスクリーンの基本的な機能は特に設定をしなくても動作しますが、{{AUR|touchegg}} を使うことでマルチタッチのジェスチャーを設定できます。2本指のスクロールや右クリックなどが使えます。&lt;br /&gt;
&lt;br /&gt;
==== グラフィックドライバー ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-video-intel}} パッケージをインストールして得られる標準の Intel ドライバーで動作します。詳しくは [[Intel Graphics]] を見てください。&lt;br /&gt;
&lt;br /&gt;
画面がちらつく問題は &#039;&#039;AccelMethod&#039;&#039; を &#039;&#039;uxa&#039;&#039; に変更することで解決します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-intel.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  Identifier  &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
  Driver      &amp;quot;intel&amp;quot;&lt;br /&gt;
  Option      &amp;quot;AccelMethod&amp;quot;  &amp;quot;uxa&amp;quot;&lt;br /&gt;
  #Option      &amp;quot;AccelMethod&amp;quot;  &amp;quot;sna&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
==== ハイブリッドグラフィック ====&lt;br /&gt;
&lt;br /&gt;
Xorg や Wayland を起動する前にディスクリートの Nvidia GPU をオフにした場合、システムがフリーズします。対処方法としては、グラフィカルセッションを起動した後にディスクリートカードを手動で無効化・有効化するしかありません。ただし、問題を解決する ACPI DSDT のフィックスが存在します。詳しくは [https://github.com/m4ng0squ4sh/razer_blade_14_2016_acpi_dsdt こちらのリポジトリ] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== サスペンドループ ====&lt;br /&gt;
&lt;br /&gt;
(ノートパソコンのフタを閉じると発生する) サスペンドは正しく機能しません。サスペンド自体は可能ですが、復帰したときにまたサスペンドしてしまったり画面が表示されなくなることがあります。&lt;br /&gt;
&lt;br /&gt;
問題を解決するには、[[カーネルパラメータ]]に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 button.lid_init_state=open&lt;br /&gt;
&lt;br /&gt;
上記の設定で acpi ドライバーはサスペンドから復帰したときに特別なイベントを生成してシステムが落ちないようにします。&lt;br /&gt;
&lt;br /&gt;
設定が有効になっているかどうかは以下のコマンドで確認できます:&lt;br /&gt;
{{hc|# cat /sys/module/button/parameters/lid_init_state|open}}&lt;br /&gt;
&lt;br /&gt;
また、全てのブートパラメータを確認するには:&lt;br /&gt;
{{hc|$ cat /proc/cmdline|&amp;lt;nowiki&amp;gt;initrd=\initramfs-linux.img ... button.lid_init_state=open&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記の問題について、2016年12月にはカーネルの ACPI ドライバーのバグとして [https://bugzilla.kernel.org/show_bug.cgi?id=187271 報告] されています。&lt;br /&gt;
&lt;br /&gt;
==== HiDPI ====&lt;br /&gt;
&lt;br /&gt;
[[GNOME]] を使用している場合、&#039;&#039;gnome-tweak-tool&#039;&#039; を使ってウィンドウやフォントのスケールを調整できます。フォントスケールを &#039;&#039;1.25&#039;&#039; に設定することで Windows 10 で表示されるときのフォントサイズに近くなります。&lt;br /&gt;
&lt;br /&gt;
[[HiDPI]] ではないモニターを接続する場合、&#039;&#039;xrandr&#039;&#039; を使って外付けモニターのスケールを変更することができます。[[HiDPI#マルチディスプレイ]]を参照。[[GNOME]] を [[Wayland]] で動作させると更によい結果が得られます。インストールしたら、[[GDM]] の歯車アイコンをクリックして &#039;&#039;Gnome On Wayland&#039;&#039; を選択することでデフォルトで [[Wayland]] で動作するようになります。&lt;br /&gt;
&lt;br /&gt;
==== オーディオ ====&lt;br /&gt;
&lt;br /&gt;
最新の &#039;KabyLake&#039; Intel CPU では、Windows とデュアルブートしている場合、Windows で起動して Linux で再起動したときに音声に問題が発生することがあります。スピーカーから音が出なくなりヘッドフォンにはノイズが響きます (特にタッチパッドを使用しているときに発生します)。公式の解決方法はまだ公開されていませんが、再起動せずにコンピュータを完全にシャットダウンすることで問題は発現しなくなります。&lt;br /&gt;
&lt;br /&gt;
==== ウェブカメラ ====&lt;br /&gt;
&lt;br /&gt;
uvcvideo のオプション {{ic|1=quirks=128}} を設定することでウェブカメラは 720p30 で機能するようになり、[https://hangouts.google.com Google ハングアウト] が使えるようになります。{{Pkg|cheese}} は解像度を 720p に変更してから再起動することで動作します。{{ic|quirk}} を2の倍数で倍々にすることでビデオの品質はさらに上がります。{{ic|1=quirks=512}} で一番綺麗になるようです:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/modprobe.d/uvcvideo.conf|2=&lt;br /&gt;
## fix issue with built-in webcam&lt;br /&gt;
options uvcvideo quirks=512&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== キーボード ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|openrazer-meta}} をインストールすることでバックライトの制御機能 (エフェクトなど) やマクロ制御が有効になります。{{AUR|polychromatic}} や {{AUR|razercommander-git}} を使うことで GUI でキーボードのオプションを設定できます。&lt;br /&gt;
&lt;br /&gt;
=== 2014 バージョン ===&lt;br /&gt;
&lt;br /&gt;
==== 問題 ====&lt;br /&gt;
&lt;br /&gt;
[http://forum.notebookreview.com/razer/751074-2014-razer-blade-14-linux.html ソース]&lt;br /&gt;
&lt;br /&gt;
* タッチパッド (マルチタッチ、ただし修正済みのカーネルバグが原因の可能性あり)&lt;br /&gt;
* 画面の輝度を上げたり下げたりするキーが動作せず&lt;br /&gt;
* キーボードの輝度を上げたり上げたりするキーが動作せず&lt;br /&gt;
&lt;br /&gt;
==== トラックパッドを修正する方法 ====&lt;br /&gt;
&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=173356&amp;amp;p=2 ソース]&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
git clone https://github.com/aduggan/hid-rmi.git -b rb14 # and then install it&lt;br /&gt;
depmod -a&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-input-synaptics}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
動作しない機能: ピンチズーム, 3番目のマウスボタン&lt;br /&gt;
&lt;br /&gt;
=== 2013 バージョン ===&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=173356 ソース]&lt;br /&gt;
&lt;br /&gt;
* ワイヤレス&lt;br /&gt;
* スイッチャブルグラフィック&lt;br /&gt;
* Bluetooth&lt;br /&gt;
* キーボードライト (ハードウェア制御)&lt;br /&gt;
* UEFI ブート&lt;br /&gt;
* トラックパッド (Linux 4.0 以上のみ、libinput ベースの X.Org インプットドライバーは不要 (xf86-input-libinput) [http://git.kernel.org/cgit/linux/kernel/git/jikos/hid.git/log/drivers/hid/hid-rmi.c?h=for-3.20/rmi])&lt;br /&gt;
&lt;br /&gt;
==== 問題 ====&lt;br /&gt;
&lt;br /&gt;
[http://forum.notebookreview.com/razer/729380-razer-blade-pro-under-linux.html ソース]&lt;br /&gt;
&lt;br /&gt;
* ドライバーが存在しないために SwitchBlade UI が動作しない。&lt;br /&gt;
* &amp;lt;strike&amp;gt;トラックパッドでスクロールすることができない。&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== トラックパッドを修正する方法 ====&lt;br /&gt;
&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=173356&amp;amp;p=2 ソース]&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
git clone https://github.com/aduggan/hid-rmi.git -b rb14 # and then install it&lt;br /&gt;
depmod -a&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-input-synaptics}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
動作しない機能: ピンチズーム, 3番目のマウスボタン&lt;br /&gt;
&lt;br /&gt;
== Razer キーボード ==&lt;br /&gt;
Linux でマクロキーを有効にすることができる Python スクリプトが2つ存在します:&lt;br /&gt;
&lt;br /&gt;
=== Blackwidow Control ===&lt;br /&gt;
{{AUR|blackwidowcontrol}} パッケージをインストールして root で以下のコマンドを実行してください:&lt;br /&gt;
 $ blackwidowcontrol -i&lt;br /&gt;
デスクトップ環境のショートカットユーティリティを使ってキーをマッピングできます。特徴:&lt;br /&gt;
* BlackWidow, BlackWidow 2013, BlackWidow Ultimate Stealth 2014 で動作することを確認済み&lt;br /&gt;
* BlackWidow Ultimate, BlackWidow Ultimate 2013, BlackWidow 2014 でもおそらく動作&lt;br /&gt;
* BlackWidow (Ultimate) 2016 では動作せず&lt;br /&gt;
* Python 3 を使用&lt;br /&gt;
* LED の状態を制御可能&lt;br /&gt;
* キーボードが接続されたときに自動的にマクロキーを有効にする udev ルールが含まれています。&lt;br /&gt;
&lt;br /&gt;
=== Blackwidow マクロスクリプト ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|razer-blackwidow-macro-scripts}} パッケージをインストールしてください。特徴:&lt;br /&gt;
&lt;br /&gt;
* BlackWidow Ultimate と Stealth 2013 で動作 (他のバージョンで動作するかは不明)&lt;br /&gt;
* Python 2 を使用&lt;br /&gt;
* マクロを作成・実行するためのスクリプトが付属&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== マウスがときどき機能しなくなる ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;Razer Orochi 2013&#039;&#039; と [[ASUS N550JV]] で確認済みです。ノートパソコンは給電に問題を抱えている場合があり、接続されているマウスの USB ポートに直接影響を与えて問題を引き起こすことがあります。}}&lt;br /&gt;
&lt;br /&gt;
しばらく経つと Razer のマウスが (LED は光っているのに) 動作しなくなり、再起動したりコードを抜き差ししても解決しない場合、以下のコマンドを試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|ehci_pci}} と {{ic|ehci_hcd}} モジュールをアンロード:&lt;br /&gt;
&lt;br /&gt;
 # rmmod ehci_pci&lt;br /&gt;
 # rmmod ehci_hcd&lt;br /&gt;
&lt;br /&gt;
マウスを切断して、数秒間待ってから以下のコマンドを実行してモジュールを再度ロード:&lt;br /&gt;
&lt;br /&gt;
 # modprobe ehci_hcd&lt;br /&gt;
 # modprobe ehci_pci&lt;br /&gt;
&lt;br /&gt;
マウスを接続すると動作するようになっているはずです。&lt;/div&gt;</summary>
		<author><name>Sarisia</name></author>
	</entry>
</feed>