<?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=Ozraru</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=Ozraru"/>
	<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/Ozraru"/>
	<updated>2026-04-14T08:28:45Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Pkg&amp;diff=38134</id>
		<title>テンプレート・トーク:Pkg</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Pkg&amp;diff=38134"/>
		<updated>2024-07-18T14:32:40Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== 証明書切れ ===&lt;br /&gt;
&lt;br /&gt;
archlinux.jpにおけるSSL証明書切れの影響で，JP Wikiでは&lt;br /&gt;
* [[ Template:Pkg ]]&lt;br /&gt;
* [[ Template:Grp ]]&lt;br /&gt;
のリンクはHSTSで警告が表示される状況です ([[Template:AUR]]は大丈夫)．&lt;br /&gt;
&lt;br /&gt;
対応に時間がかかるようであれば，&lt;br /&gt;
暫定的に&lt;br /&gt;
{{ bc |&amp;lt;nowiki&amp;gt;&lt;br /&gt;
- https://www.archlinux.jp/packages/?name=dvd%2Brw-tools&lt;br /&gt;
+ https://archlinux.org/packages/?sort=&amp;amp;q=dvd%2Brw-tools&amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
のように直接 .orgのリポジトリに遷移するよう変更してはいかがでしょうか？&lt;br /&gt;
- [[利用者:Atsuyaw|atsuyaw]] ([[利用者・トーク:Atsuyaw|トーク]]) 2024年4月27日 (土) 13:40 (JST)&lt;br /&gt;
&lt;br /&gt;
誰も何も言わないので、変更しておきました。&lt;br /&gt;
- [[利用者:Ozraru|Ozraru]] ([[利用者・トーク:Ozraru|トーク]]) 2024年7月18日 (木) 23:32 (JST)&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Grp&amp;diff=38133</id>
		<title>テンプレート:Grp</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Grp&amp;diff=38133"/>
		<updated>2024-07-18T14:30:46Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: リンク先をarchlinux.jpからarchlinux.orgに変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Template:Template}}&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]]に含まれている特定のグループパッケージを検索するインラインリンク。&lt;br /&gt;
&lt;br /&gt;
==使用方法==&lt;br /&gt;
&lt;br /&gt;
{{Ic|&amp;lt;nowiki&amp;gt;{{Grp|group}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
グループ名に含まれている特殊文字は自動的に URL エンコードされます。&lt;br /&gt;
&lt;br /&gt;
==サンプル==&lt;br /&gt;
&lt;br /&gt;
{{Ic|&amp;lt;nowiki&amp;gt;{{Grp|xorg-apps}}&amp;lt;/nowiki&amp;gt;}} → {{Grp|xorg-apps}}&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
* [[テンプレート:Pkg]]&lt;br /&gt;
* [[テンプレート:AUR]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;plainlinks archwiki-template-pkg&amp;quot;&amp;gt;[https://www.archlinux.org/groups/x86_64/{{urlencode:{{{1}}}}}/ {{{1}}}]&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Pkg&amp;diff=38132</id>
		<title>テンプレート:Pkg</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Pkg&amp;diff=38132"/>
		<updated>2024-07-18T14:29:00Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: リンク先をarchlinux.jpからarchlinux.orgに変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Template:Template}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[公式リポジトリ]]の指定したパッケージを検索するインラインリンク。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
{{Ic|&amp;lt;nowiki&amp;gt;{{Pkg|package}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|This template will &#039;&#039;search&#039;&#039; for {{Ic|package}} in the official repos. Thus, if {{Ic|package-&#039;&#039;foo&#039;&#039;}} and {{Ic|package-&#039;&#039;bar&#039;&#039;}} exist, all matching variations will be listed. See also {{bug|26383}}.}}&lt;br /&gt;
&lt;br /&gt;
Special characters in the package name are automatically encoded in the URL, for example&lt;br /&gt;
&lt;br /&gt;
{{Ic|&amp;lt;nowiki&amp;gt;{{Pkg|dvd+rw-tools}}&amp;lt;/nowiki&amp;gt;}} → {{Pkg|dvd+rw-tools}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|package}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Template:Grp]]&lt;br /&gt;
* [[Template:AUR]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;plainlinks archwiki-template-pkg&amp;quot;&amp;gt;[https://www.archlinux.org/packages/?name={{urlencode:{{{1}}}}} {{{1}}}]&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OpenSSH&amp;diff=27170</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OpenSSH&amp;diff=27170"/>
		<updated>2022-09-04T15:26:28Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: /* サーバーに接続する */ コマンド修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translateme|飜訳および編集が必要です。英語版を参照してください。}}&lt;br /&gt;
[[Category:Secure Shell]]&lt;br /&gt;
[[Category:サーバー]]&lt;br /&gt;
[[Category:OpenBSD]]&lt;br /&gt;
[[de:SSH]]&lt;br /&gt;
[[en:OpenSSH]]&lt;br /&gt;
[[es:OpenSSH]]&lt;br /&gt;
[[fa:SSH]]&lt;br /&gt;
[[fr:OpenSSH]]&lt;br /&gt;
[[pt:Secure Shell]]&lt;br /&gt;
[[ru:OpenSSH]]&lt;br /&gt;
[[zh-hans:OpenSSH]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|SSH 鍵}}&lt;br /&gt;
{{Related|Pam abl}}&lt;br /&gt;
{{Related|fail2ban}}&lt;br /&gt;
{{Related|sshguard}}&lt;br /&gt;
{{Related|Sshfs}}&lt;br /&gt;
{{Related|syslog-ng}}&lt;br /&gt;
{{Related|SFTP chroot}}&lt;br /&gt;
{{Related|SCP と SFTP}}&lt;br /&gt;
{{Related|乱数生成}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
Secure Shell (SSH) は暗号技術を利用して、安全にリモートコンピュータと通信するためのネットワークプロトコルです。暗号によってデータの機密性と完全性が保証されます。SSH は公開鍵暗号を使ってリモートコンピュータを認証し、リモートコンピュータは必要に応じてユーザーを認証します。&lt;br /&gt;
&lt;br /&gt;
基本的に SSH はリモートマシンにログインしてコマンドを実行するために使われますが、トンネリングや TCP ポートや X11 接続の任意のフォワーディングをサポートしており、SFTP や SCP プロトコルを使うことでファイル転送をすることも可能です。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、SSH サーバーは標準の TCP 22番ポートを使います。通常は SSH クライアントプロトコルを使って &#039;&#039;sshd&#039;&#039; デーモンの接続を確立してリモート接続を承認します。macOS, GNU/Linux, Solaris, OpenVMS など近代的なオペレーティングシステムのほとんどでサーバーとクライアントの両方が備わってします。複雑なもの・完全なものまで様々なレベルのバージョンがプロプライエタリ・フリーウェア・オープンソースを問わずに存在します。&lt;br /&gt;
&lt;br /&gt;
== OpenSSH ==&lt;br /&gt;
OpenSSH (OpenBSD Secure Shell) は ssh プロトコルを使ってコンピューターネットワークを介して暗号化通信セッションを提供するコンピュータープログラムのセットです。SSH Communications Security によるプロプライエタリの Secure Shell ソフトウェアスイートに代わるオープンのプログラムとして作成されました。OpenSSH は Theo de Raadt に率いられている OpenBSD プロジェクトの一環として開発されています。&lt;br /&gt;
&lt;br /&gt;
同じような名前の OpenSSL と OpenSSH が混同されることがときどきありますが、プロジェクトの目的・開発チームは異なります。&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH のインストール ===&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|openssh}} を[[pacman|インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
=== SSH の設定 ===&lt;br /&gt;
====クライアント====&lt;br /&gt;
SSH クライアントの設定ファイルは {{ic|/etc/ssh/ssh_config}} もしくは {{ic|~/.ssh/config}} です。&lt;br /&gt;
&lt;br /&gt;
{{ic|Protocol 2}} を明示的に設定する必要はありません。デフォルトの設定ファイルではコメントアウトされています。つまり明示的に有効にされない限り {{ic|Protocol 1}} は使われません。 (ソース: http://www.openssh.org/txt/release-5.4)&lt;br /&gt;
&lt;br /&gt;
====デーモン====&lt;br /&gt;
SSH デーモンの設定ファイルは {{ic|/etc/ssh/ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} です。&lt;br /&gt;
&lt;br /&gt;
特定のユーザーにだけアクセスを許可するには次の行を追加してください:&lt;br /&gt;
 AllowUsers    &#039;&#039;user1 user2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
特定のグループにだけアクセスを許可するには:&lt;br /&gt;
 AllowGroups   &#039;&#039;group1 group2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SSH による root ログインを無効にするには、PermitRootLogin 行を次のように変更してください:&lt;br /&gt;
 PermitRootLogin no&lt;br /&gt;
&lt;br /&gt;
{{Note|1=バージョン 7.0p1 からは {{ic|PermitRootLogin prohibit-password}} がデフォルトになっています。{{ic|man sshd_config}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
ウェルカムメッセージを追加するには {{ic|/etc/issue}} ファイルを編集して {{ic|Banner}} 行を次のように変更してください:&lt;br /&gt;
 Banner /etc/issue&lt;br /&gt;
&lt;br /&gt;
ホスト鍵は sshd の systemd サービスによって自動的に生成されます。sshd に特定の鍵を使用させたい場合、手動で設定します:&lt;br /&gt;
 HostKey /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
&lt;br /&gt;
サーバーに WAN からアクセスできる場合、デフォルトのポートである 22 から別のランダムなポートに変更することが推奨されています:&lt;br /&gt;
 Port 39901&lt;br /&gt;
&lt;br /&gt;
{{Note|OpenSSH では設定ファイルに &#039;&#039;Port x&#039;&#039; 行を複数記述することで複数のポートを使うことができます。}}&lt;br /&gt;
&lt;br /&gt;
パスワードによるログインを使わないようにすればセキュリティは大幅に向上します。詳しくは [[SSH 鍵#パスワードログインの無効化]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== sshd デーモンの管理 ===&lt;br /&gt;
次のコマンドで sshd デーモンを起動することができます:&lt;br /&gt;
 # systemctl start sshd.service&lt;br /&gt;
&lt;br /&gt;
次のコマンドで sshd デーモンを起動時に有効にすることができます:&lt;br /&gt;
 # systemctl enable sshd.service&lt;br /&gt;
&lt;br /&gt;
詳しくは [[systemd#ユニットを使う]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Warning|Systemd は非同期にプロセスを実行します。SSH デーモンを特定の IP アドレス {{ic|ListenAddress 192.168.1.100}} に結びつけている場合、デフォルトの sshd.service ユニットファイルはネットワークインターフェイスが有効にされることに依存していないため、ブート中にロードが失敗する可能性があります。IP アドレスをバインドする時は、カスタムした sshd.service ユニットファイルに {{ic|1=After=network.target}} を追加してください。[[systemd#ユニットファイルの編集]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
また SSH デーモンソケットを有効にすることで初めて接続があったときにデーモンが起動するようにすることもできます:&lt;br /&gt;
 # systemctl start sshd.socket&lt;br /&gt;
 # systemctl enable sshd.socket&lt;br /&gt;
デフォルトの22番以外のポートを使う場合、ユニットファイルを[[systemd#ユニットファイルの編集|編集]]する必要があります:&lt;br /&gt;
{{hc|# systemctl edit sshd.socket|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Socket]&lt;br /&gt;
ListenStream=&lt;br /&gt;
ListenStream=12345&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|sshd.socket}} を使用すると {{ic|ListenAddress}} の設定が打ち消されて、どのアドレスからでも接続できるようになってしまいます。{{ic|ListenAddress}} の設定を適用するには、{{ic|ListenStream}} でポートと IP を指定する必要があります (例: {{ic|1=ListenStream=192.168.1.100:22}})。また、{{ic|[Socket]}} の下に {{ic|1=FreeBind=true}} を追加するようにしてください。そうしないと IP アドレスの設定が {{ic|ListenAddress}} の設定と同じように無効になってしまいます: ネットワークが立ち上がっていない場合にソケットの起動が失敗します。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|ソケットアクティベーションを使う場合、{{ic|sshd.socket}} でもデーモンの標準の {{ic|sshd.service}} でもログの接続試行を監視することはできません。ただし {{ic|# journalctl /usr/bin/sshd}} を実行することで監視できます。}}&lt;br /&gt;
&lt;br /&gt;
=== サーバーに接続する ===&lt;br /&gt;
サーバーに接続するには、次を実行してください:&lt;br /&gt;
 $ ssh -p &#039;&#039;port&#039;&#039; &#039;&#039;user&#039;&#039;@&#039;&#039;server-address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== SSH の保護 ===&lt;br /&gt;
管理業務のために SSH によるリモートログインを許可することは良いことですが、サーバーのセキュリティに脅威を及ぼすことにもなりえます。総当り攻撃の標的になりやすいので、SSH のアクセスは制限して、第三者がサーバーにアクセスできないようにする必要があります。&lt;br /&gt;
* わかりにくいアカウント名やパスワードを使う&lt;br /&gt;
* 信頼できる国からの SSH 接続だけを許可する&lt;br /&gt;
* [[fail2ban]] や [[sshguard]] をつかってブルートフォース攻撃を監視し、総当りを起こっている IP を閉め出す&lt;br /&gt;
&lt;br /&gt;
==== ブルートフォースアタックからの保護 ====&lt;br /&gt;
ブルートフォースは単純な攻撃方法です: ランダムなユーザー名とパスワードの組み合わせをとにかく沢山作ってウェブページや SSH などのサーバーログインプロンプトにログインを絶えず試行します。ブルートフォース攻撃からは [[fail2ban]] や [[sshguard]] などの自動スクリプトを使うことで攻撃者をブロックすることで身を守ることができます。[[Uncomplicated Firewall#ufw によるレート制限]]も参照。&lt;br /&gt;
&lt;br /&gt;
もしくは、公開鍵認証を使うことでブルートフォース攻撃を出来なくすることもできます。{{ic|sshd_config}} に次の設定を追加:&lt;br /&gt;
&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 ChallengeResponseAuthentication no&lt;br /&gt;
&lt;br /&gt;
上の設定を適用する前に、SSH アクセスが必要な全てのアカウントで {{ic|authorized_keys}} ファイルに公開鍵認証の設定をするようにしてください。詳しくは [[SSH 鍵#リモートサーバーに公開鍵をコピー]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== 2段階認証 ====&lt;br /&gt;
&lt;br /&gt;
SSH 鍵のペアによる認証を使用していてパスワードによろうログインを無効化している場合に、2段階認証を使いたいときは [[Google Authenticator]] や [[SSH 鍵#2段階認証と公開鍵]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== root ログインを制限する ====&lt;br /&gt;
一般的に、SSH で無制限に root ログインを許可することは推奨されません。セキュリティの向上のために、SSH での root ログインを制限する方法は2つ存在します。&lt;br /&gt;
&lt;br /&gt;
===== root ログインを拒否する =====&lt;br /&gt;
&lt;br /&gt;
Sudo を使うことで、root アカウントの認証を行うことなく、必要に応じて root 権限を選択的に付与することができます。このため SSH による root ログインを拒否して、攻撃者にパスワードに加えて (root でない) ユーザー名も推測させる必要を生じさせることで、ブルートフォース攻撃を困難にすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/ssh/sshd_config}} の &amp;quot;Authentication&amp;quot; セクションを編集することで SSH からの root ログインを拒否するように設定できます。{{ic|#PermitRootLogin prohibit-password}} を {{ic|no}} に変更して行をアンコメントしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config|&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、SSH デーモンを[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
これで、SSH を使って root でログインすることはできなくなります。ただし、通常ユーザーでログインしてから [[su]] や [[sudo]] を使ってシステム管理を行うことは依然として可能です。&lt;br /&gt;
&lt;br /&gt;
===== root ログインを限定する =====&lt;br /&gt;
自動的な作業の中にも、リモートによるフルシステムバックアップなど、root 権限を必要とするものがあります。セキュアな方法で root を許可したい場合、SSH による root ログインを無効化する代わりに、特定のコマンドだけ root ログインを許可することができます。{{ic|~root/.ssh/authorized_keys}} を編集して、以下のように特定のキーの前にコマンドを記述します:&lt;br /&gt;
&lt;br /&gt;
 command=&amp;quot;/usr/lib/rsync/rrsync -ro /&amp;quot; ssh-rsa …&lt;br /&gt;
&lt;br /&gt;
上記の設定で、特定の鍵を使ってログインした場合はクォートで囲ったコマンドを実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
ログイン時に root ユーザーの名前を出すことで攻撃する対象が増えてしまうことに対しては {{ic|sshd_config}} に以下を追加することで埋め合わせができます:&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin forced-commands-only&lt;br /&gt;
&lt;br /&gt;
上記の設定は root が SSH で実行できるコマンドを制限するだけでなく、パスワードの使用も無効化して、root アカウントでは強制的に公開鍵認証を使うようになります。&lt;br /&gt;
&lt;br /&gt;
root で使えるコマンドは制限しないで公開鍵認証の強制だけをするという手もあり、それでもブルートフォース攻撃はほぼ不可能です。その場合、以下を設定:&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin without-password&lt;br /&gt;
&lt;br /&gt;
== 他の SSH クライアントとサーバー ==&lt;br /&gt;
OpenSSH の他にも、多数の SSH [[Wikipedia:Comparison of SSH clients|クライアント]] と[[Wikipedia:Comparison of SSH servers|サーバー]]が存在します。&lt;br /&gt;
&lt;br /&gt;
=== Dropbear ===&lt;br /&gt;
[[Wikipedia:Dropbear (software)|Dropbear]] は SSH-2 クライアント・サーバーです。{{Pkg|dropbear}} は[[公式リポジトリ]]から利用可能です。&lt;br /&gt;
&lt;br /&gt;
コマンドラインの ssh クライアントは dbclient という名前が付けられています。&lt;br /&gt;
&lt;br /&gt;
=== Mosh ===&lt;br /&gt;
Mosh の [http://mosh.mit.edu/ ウェブサイト] より:&lt;br /&gt;
&lt;br /&gt;
ローミングが可能で、断続的な接続もサポートしているリモート端末アプリケーションです。ユーザーのキーストロークのローカルエコーと行編集を提供します。Mosh は SSH の代替です。SSH よりも強固でレスポンスが早く、特に Wi-Fi や携帯端末からの接続、長距離通信など通信速度が遅い場合に役に立ちます。&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|mosh}} を[[pacman|インストール]]するか [[Arch User Repository|AUR]] にある最新版 {{AUR|mosh-git}} を使って下さい。&lt;br /&gt;
&lt;br /&gt;
Mosh にはドキュメントに記載されていないコマンドラインオプション {{ic|1=--predict=experimental}} が存在し、よりアグレッシブにローカルのキーストロークのエコーを生成します。キーボード入力が遅延なく確認できるのに興味があるのであればこの prediction モードを使ってみて下さい。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 SOCKS トンネル ===&lt;br /&gt;
暗号化トンネルは信頼ができない様々なワイヤレス接続を使用するノートパソコンなどで非常に有用です。必要なのは SSH サーバーが安全な場所 (家や仕事場など) で動作していることだけです。[http://www.dyndns.org/ DynDNS] などのダイナミック DNS サービスを利用すれば IP アドレスを覚える必要もありません。&lt;br /&gt;
&lt;br /&gt;
==== 手順 1: 接続の開始 ====&lt;br /&gt;
以下のコマンドを実行することで接続を開始できます:&lt;br /&gt;
 $ ssh -TND 4711 &#039;&#039;user&#039;&#039;@&#039;&#039;host&#039;&#039;&lt;br /&gt;
{{Ic|&#039;&#039;user&#039;&#039;}} はユーザー名に {{Ic|&#039;&#039;host&#039;&#039;}} は SSH サーバーが動作しているホストに置き換えてください。パスワードを入力すると接続が行われます。{{Ic|N}} フラグはインタラクティブプロンプトを無効化し、{{Ic|D}} フラグは listen するローカルポートを指定します (ポート番号は何でもかまいません)。{{Ic|T}} フラグは疑似 tty アロケーションを無効化します。&lt;br /&gt;
&lt;br /&gt;
verbose ({{Ic|-v}}) フラグを追加することで、接続が成功していることを出力から確認することができます。&lt;br /&gt;
&lt;br /&gt;
==== 手順 2: ブラウザ (やその他のプログラム) の設定 ====&lt;br /&gt;
新しく作成した socks トンネルを使用するようにウェブブラウザ (や他のプログラム) を設定しないと上記の作業は無意味です。最新バージョンの SSH は SOCKS4 と SOCKS5 に対応しているため、どちらかを使うことができます。&lt;br /&gt;
&lt;br /&gt;
* Firefox の場合: &#039;&#039;編集 &amp;amp;rarr; 設定 &amp;amp;rarr; 詳細 &amp;amp;rarr; ネットワーク &amp;amp;rarr; 接続 &amp;amp;rarr; 接続設定&#039;&#039;:&lt;br /&gt;
: ラジオボタンの&#039;&#039;手動でプロキシを設定する&#039;&#039;にチェックを入れて、&#039;&#039;SOCKS ホスト&#039;&#039;テキストフィールドに {{ic|localhost}} と、次のテキストフィールドにポート番号を入力してください (上の例では {{ic|4711}})。&lt;br /&gt;
&lt;br /&gt;
Firefox はデフォルトでは DNS リクエストの作成に socks トンネルを使用しません。以下の手順で設定することでプライバシーを守ることができます:&lt;br /&gt;
&lt;br /&gt;
# Firefox のロケーションバーに about:config と入力。&lt;br /&gt;
# network.proxy.socks_remote_dns を検索。&lt;br /&gt;
# 値を true に設定。&lt;br /&gt;
# ブラウザを再起動。&lt;br /&gt;
&lt;br /&gt;
* Chromium の場合: 環境変数やコマンドラインオプションで SOCKS の設定ができます。以下の関数を {{ic|.bashrc}} に追加することを推奨します:&lt;br /&gt;
 function secure_chromium {&lt;br /&gt;
     port=4711&lt;br /&gt;
     export SOCKS_SERVER=localhost:$port&lt;br /&gt;
     export SOCKS_VERSION=5&lt;br /&gt;
     chromium &amp;amp;&lt;br /&gt;
     exit&lt;br /&gt;
 }&lt;br /&gt;
もしくは:&lt;br /&gt;
 function secure_chromium {&lt;br /&gt;
     port=4711&lt;br /&gt;
     chromium --proxy-server=&amp;quot;socks://localhost:$port&amp;quot; &amp;amp;&lt;br /&gt;
     exit&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ターミナルから以下のように実行してください:&lt;br /&gt;
 $ secure_chromium&lt;br /&gt;
&lt;br /&gt;
=== X11 フォワーディング ===&lt;br /&gt;
&lt;br /&gt;
X11 フォワーディングはリモートシステムで X11 プログラムを動作させて、グラフィカルインターフェイスをローカルのクライアントマシンで表示させるメカニズムです。X11 フォワーディングではリモートホストに X11 システムを完全にインストールさせる必要はなく、&#039;&#039;xauth&#039;&#039; をインストールするだけで十分です。&#039;&#039;xauth&#039;&#039; は、、X11 セッションの認証を行うために必要なサーバーとクライアントによって使用される {{ic|Xauthority}} の設定を管理するユーティリティです ([http://xmodulo.com/2012/11/how-to-enable-x11-forwarding-using-ssh.html ソース])。&lt;br /&gt;
&lt;br /&gt;
{{Warning|X11 フォワーディングにはセキュリティ的に重要な問題があります。{{ic|ssh}}, {{ic|sshd_config}}, {{ic|ssh_config}} のマニュアルページの該当するセクションを読んで最低限の知識をつけてください。[https://security.stackexchange.com/questions/14815/security-concerns-with-x11-forwarding こちらの記事] も参照。}}&lt;br /&gt;
&lt;br /&gt;
==== セットアップ ====&lt;br /&gt;
&lt;br /&gt;
リモート側:&lt;br /&gt;
&lt;br /&gt;
*[[公式リポジトリ]]から {{Pkg|xorg-xauth}} と {{Pkg|xorg-xhost}} を[[インストール]]&lt;br /&gt;
*{{ic|/etc/ssh/ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} 内:&lt;br /&gt;
**{{ic|AllowTcpForwarding}} と {{ic|X11UseLocalhost}} オプションを &#039;&#039;yes&#039;&#039; に設定し、{{ic|X11DisplayOffset}} を &#039;&#039;10&#039;&#039; に設定 (何も変更を加えてなければこの値がデフォルトになっています、{{ic|man sshd_config}} を参照)&lt;br /&gt;
**{{ic|X11Forwarding}} を &#039;&#039;yes&#039;&#039; に設定&lt;br /&gt;
* [[#sshd デーモンの管理|&#039;&#039;sshd&#039;&#039; デーモン]]を[[Systemd#ユニットを使う|再起動]]&lt;br /&gt;
* リモートシステムでも X サーバーを動作させる必要があります。&lt;br /&gt;
&lt;br /&gt;
クライアント側では、接続するたびにコマンドラインで {{ic|-X}} スイッチを指定して {{ic|ForwardX11}} オプションを有効にするか、[[#クライアント|openSSH クライアントの設定ファイル]]で {{ic|ForwardX11}} を &#039;&#039;yes&#039;&#039; に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|GUI の描画がおかしい場合やエラーが表示されるときは {{ic|ForwardX11Trusted}} オプションを有効にできます (コマンドラインでは {{ic|-Y}} スイッチ)。X11 フォワーディングが [https://www.x.org/wiki/Development/Documentation/Security/ X11 SECURITY 拡張] の制御から外れるようになります。使用するときはセクション冒頭の[[#X11 フォワーディング|警告]]を読んでください。}}&lt;br /&gt;
&lt;br /&gt;
==== 使用方法 ====&lt;br /&gt;
&lt;br /&gt;
通常通り[[#サーバーに接続する|リモートマシンにログイン]]します、クライアント側の設定ファイルで &#039;&#039;ForwardX11&#039;&#039; を有効にしていない場合は {{ic|-X}} スイッチを指定します:&lt;br /&gt;
 $ ssh -X &#039;&#039;user@host&#039;&#039;&lt;br /&gt;
グラフィカルなアプリケーションを実行しようとするとエラーが表示される場合、代わりに &#039;&#039;ForwardX11Trusted&#039;&#039; を試してみて下さい:&lt;br /&gt;
 $ ssh -Y &#039;&#039;user@host&#039;&#039;&lt;br /&gt;
リモートサーバーで X プログラムが起動できるようになったら、出力がローカルセッションに転送されます:&lt;br /&gt;
 $ xclock&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cannot open display&amp;quot; エラーが表示される場合、root 以外のユーザーで以下のコマンドを実行してみてください:&lt;br /&gt;
 $ xhost +&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは全てのユーザーに X11 アプリケーションの転送を許可します。特定のホストだけに転送を制限するには:&lt;br /&gt;
 $ xhost +hostname&lt;br /&gt;
&lt;br /&gt;
hostname は転送先のホストの名前に置き換えてください。詳しくは {{ic|man xhost}} を参照。&lt;br /&gt;
&lt;br /&gt;
特定のアプリケーションではローカルマシンでインスタンスが動作しているかチェックが実行されます。例えば [[Firefox]] は以下の起動パラメータを使用してローカルマシンでリモートインスタンスを起動する必要があります:&lt;br /&gt;
 $ firefox --no-remote&lt;br /&gt;
&lt;br /&gt;
接続時に &amp;quot;X11 forwarding request failed on channel 0&amp;quot; と表示される場合 (サーバーの {{ic|/var/log/errors.log}} に &amp;quot;Failed to allocate internet-domain X11 display socket&amp;quot; と出力される場合)、{{Pkg|xorg-xauth}} パッケージがインストールされていることを確認してください。上手く機能しない場合、以下の設定を試してみてください:&lt;br /&gt;
&lt;br /&gt;
* サーバーの {{ic|ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} で {{ic|AddressFamily any}} オプションを有効にする。&lt;br /&gt;
* サーバーの {{ic|ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} で {{ic|AddressFamily}} オプションを inet に設定する。&lt;br /&gt;
IPv4 で Ubuntu クライアントを使っている場合は inet に設定することで問題が解決します。&lt;br /&gt;
&lt;br /&gt;
SSH サーバーの他のユーザーで X アプリケーションを実行するには SSH でログインしているユーザーの {{Ic|xauth list}} の認証行を {{Ic|xauth add}} する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 他のポートのフォワーディング ===&lt;br /&gt;
SSH は X11 をサポートしているだけでなく、TCP 接続のセキュアなトンネル化に使用することもできます。ローカルフォワーディングとリモートフォワーディングの両方が使えます。&lt;br /&gt;
&lt;br /&gt;
ローカルフォワーディングはローカルマシンのポートを開いて、リモートホストに接続が転送されます。転送先をリモートホストと同じにすることで、同一マシンでセキュアな VNC 接続などができます。ローカルフォワーディングは {{Ic|-L}} スイッチで利用することができ {{Ic|&amp;lt;tunnel port&amp;gt;:&amp;lt;destination address&amp;gt;:&amp;lt;destination port&amp;gt;}} という形式で転送先を指定します:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -L 1000:mail.google.com:25 192.168.0.100&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは SSH で 192.168.0.100 にログインしてシェルを開きます。そしてローカルマシンの TCP ポート 1000 から mail.google.com のポート 25 にトンネルが作成されます。接続が確立すると localhost:1000 への通信は Gmail の SMTP ポートに接続されます。Google から見ると、192.168.0.100 から接続が来ているように見えます (必ずしも接続と一緒にデータが運ばれるとは限りません)。データはローカルマシンと 192.168.0.100 の間は安全に運ばれます。&lt;br /&gt;
&lt;br /&gt;
同じように以下のコマンドは localhost:2000 に接続することができ、リモートホストのポート 6001 に透過的に送信されます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -L 2000:192.168.0.100:6001 192.168.0.100&lt;br /&gt;
&lt;br /&gt;
前者の例はセキュリティ上問題がある ({{AUR|tightvnc}} パッケージに含まれている) vncserver ユーティリティによる VNC 接続などで有用です。&lt;br /&gt;
&lt;br /&gt;
リモートフォワーディングは SSH トンネルとローカルマシンを通してリモートホストから任意のホストに接続できるようにします。ローカルフォワーディングとは逆の機能であり、ファイアウォールによってリモートホストの接続が限られている場合などに有用です。リモートフォワーディングは {{Ic|-R}} スイッチで使うことができ {{Ic|&amp;lt;tunnel port&amp;gt;:&amp;lt;destination address&amp;gt;:&amp;lt;destination port&amp;gt;}} という形式で転送先を指定します:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -R 3000:irc.freenode.net:6667 192.168.0.200&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは 192.168.0.200 にシェルを立ち上げて、192.168.0.200 からローカルホストの3000番ポートへの接続をトンネルを通して送信し、それから irc.freenode.net のポート 6667 に転送します。ポート 6667 がブロックされている場合でもリモートホストから IRC プログラムを利用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
ローカルフォワーディングとリモートフォワーディングはどちらもセキュアなゲートウェイとして使用することができます。{{Ic|&amp;lt;tunnel address&amp;gt;:&amp;lt;tunnel port&amp;gt;:&amp;lt;destination address&amp;gt;:&amp;lt;destination port&amp;gt;}} のようにバインドアドレスをつかうことで、SSH や SSH デーモンを動かしていなくても他のコンピュータが SSH トンネルを利用することが可能です。{{Ic|&amp;lt;tunnel address&amp;gt;}} はトンネルの入り口となるマシンのアドレスです: {{Ic|localhost}}, {{Ic|*}} (あるいは空)。特定のアドレス経由の接続、ループバックインターフェイス経由の接続、全てのインターフェイス経由の接続を許可します。デフォルトでは、フォワーディングはトンネルの入り口のマシンからの接続だけに制限されており {{Ic|&amp;lt;tunnel address&amp;gt;}} は {{Ic|localhost}} に設定されています。ローカルフォワーディングは特に設定が必要ありませんが、リモートフォワーディングはリモートサーバーの SSH デーモンの設定によって制限を受けます。詳しくは {{Ic|sshd_config(5)}} の {{Ic|GatewayPorts}} オプションを見てください。&lt;br /&gt;
&lt;br /&gt;
=== 踏み台ホスト ===&lt;br /&gt;
&lt;br /&gt;
場合によっては、接続先の SSH デーモンに直接接続できず、踏み台サーバー (ジャンプサーバー) を使わざるを得ないことがあります。ふたつ以上の SSH トンネルを接続して、それぞれのサーバーに対してローカルの鍵で認証します。SSH エージェントの転送 ({{ic|-A}}) と疑似端末の割当 ({{ic|-t}}) を使って以下のようにローカルの鍵を転送します:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -A -t -l user1 bastion1 \&lt;br /&gt;
   ssh -A -t -l user2 intermediate2 \&lt;br /&gt;
   ssh -A -t -l user3 target&lt;br /&gt;
&lt;br /&gt;
以下のように {{ic|-J}} フラグを使用することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J user1@bastion1,user2@intermediate2 user3@target&lt;br /&gt;
&lt;br /&gt;
{{ic|-J}} ディレクティブで指定するホストはカンマで区切り、指定された順番で接続されます。{{ic|user...@}} の部分は必須ではありません。{{ic|-J}} で指定したホストは ssh の設定ファイルを使うため、必要であればホスト毎にオプションを設定することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== マルチプレクス ===&lt;br /&gt;
&lt;br /&gt;
SSH デーモンは通常はポート 22 番をリッスンします。しかし、公共のインターネット・ホットスポットでは HTTP/HTTPS のポート（80 と 443）以外のトラフィックをブロックしていることが一般的です。そのため SSH 接続がブロックされてしまいます。すぐできる解決策として、許可されているポートで sshd を起動するという方法があります：&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config|&lt;br /&gt;
Port 22&lt;br /&gt;
Port 443&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしポート 443 番は HTTPS を提供する Web サーバにすでに使われていることが多いです。その場合は {{Pkg|sslh}} のようなマルチプレクサを使います。これは指定ポートをリッスンし、そこに来るパケットを複数のサービスに賢く振り分けることができます。&lt;br /&gt;
&lt;br /&gt;
=== SSH の高速化 ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|SSH を SFTP や SCP で使用する場合、{{AUR|openssh-hpn-git}} をインストールすることで転送速度を劇的に上げることができます [https://www.psc.edu/index.php/hpn-ssh]。}}&lt;br /&gt;
&lt;br /&gt;
同一のホストのセッションは全て単一の接続を使うようにすることで、後のログインを劇的に高速化することができます。{{ic|/etc/ssh/ssh_config}} や {{ic|$HOME/.ssh/config}} の適当なホストの下に以下の行を追加してください:&lt;br /&gt;
 ControlMaster auto&lt;br /&gt;
 ControlPersist yes&lt;br /&gt;
 ControlPath ~/.ssh/sockets/socket-%r@%h:%p&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.ssh/sockets}} は他のユーザーが書き込めないディレクトリなら何でもかまいません。&lt;br /&gt;
&lt;br /&gt;
{{ic|ControlPersist}} はクライアントとの接続を閉じるまでにどれくらい待機するか指定します。{{ic|yes}} で永遠に待ち続け、{{ic|no}} で接続を即座に終了します。秒数で指定することもできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|ControlPersist}} を {{ic|yes}} に設定すると接続が自動的に終了しなくなるので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
速度を向上させる別のオプションとして圧縮を有効化する {{ic|-C}} フラグがあります。{{ic|/etc/ssh/ssh_config}} の適切なホストの下に次の行を追加することで永続的に設定することができます:&lt;br /&gt;
 Compression yes&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{man|1|ssh}} には「モデム接続など接続速度が遅い場合は圧縮の効果がありますが、高速なネットワークではむしろ通信が遅くなります」と書かれています。ネットワーク環境によっては圧縮は逆効果です。}}&lt;br /&gt;
&lt;br /&gt;
ログイン時刻は {{ic|AddressFamily inet}} オプションや {{ic|-4}} フラグを使って IPv6 ルックアップを迂回することで短くできます。&lt;br /&gt;
&lt;br /&gt;
=== SSHFS でリモートファイルシステムをマウントする ===&lt;br /&gt;
sshfs を使って (SSH でアクセスした) リモートのファイルシステムをローカルフォルダにマウントする方法は [[Sshfs]] の記事を参照してください。マウントしたファイルは様々なツールであらゆる操作することができます (コピー、名前の変更、vim で編集など)。基本的に shfs よりも sshfs を使用することを推奨します。sshfs は shfs の新しいバージョンであり、元の shfs は2004年から更新されていません。&lt;br /&gt;
&lt;br /&gt;
=== Keep alive ===&lt;br /&gt;
一定時間操作がないと ssh セッションは自動的にログアウトします。接続を維持するには以下をクライアントの {{ic|~/.ssh/config}} か {{ic|/etc/ssh/ssh_config}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
 ServerAliveInterval 120&lt;br /&gt;
&lt;br /&gt;
これで120秒ごとに &amp;quot;keep alive&amp;quot; シグナルがサーバーに送信されます。{{ic|ServerAliveCountMax}} や {{ic|TCPKeepAlive}} オプションも参照してください。&lt;br /&gt;
&lt;br /&gt;
反対に、外部からの接続を維持するには、次をサーバーの {{ic|/etc/ssh/sshd_config}} に設定します (数字は0より大きく):&lt;br /&gt;
 &lt;br /&gt;
 ClientAliveInterval 120&lt;br /&gt;
&lt;br /&gt;
=== systemd で SSH トンネルを自動的に再起動 ===&lt;br /&gt;
&lt;br /&gt;
[[systemd]] を使ってブート時/ログイン時に SSH 接続を自動的に開始して、接続が失敗した時に再起動させることができます。SSH トンネルの管理に役立つツールとなります。&lt;br /&gt;
&lt;br /&gt;
以下のサービスでは、[[#ssh の設定に接続データを保存する|ssh の設定]]に保存された接続設定を使って、ログイン時に SSH トンネルを開始します。接続が何らかの理由で閉じられた場合、10秒待機してから再起動します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/tunnel.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SSH tunnel to myserver&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=10&lt;br /&gt;
ExecStart=/usr/bin/ssh -F %h/.ssh/config -N myserver&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記のユーザーサービスを[[有効化]]して[[起動]]してください。トンネルがタイムアウトするのを防ぐ方法は [[#Keep alive]] を見て下さい。起動時にトンネルを開始したい場合、ユニットをシステムサービスとして書きなおして下さい。&lt;br /&gt;
&lt;br /&gt;
=== Autossh - SSH セッションとトンネルの自動再起動 ===&lt;br /&gt;
ネットワークの状態が悪かったりしてクライアントが切断してしまい、セッションやトンネルの接続を維持できない場合、{{Pkg|autossh}} を使って自動的にセッションとトンネルを再起動できます。&lt;br /&gt;
&lt;br /&gt;
使用例:&lt;br /&gt;
 $ autossh -M 0 -o &amp;quot;ServerAliveInterval 45&amp;quot; -o &amp;quot;ServerAliveCountMax 2&amp;quot; username@example.com&lt;br /&gt;
[[sshfs]] を組み合わせる:&lt;br /&gt;
 $ sshfs -o reconnect,compression=yes,transform_symlinks,ServerAliveInterval=45,ServerAliveCountMax=2,ssh_command=&#039;autossh -M 0&#039; username@example.com: /mnt/example &lt;br /&gt;
[[プロキシ設定]]で設定した SOCKS プロクシを使って接続:&lt;br /&gt;
 $ autossh -M 0 -o &amp;quot;ServerAliveInterval 45&amp;quot; -o &amp;quot;ServerAliveCountMax 2&amp;quot; -NCD 8080 username@example.com &lt;br /&gt;
{{ic|-f}} オプションで autossh をバックグラウンドプロセスとして実行することができます。ただし対話式でパスフレーズを入力することができなくなります。&lt;br /&gt;
&lt;br /&gt;
セッション中に {{ic|exit}} と入力したり autossh プロセスに SIGTERM, SIGINT, SIGKILL 信号が送られるとセッションは終了します。&lt;br /&gt;
&lt;br /&gt;
==== systemd を使ってブート時に自動的に autossh を起動する ====&lt;br /&gt;
autossh を自動的に起動したい場合、以下の systemd ユニットファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/autossh.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=AutoSSH service for port 2222&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;AUTOSSH_GATETIME=0&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/autossh -M 0 -NL 2222:localhost:2222 -o TCPKeepAlive=yes foo@bar.com&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=AUTOSSH_GATETIME=0}} は接続が成功して ssh が立ち上がったと autossh が認識する秒数です。0に設定すると autossh は ssh の最初の起動失敗を無視します。起動時に autossh を実行する場合は設定するべきです。他の環境変数は man ページを見てください。必要であればもっと複雑に設定することもできますが、{{ic|1=AUTOSSH_GATETIME=0}} を含む {{ic|-f}} は systemd では機能しません。&lt;br /&gt;
&lt;br /&gt;
設定後はサービスを[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
以下のように ControlMaster を無効化する必要もあるかもしれません:&lt;br /&gt;
&lt;br /&gt;
 ExecStart=/usr/bin/autossh -M 0 -o ControlMaster=no -NL 2222:localhost:2222 -o TCPKeepAlive=yes foo@bar.com&lt;br /&gt;
&lt;br /&gt;
{{Tip|複数のautosshプロセスを維持し、複数のトンネルを存続させることも簡単です。名前の異なる複数のサービスファイルを作成するだけです。}}&lt;br /&gt;
&lt;br /&gt;
== ソケットアクティベーションで SSH ポート番号を変更する (sshd.socket) ==&lt;br /&gt;
&lt;br /&gt;
次の内容で {{ic|/etc/systemd/system/sshd.socket.d/port.conf}} ファイルを作成:&lt;br /&gt;
&lt;br /&gt;
 [Socket]&lt;br /&gt;
 # Disable default port&lt;br /&gt;
 ListenStream=&lt;br /&gt;
 # Set new port&lt;br /&gt;
 ListenStream=12345&lt;br /&gt;
&lt;br /&gt;
リロードすれば systemd は自動的に新しいポートを開きます:&lt;br /&gt;
&lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
=== チェックリスト ===&lt;br /&gt;
&lt;br /&gt;
以下は最初に行うべきトラブルシューティングのチェックリストです。何かする前に以下の問題をチェックすることを推奨します。&lt;br /&gt;
&lt;br /&gt;
# 設定ディレクトリ {{ic|~/.ssh}} の中身がユーザーからアクセスできることを確認する (クライアントとサーバーの両方で確認してください): {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 700 ~/.ssh&lt;br /&gt;
$ chmod 600 ~/.ssh/*&lt;br /&gt;
$ chown -R $USER ~/.ssh&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# クライアントの公開鍵 (例: {{ic|id_rsa.pub}}) がサーバーの {{ic|~/.ssh/authorized_keys}} に存在することを確認する。&lt;br /&gt;
# [[#デーモン|サーバーの設定]]で {{ic|AllowUsers}} や {{ic|AllowGroups}} によって SSH によるアクセスが制限されていることを確認する。&lt;br /&gt;
# ユーザーにパスワードが設定されていることを確認する。新しいユーザーにはパスワードが設定されていない可能性があります。&lt;br /&gt;
# {{ic|sshd}} を再起動してクライアントとサーバーの両方で一度ログアウトをしてみる。&lt;br /&gt;
&lt;br /&gt;
=== 接続が拒否されるまたはタイムアウトする ===&lt;br /&gt;
&lt;br /&gt;
==== ルーターがポートフォワーディングをしていないか？ ====&lt;br /&gt;
&lt;br /&gt;
NAT モードやルーターを使っている場合、ルーターが ssh 接続を転送していないか確認してください。サーバーの内部 IP アドレスは {{ic|$ ip addr}} で確認することができるので、SSH ポートの TCP をその IP に転送するようにルーターを設定してください。[http://portforward.com portforward.com] も役に立ちます。&lt;br /&gt;
&lt;br /&gt;
==== SSH が動作しているか？ ====&lt;br /&gt;
 $ ss -tnlp&lt;br /&gt;
&lt;br /&gt;
上記のコマンドで SSH ポートが開いていると表示されない場合、SSH は動作していません。{{ic|/var/log/messages}} にエラーがないか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== 接続をブロックするようなファイアウォールのルールが存在しないか？ ====&lt;br /&gt;
&lt;br /&gt;
[[iptables]] によってポート {{ic|22}} の接続がブロックされている可能性があります。次のコマンドで確認してください:&lt;br /&gt;
{{bc|# iptables -nvL}}&lt;br /&gt;
{{ic|INPUT}} チェインのパケットを拒否するようなルールがないか見て下さい。そして、必要であれば、次のようなコマンドでポートのブロックを解除します:&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT&lt;br /&gt;
}}&lt;br /&gt;
ファイアウォールの設定に関する詳細は[[ファイアウォール]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== トラフィックがコンピュータにまで到達しているか？ ====&lt;br /&gt;
以下のように問題のコンピュータのトラフィックを収集してみてください:&lt;br /&gt;
&lt;br /&gt;
 # tcpdump -lnn -i any port ssh and tcp-syn&lt;br /&gt;
&lt;br /&gt;
上記は基本的な情報を表示します。トラフィックが表示されるまで待ってください。その後、接続を試行してみてください。何も出力がされない場合、コンピュータの外側にある何かがトラフィックを妨害しています (例: ハードウェアファイアウォールや NAT ルーターなど)。&lt;br /&gt;
&lt;br /&gt;
==== ISP またはサードパーティによってデフォルトのポートがブロックされてないか？ ====&lt;br /&gt;
{{Note|このステップは次のことを確認した後で実行してください。ファイアーウォールを何も起動していないこと。DMZ へのルーターを正しく設定している、またはコンピュータへポートを転送していること。それでもまだ動かない場合、ここで診断のステップと解決法が見つかるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
ときどき ISP (インターネット・サービス・プロバイダ) が SSH のデフォルトポート (22番) をブロックしている場合があります。この場合はあなたが何をしても (ポートを開ける、スタックを強化する、フラッドアタックを防御する、など) 無意味になります。ブロックされているかどうか確認するために、全てのインターフェイス (0.0.0.0) をリッスンする sshd を立ち上げ、リモートから接続してみます。&lt;br /&gt;
&lt;br /&gt;
このようなエラーメッセージが出る場合：&lt;br /&gt;
 ssh: connect to host www.inet.hr port 22: Connection refused&lt;br /&gt;
&lt;br /&gt;
これはそのポートが ISP にブロックされていないが、そのポートでサーバーの SSH が起動していないことを意味します ([[wikipedia:Security_through_obscurity|security through obscurity]] を参照)。&lt;br /&gt;
&lt;br /&gt;
しかし、次のようなエラーメッセージが出る場合：&lt;br /&gt;
 ssh: connect to host 111.222.333.444 port 22: Operation timed out &lt;br /&gt;
&lt;br /&gt;
これは何かがポート 22 での TCP トラフィックを拒否 (reject) していることを意味します。そのポートはあなたのサーバー上のファイアーウォールか第三者 (ISP など) のどちらかによってステルスされています。自分のサーバーでファイアーウォールが起動していないことが確かなら、また、ルーターやスイッチの中でグレムリンが育っていないことが確かなら、ISP がトラフィックをブロックしています。&lt;br /&gt;
&lt;br /&gt;
ダブルチェックのために、サーバ上で Wireshark を起動してポート 22 でのトラフィックをリッスンしてみましょう。Wireshark はレイヤ 2 のパケット・スニファリング・ユーティリティであり、TCP/UDP はレイヤ 3 以上なので ([[wikipedia:ja:インターネット・プロトコル・スイート|IP ネットワークスタック]]を参照)、もしリモートから接続するときに何も受け取っていなければ、十中八九、第三者がブロックしています。&lt;br /&gt;
&lt;br /&gt;
===== 問題診断 =====&lt;br /&gt;
{{Pkg|tcpdump}} または {{Pkg|wireshark-cli}} パッケージの Wireshark を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
tcpdump の場合:&lt;br /&gt;
 # tcpdump -ni &#039;&#039;interface&#039;&#039; &amp;quot;port 22&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wireshark の場合:&lt;br /&gt;
 $ tshark -f &amp;quot;tcp port 22&amp;quot; -i &#039;&#039;interface&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;interface&#039;&#039;}} は WAN 接続に使っているネットワークインターフェイスに置き換えてください (確認したいときは {{ic|ip a}} を実行)。リモートで接続を試行してもパケットが全く受け取れない場合、ISP によってポート 22 のトラフィックがブロックされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
===== 解決方法 =====&lt;br /&gt;
解決方法は、単に ISP がブロックしていない他のポートを使うことです。{{ic|/etc/ssh/sshd_config}} を編集して他のポートを使うようにしましょう。例えば次を追加します：&lt;br /&gt;
&lt;br /&gt;
 Port 22&lt;br /&gt;
 Port 1234&lt;br /&gt;
&lt;br /&gt;
そしてこのファイル中の他の Port 設定をコメントアウトします。「Port 22」をコメントにして「Port 1234」を追加するだけでは、sshd がポート 1234 しかリッスンしなくなるので、この問題は解決しません。この 2 行どちらも使用し、sshd が両方のポートをリッスンするようにします。&lt;br /&gt;
&lt;br /&gt;
あとは {{ic|systemctl restart sshd.service}} で sshd を起動するだけです。そして ssh クライアントでも同じポートに変更します。&lt;br /&gt;
&lt;br /&gt;
==== Read from socket failed: connection reset by peer ====&lt;br /&gt;
最近の openssh のバージョンでは、楕円曲線暗号関連のバグのせいで、上記のエラーメッセージで接続が失敗することがあります。その場合 {{ic|~/.ssh/config}} に次の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss&lt;br /&gt;
&lt;br /&gt;
openssh 5.9 では、上記の修正方法は働きません。代わりに、{{ic|~/.ssh/config}} に以下の行を記述してください:&lt;br /&gt;
&lt;br /&gt;
 Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc &lt;br /&gt;
 MACs hmac-md5,hmac-sha1,hmac-ripemd160&lt;br /&gt;
&lt;br /&gt;
openssh バグフォーラムの [http://www.gossamer-threads.com/lists/openssh/dev/51339 議論] も参照。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;[your shell]: No such file or directory&amp;quot; / ssh_exchange_identification 問題 ===&lt;br /&gt;
シェルのバイナリに {{Ic|$PATH}} が通っている場合でも、特定の SSH クライアントは {{Ic|$SHELL}} に絶対パスを設定する必要があります (パスは {{Ic|whereis -b [your shell]}} で確認できます)。&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Terminal unknown&amp;quot; や &amp;quot;Error opening terminal&amp;quot; エラーメッセージ===&lt;br /&gt;
ssh でログイン時に &amp;quot;Terminal unknown&amp;quot; のようなエラーが表示されることがあります。これはサーバーがターミナルを認識できていないことを意味します。また、nano などの ncurses アプリケーションを実行すると &amp;quot;Error opening terminal&amp;quot; というメッセージが表示されます。&lt;br /&gt;
&lt;br /&gt;
クライアントで使用しているターミナルの terminfo ファイルをサーバーにインストールするのが正しい解決方法です。これによってサーバーのコンソールプログラムがターミナルを正しく扱えるようになります。{{ic|infocmp}} を実行してから[[Pacman#パッケージ・データベースに問い合わせる|パッケージを確認]]することで terminfo に関する情報を取得できます。&lt;br /&gt;
&lt;br /&gt;
通常の方法でファイルを[[インストール]]できない場合、サーバーのホームディレクトリに terminfo をコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh myserver mkdir -p  ~/.terminfo/${TERM:0:1}&lt;br /&gt;
 $ scp /usr/share/terminfo/${TERM:0:1}/$TERM myserver:~/.terminfo/${TERM:0:1}/&lt;br /&gt;
&lt;br /&gt;
サーバーから一度ログアウトしてからログインしなおすと問題が解決しているはずです。&lt;br /&gt;
&lt;br /&gt;
====$TERM 変数を設定する解決策====&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法はあくまで次善策であり、たまにしか接続しない ssh サーバーで使うようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|.bash_profile}} などで {{ic|1=TERM=xterm}} と設定することでもエラーが表示されなくなり、ncurses アプリケーションが動作するようになります。ただし副作用があり、ターミナルの制御シーケンスが xterm と異なっている場合グラフィックがおかしくなります。&lt;br /&gt;
&lt;br /&gt;
=== Connection closed by x.x.x.x [preauth] ===&lt;br /&gt;
sshd のログでこのエラーが確認できる場合、HostKey が正しく設定されているか確認してください:&lt;br /&gt;
 HostKey /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH 7.0 によって id_dsa が拒否される ===&lt;br /&gt;
&lt;br /&gt;
OpenSSH 7.0 ではセキュリティ上の理由から ssh-dss が無効になっています。どうしても有効にする必要がある場合、クライアントの設定オプションを使用してください ([http://www.openssh.com/legacy.html] には書かれていない方法です):&lt;br /&gt;
&lt;br /&gt;
 PubkeyAcceptedKeyTypes +ssh-dss&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH 7.0 で No matching key exchange method found ===&lt;br /&gt;
&lt;br /&gt;
OpenSSH 7.0 では Logjam 攻撃からの（理論上の）脆弱性を理由に diffie-hellman-group1-sha1 鍵アルゴリズムが無効になっています (http://www.openssh.com/legacy.html を参照)。特定のホストで鍵アルゴリズムが必要な場合、ssh は以下のようなエラーメッセージを吐きます:&lt;br /&gt;
&lt;br /&gt;
 Unable to negotiate with 127.0.0.1: no matching key exchange method found.&lt;br /&gt;
 Their offer: diffie-hellman-group1-sha1&lt;br /&gt;
&lt;br /&gt;
古いアルゴリズムを使用しないようにサーバーをアップグレード・設定することで上記のエラーは解決します。サーバー側の設定を変更できない場合、クライアント設定で {{ic|KexAlgorithms +diffie-hellman-group1-sha1}} オプションを使うことでアルゴリズムを有効化できます。&lt;br /&gt;
&lt;br /&gt;
=== SSH から切断したときに tmux/screen セッションが終了する ===&lt;br /&gt;
&lt;br /&gt;
セッションの最後にプロセスが終了する場合、ソケットアクティベーションを使っているために SSH セッションプロセスが終了したときに {{Pkg|systemd}} によって終了されている可能性があります。{{ic|ssh.socket}} の代わりに {{ic|ssh.service}} を使用してソケットアクティベーションを使わないことで解決できます。もしくは {{ic|ssh@.service}} の Service セクションで {{ic|1=KillMode=process}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=KillMode=process}} は古典的な {{ic|ssh.service}} でも役に立つことがあります。サーバーが停止したり再起動したときに SSH セッションプロセスや {{Pkg|screen}} や {{Pkg|tmux}} のプロセスが終了されることを防ぐことができます。&lt;br /&gt;
&lt;br /&gt;
=== SSH セッションが応答しなくなる ===&lt;br /&gt;
&lt;br /&gt;
SSH は [[Wikipedia:Software flow control|Software flow control]] {{ic|XON}} と {{ic|XOFF}} に反応します。{{ic|Ctrl+s}} を押すとフリーズ/ハングアップ/応答停止します。セッションを再開するには {{ic|Ctrl+q}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== Broken pipe ===&lt;br /&gt;
&lt;br /&gt;
接続を作ろうとして {{ic|packet_write_wait}} のレスポンスが {{ic|Broken pipe}} になった場合、デバッグモードで接続を再試行し、出力がエラーで終わるかどうか確認する必要があります。&lt;br /&gt;
{{bc|debug3: send packet: type 1&lt;br /&gt;
packet_write_wait: Connection to A.B.C.D port 22: Broken pipe}}&lt;br /&gt;
上記の {{ic|send packet}} の行は、応答パケットが受信されなかったことを示しています。つまり、これは &#039;&#039;QoS&#039;&#039; の問題であることがわかります。パケットを落とす可能性を減らすには、{{ic|IPQoS}} を設定してください。&lt;br /&gt;
{{hc|/etc/ssh/ssh_config|Host *&lt;br /&gt;
    IPQoS reliability}}&lt;br /&gt;
サービスタイプは {{ic|reliability}} ({{ic|0x04}}) で、{{ic|0x00}} や {{ic|throughput}} ({{ic|0x08}}) と同様に問題を解決できるはずです。&lt;br /&gt;
&lt;br /&gt;
=== 再起動後デーモンの起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
特にヘッドレスサーバや仮想化サーバにおいて、再起動後のデーモン起動時間が過度に長くなる場合（例:デーモンが接続を受け付け始めるまでに数分かかる）、エントロピー不足が原因かもしれません [https://bbs.archlinux.org/viewtopic.php?id=241954] これは、あなたのシステムに適した [[Rng-tools]] や [[Haveged]] をインストールすれば改善することが可能です。ただし、それぞれのパッケージの wiki ページで説明されている、関連するセキュリティ上の影響に注意してください。&lt;br /&gt;
&lt;br /&gt;
=== 応答のない SSH 接続を終了する ===&lt;br /&gt;
&lt;br /&gt;
クライアントセッションが応答しなくなり、実行中のプログラム (例えば [[シェル]]) に終了を指示しても終了しない場合、 {{ic|Enter}}, {{ic|~}}, {{ic|.}} をこの順番で次々に押すと、セッションを終了させることが可能です。&lt;br /&gt;
&lt;br /&gt;
この {{ic|~}} は疑似端末エスケープ文字で ({{man|1|ssh|ESCAPE CHARACTERS}} 参照) 終了させるクライアントセッションに応じて複数回付加することが可能です。例えば、A から B へ接続し、B から C へ接続したときに B から C へのセッションがフリーズした場合、 {{ic|Enter}} を押して {{ic|~.}} と入力すれば、B の作業セッションを残して終了させることができます。&lt;br /&gt;
&lt;br /&gt;
=== WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ===&lt;br /&gt;
&lt;br /&gt;
クライアントが ssh サーバの鍵が変更されたことを警告した場合、新しく提供された鍵が 本当にサーバオペレータのものであるかどうかを確認する必要があります。そして {{ic|known_hosts}} ファイルから古い鍵を {{ic|ssh-keygen -R $SSH_HOST}} で削除し、新しい鍵を新しいサーバであるかのように受け入れてください。&lt;br /&gt;
&lt;br /&gt;
=== 適切な terminfo エントリがないリモートに接続する場合 ===&lt;br /&gt;
&lt;br /&gt;
端末の terminfo エントリがないホストに接続する場合、例えば、terminfo エントリが {{Pkg|ncurses}} に同梱されていない端末エミュレータを使用する場合などです。(例えば [[kitty]] や [[rxvt-unicode]]) terminfo データベースが制限されているホスト (例えば OpenWrt が動いているシステム) に接続する場合、{{man|5|terminfo}} に依存しているソフトウェアで様々な問題が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
適切な解決策は、適切な terminfo エントリをホストに設置することです。それが不可能な場合は、リモートホストがサポートし、かつ端末と互換性のある値を {{ic|TERM}} に設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
OpenSSH 8.7 以降、カスタムの {{ic|TERM}} 環境変数をリモートホストに渡すには、 簡単な設定スニペットを使います。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|2=&lt;br /&gt;
Host example.com&lt;br /&gt;
  SetEnv TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
*[http://www.la-samhna.de/library/brutessh.html Defending against brute force ssh attacks]&lt;br /&gt;
*IBM developerWorks の [https://www.ibm.com/developerworks/jp/linux/library/l-keyc/ OpenSSH キー （鍵） の管理: 第 1 回] と [https://www.ibm.com/developerworks/jp/linux/library/l-keyc2/ 第 2 回]&lt;br /&gt;
* [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell]&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd-networkd&amp;diff=26354</id>
		<title>Systemd-networkd</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd-networkd&amp;diff=26354"/>
		<updated>2022-07-10T16:20:10Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ネットワークマネージャ]]&lt;br /&gt;
[[Category:仮想化]]&lt;br /&gt;
[[en:systemd-networkd]]&lt;br /&gt;
[[es:Systemd-networkd]]&lt;br /&gt;
[[fr:systemd-networkd]]&lt;br /&gt;
[[ru:Systemd-networkd]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|systemd-resolved}}&lt;br /&gt;
{{Related|systemd-nspawn}}&lt;br /&gt;
{{Related|ネットワークブリッジ}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|ワイヤレス設定}}&lt;br /&gt;
{{Related|:Category:ネットワーク設定}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; はネットワーク設定を管理するシステムデーモンです。ネットワークデバイスが立ち上がるとそれを検出して設定を行います。また、仮想ネットワークデバイスを作成することもできます。このサービスは [[systemd-nspawn]] で管理されるコンテナまたは仮想マシンの複雑なネットワークを設定する場合にとても役に立ちます。また、単純な接続でも正常に動作します。&lt;br /&gt;
&lt;br /&gt;
== 基本的な使い方 ==&lt;br /&gt;
{{Pkg|systemd}} パッケージは Arch ではデフォルトでインストールされており、有線ネットワークに接続するために必要なファイルは全て揃っています。後で述べているように、[[wpa_supplicant]] や [[iwd]] など他のサービスを使うことで無線アダプタを設定することもできます。&lt;br /&gt;
&lt;br /&gt;
=== 必要なサービスと設定 ===&lt;br /&gt;
&lt;br /&gt;
systemd-networkd を使用するには、{{ic|systemd-networkd.service}} [[起動/有効化]]します。&lt;br /&gt;
&lt;br /&gt;
{{Note|ネットワークを設定したい他のサービスが起動していないことを確認する必要があります。実際、複数のネットワークサービスが競合してしまいます。現在動作しているサービスの一覧は {{ic|1=systemctl --type=service}} で確認でき、それらを [[停止]] して下さい。}}&lt;br /&gt;
&lt;br /&gt;
また、ネットワーク名前解決サービスである [[systemd-resolved]] は，以下の点を考慮して任意に設定して下さい。&lt;br /&gt;
&lt;br /&gt;
* 使用する DNS を適切に設定するためには、[[resolv.conf]] と &#039;&#039;systemd-resolved&#039;&#039; の相互作用を理解することが重要です。 [[systemd-resolved]] にいくつかの解説があります。&lt;br /&gt;
* DNS エントリーが &#039;&#039;.network&#039;&#039; ファイルで指定されている場合は &#039;&#039;systemd-resolved&#039;&#039; が必要です。&lt;br /&gt;
* &#039;&#039;systemd-resolved&#039;&#039; は、DHCP サーバーまたは IPv6 ルーターから DNS アドレスを取得する場合にも必要です。&lt;br /&gt;
({{ic|1=DHCP=}} および {{ic|1=IPv6AcceptRA=}} セクションの {{ic|[Network]}} および {{ic|1=UseDNS=yes}} (デフォルト) 、{{ic|[DHCPv4]}}、{{ic|[DHCPv6]}}、{{ic|[IPv6AcceptRA]}}、{{man|5|systemd.network}} を参照してください。) を設定します。&lt;br /&gt;
* &#039;&#039;systemd-networkd&#039;&#039; 無しでも &#039;&#039;systemd-resolved&#039;&#039; を使うことができることに注意してください。&lt;br /&gt;
&lt;br /&gt;
=== system-networkd-wait-online ===&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-networkd.service}} を有効にすると、 {{ic|systemd-networkd-wait-online.service}} も有効になります。これは、ネットワークが構成されるのを待つワンショット・システム・サービスです。後者は {{ic|1=WantedBy=network-online.target}} を持っているので、 {{ic|network-online.target}} 自身が有効になっているか、他のユニットに引き寄せられた時にのみ起動します。 [[Systemd#ネットワークが稼働した後にサービスを実行する]]も参照してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、 {{ic|systemd-networkd-wait-online.service}} は、認識され &#039;&#039;systemd-networkd&#039;&#039; によって管理されているすべてのリンクが完全に設定されるか、または失敗しても、少なくとも1つのリンクがオンラインになるまで待機します。&lt;br /&gt;
&lt;br /&gt;
システムに複数のネットワークインタフェースがあるが、常時接続されているとは想定されていないものもある場合 (例えば、 dual-port Ethernet を使用しているが、ケーブルが1本しか接続されていない場合)、 {{ic|system-networkd-wait-online.service}} の起動は、デフォルトのタイムアウトである2分後に失敗します。これにより、起動プロセスに不要な遅延が発生する可能性があります。&#039;&#039;すべての&#039;&#039; インターフェイスではなく &#039;&#039;任意の&#039;&#039; インターフェイスがオンラインになるまで待機する動作に変更するには、サービスを[[編集]]し、{{ic|--any}} パラメータを {{ic|ExecStart}} 行に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
無視されたインターフェイスや動作状態など、その他の動作も設定できます。使用可能なパラメータについては、 {{man|8|systemd-networkd-wait-online}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの例 ===&lt;br /&gt;
&lt;br /&gt;
このセクションにおける設定はすべて {{ic|/etc/systemd/network}} の中に {{ic|foo.network}} として保存します。利用できるオプションや処理の順番については、[[#設定ファイル]] や {{man|5|systemd.network}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
systemd/udev は、予測可能で安定したネットワークインターフェイス名をすべてのローカルイーサネット、WLAN、WWAN インターフェイスに自動で割り当てます。システム上にあるデバイスのリストを得るには {{ic|networkctl list}} を使用してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルに変更を加えたら、{{ic|systemd-networkd.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 設定ファイル内で指定するオプションは大文字と小文字が区別されます。&lt;br /&gt;
* 以下の例では、{{ic|enp1s0}} が有線アダプタ、{{ic|wlp2s0}} が無線アダプタです。環境によって名前は変わります。[[ネットワーク設定#ネットワークインターフェイス]] を見てください。&lt;br /&gt;
* {{ic|1=Name=en*}} や {{ic|1=Name=wl*}} のようにワイルドカードを使うこともできます。&lt;br /&gt;
* デバイスはタイプによってもマッチさせることが可能です。例: イーサネットは {{ic|1=Type=ether}}、Wi-Fi は {{ic|1=Type=wlan}}、WWAN は {{ic|1=Type=wwan}}。注意点として、{{ic|1=Type=ether}} は仮想イーサネットインターフェイス({{ic|veth*}})にもマッチします(この動作は望ましくない場合があるでしょう)。&lt;br /&gt;
* IPv6 を無効化したい場合、[[IPv6#systemd-networkd_3]] を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 有線アダプタで DHCP を使用 ====&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 有線アダプタで固定 IP を使用 ====&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.1.10.9/24&lt;br /&gt;
Gateway=10.1.10.1&lt;br /&gt;
DNS=10.1.10.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=Address=}} は1回以上使用することができ、複数の IPv4 や IPv6 アドレスを指定することができます。さらなるオプションについては [[#network ファイル]] や {{man|5|systemd.network}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 無線アダプタ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; で無線ネットワークに接続するには、[[wpa_supplicant]] や [[iwd]] などの別のアプリケーションで設定された無線アダプタが必要です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=yes&lt;br /&gt;
IgnoreCarrierLoss=3s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
無線アダプタで固定 IP アドレスを使っている場合、設定は (インターフェイス名を除いて) [[#有線アダプタで固定 IP を使用|有線アダプタ]]と同じになります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=IgnoreCarrierLoss=3s}} により、同じワイヤレスネットワーク(SSID)内でワイヤレスインターフェイスが他のアクセスポイントにローミングする間、&#039;&#039;systemd-networkd&#039;&#039; が短期間(この例では 3 秒間)にインターフェイスを再設定(例: DHCP リースの開放と再取得)しないことを保証します。これにより、ローミング時にダウンタイムが短縮されます。}}&lt;br /&gt;
&lt;br /&gt;
無線スネットワークへの認証には、[[wpa_supplicant]] や [[iwd]] などを使用します。&lt;br /&gt;
&lt;br /&gt;
==== 同一マシンで有線アダプタと無線アダプタ両方を使用 ====&lt;br /&gt;
&lt;br /&gt;
以下の設定では、Metric ディレクティブを使用して、有線と無線両方の接続で DHCP IP を有効にしており、カーネルがその場でどちらを使うか決定します。有線接続が切断されると、即座に無線に切り替わります。接続が途切れることはありません。&lt;br /&gt;
&lt;br /&gt;
システム上の無線・有線どちらのデバイスも有効な接続がある場合、カーネルのルートメトリック (&#039;&#039;ip&#039;&#039; で設定するのと同一) がパケットを送るのにどちらのルートを使用するか決定します。システム上の有線デバイスと無線デバイスの両方がアクティブな接続を行っている場合がそうです。均衡状態を破るために、カーネルはメトリックを使います。もし一方の接続が終了しても、何も設定せずとも、もう一方が自動的にギャップを埋めます(進行中の転送はまだうまく対処されないでしょうが、これは他の OSI レイヤーでの問題です)。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|Metric}} オプションはスタティックルーティングの設定を行います。{{ic|RouteMetric}} オプションはスタティックルーティングの設定をしないセットアップ用です。詳細については {{man|5|systemd.network}} を参照して下さい}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=yes&lt;br /&gt;
&lt;br /&gt;
[DHCPv4]&lt;br /&gt;
RouteMetric=10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=yes&lt;br /&gt;
&lt;br /&gt;
[DHCPv4]&lt;br /&gt;
RouteMetric=20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
IPv6 を使用している場合は、次のように IPv6 ルートのメトリックも個別に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[IPv6AcceptRA]&lt;br /&gt;
RouteMetric=10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless.network|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[IPv6AcceptRA]&lt;br /&gt;
RouteMetric=20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== インターフェイスの名前を変更 ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワーク設定#インターフェイス名の変更|udev ルールを編集]]するかわりに &#039;&#039;.link&#039;&#039; ファイルを使ってインターフェイスの名前を変更できます。MAC アドレスに基づいて USB-to-Ethernet アダプタに予測可能なインターフェイス名を設定する例 (通常は接続された USB 端子によって名前が変わってしまいます):&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/systemd/network/10-ethusb0.link|output=&lt;br /&gt;
[Match]&lt;br /&gt;
MACAddress=12:34:56:78:90:ab&lt;br /&gt;
&lt;br /&gt;
[Link]&lt;br /&gt;
Description=USB to Ethernet Adapter&lt;br /&gt;
Name=ethusb0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ユーザーが作成した &#039;&#039;.link&#039;&#039; ファイルが先に有効になるように、デフォルト設定の {{ic|99-default.link}} よりも辞書的に早い順番になるような名前を付けてください。例えば、{{ic|ethusb0.link}} という名前を付けたい場合は {{ic|10-ethusb0.link}} としてください。}}&lt;br /&gt;
&lt;br /&gt;
== 設定ファイル ==&lt;br /&gt;
&lt;br /&gt;
設定ファイルは {{ic|/usr/lib/systemd/network/}} から、そして一時的な実行時のネットワークディレクトリ {{ic|/run/systemd/network/}} とローカルのネットワーク管理ディレクトリ {{ic|/etc/systemd/network/}} から読み込まれます。{{ic|/etc/systemd/network/}} 内のファイルが一番優先されます。&lt;br /&gt;
&lt;br /&gt;
3つのタイプの設定ファイルが存在します。ファイルのフォーマットは [[systemd#ユニットファイル|systemd のユニットファイル]]と似ています。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;.network&#039;&#039;&#039; ファイル。&#039;&#039;マッチする&#039;&#039;デバイスにネットワーク設定を適用します。&lt;br /&gt;
* &#039;&#039;&#039;.netdev&#039;&#039;&#039; ファイル。&#039;&#039;マッチする&#039;&#039;環境に&#039;&#039;仮想ネットワークデバイス&#039;&#039;を作成します。&lt;br /&gt;
* &#039;&#039;&#039;.link&#039;&#039;&#039; ファイル。ネットワークデバイスが作られた時、[[udev|udev]] は最初に&#039;&#039;マッチする&#039;&#039; &#039;&#039;&#039;.link&#039;&#039;&#039; ファイルを探します。&lt;br /&gt;
&lt;br /&gt;
これらの設定ファイルは同じルールに従っています:&lt;br /&gt;
&lt;br /&gt;
* {{ic|[Match]}} セクションの&#039;&#039;&#039;全ての&#039;&#039;&#039;条件がマッチすれば、プロファイルが有効になります。&lt;br /&gt;
* 空の {{ic|[Match]}} セクションはどんな場合でもそのセクションを適用することを示します (いわば {{ic|*}} ワイルドカードのようなものです)。&lt;br /&gt;
* 全ての設定ファイルは辞書順でまとめてソートされ処理されます。ファイルがどのディレクトリにあるかは関係ありません。&lt;br /&gt;
* 同じ名前のファイルは互いを置き換えます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|/etc/systemd/network/}} 内のファイルは {{ic|/usr/lib/systemd/network/}} 内の対応する、システムによって提供されたファイルを上書きします。また、{{ic|/dev/null}} へのシンボリックリンクを作成することで、システムファイルを&amp;quot;マスク&amp;quot;できます。&lt;br /&gt;
* systemd は true 真偽値として値 {{ic|1}}、{{ic|true}}、{{ic|yes}}、{{ic|on}} を受け付け、false 真偽値として値 {{ic|0}}、{{ic|false}}、{{ic|no}}、{{ic|off}} を受け付けます。{{man|7|systemd.syntax}} を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== network ファイル ===&lt;br /&gt;
&lt;br /&gt;
{{Remove|Duplicates the {{man|5|systemd.network}} man page.}}&lt;br /&gt;
&lt;br /&gt;
このファイルはネットワーク設定の変数の設定、特にサーバーとコンテナの設定のために存在します。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.network&#039;&#039; ファイルには次のセクションを記述できます: {{ic|[Match]}}、{{ic|[Link]}}、{{ic|[Network]}}、{{ic|[Address]}}、{{ic|[Route]}}、{{ic|[DHCPv4]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明します。詳細や例は {{man|5|systemd.network}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== [Match] ====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! パラメータ !! 説明 !! 受け入れる値 !! デフォルト値&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Name=}} || デバイス名のリストにマッチ(例: {{ic|en*}})。プレフィックス {{ic|!}} を付けると、リストを反転できます。|| 空白で区切られた、グロブ付きデバイス名リスト。論理否定 ({{ic|!}}) ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=MACAddress=}} || MAC アドレスのリストにマッチ(例: {{ic|1=MACAddress=01:23:45:67:89:ab 00-11-22-33-44-55 AABB.CCDD.EEFF}}) || コロン、ハイフン、またはドットで区切られた完全な 16 進数による、空白で区切られた MAC アドレスリスト ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Host=}} || ホスト名、またはホストのマシン IDにマッチ。 || グロブ付きのホスト名文字列、{{man|5|machine-id}} ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Virtualization=}} || システムが仮想化環境で起動されているかどうかをチェックします。{{ic|1=Virtualization=false}} キーはホストマシンにのみマッチし、逆に {{ic|1=Virtualization=true}} はコンテナや VM にマッチします。特定の仮想化タイプや実装をチェックしたり、({{ic|private-users}} を使って)ユーザ名前空間をチェックしたりできます。 || 真偽値、論理否定({{ic|!}})、タイプ({{ic|vm}}, {{ic|container}})、実装({{man|1|systemd-detect-virt}} を参照)、{{ic|private-users}} ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== [Link] ====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! パラメータ !! 説明 !! 受け入れる値 !! デフォルト値&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=MACAddress=}} || ハードウェアアドレスをデバイスに割り当てる。[[MAC_アドレス偽装#方法 1: systemd-networkd|MAC アドレスの偽装]]に便利。|| コロン、ハイフン、ドットで区切られた、完全な 16 進数 MAC アドレス。||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=MTUBytes=}} || デバイスに対して最大転送単位をバイト単位で指定。IPv6 がインターフェイスで有効化されていて、MTU が 1280 (IPv6 における最低 MTU) 未満に指定されている場合、自動的に 1280 まで増やされます。より大きな MTU 値を設定することで(例: [[ジャンボフレーム]] 使用時)、ネットワーク転送速度を飛躍的に速くできます。 || 整数 (通常の接尾辞 K、M、G がサポートされており、1024 の倍数として認識されます) ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Multicast=}} || [[wikipedia:Multicast_address|マルチキャスト]] の使用を許可。 || 真偽値 || ? ドキュメント化されておらず ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== [Network] ====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! パラメータ !! 説明 !! 受け入れる値 !! デフォルト値&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=DHCP=}} || DHCPv4 と DHCPv6 の一方/両方のサポートを制御。 || 真偽値、{{ic|ipv4}}、{{ic|ipv6}} || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=DHCPServer=}} || 有効化されている場合、DHCPv4 サーバが起動されます。 || 真偽値 || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=MulticastDNS=}} || [[RFC:6762|マルチキャスト DNS]]　のサポートを有効化。{{ic|resolve}} に設定すると、名前解決のみが有効化され、ホストやサービスの登録と広告は行われません。 || 真偽値、{{ic|resolve}} || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=DNSSEC=}} || リンク上での DNSSEC DNS validation のサポートを制御。{{ic|allow-downgrade}} に設定すると、DNSSEC 非対応のネットワークとの互換性が向上します。この場合、DNSSEC は自動でオフになります。 || 真偽値、{{ic|allow-downgrade}} || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=DNS=}} || 固定 [[DNS]] アドレスを設定。1回以上指定できます。 || {{man|3|inet_pton}} ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Domains=}} || リンク上の DNS サーバを利用して解決すべきドメインのリスト。[https://www.freedesktop.org/software/systemd/man/systemd.network.html#Domains= 詳細] || ドメイン名、オプションでチルダ({{ic|~}})のプレフィックス。 ||&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=IPForward=}} || 有効化すると、ネットワークインターフェイス上で受信したパケットを、ルーティングテーブルに従って他のインターフェイスに転送します。詳細は [[インターネット共有#パケット転送の有効化]]。 || 真偽値、{{ic|ipv4}}、{{ic|ipv6}} || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=IPMasquerade=}} || 有効化すると、ネットワークインターフェイスからのパケット転送がローカルホストから来るように見えます。値によっては、{{ic|1=IPForward=ipv4}}、{{ic|1=IPForward=ipv6}}、または {{ic|1=IPForward=yes}} の意味になります。|| {{ic|ipv4}}、{{ic|ipv6}}、{{ic|both}}、{{ic|no}} || {{ic|no}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=IPv6PrivacyExtensions=}} || 時間と共に変化するステートレステンポラリアドレスの使用を設定します([[RFC:4941|RFC 4941]] を参照)。{{ic|prefer-public}} を指定すると、プライバシー拡張が有効に名ありますが、テンポラリアドレスよりもパブリックアドレスを優先します。{{ic|kernel}} を指定すると、カーネルのデフォルトの設定のままになります。 || 真偽値、{{ic|prefer-public}}、{{ic|kernel}} || {{ic|false}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== [Address] ====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
! パラメータ !! 説明 !! 受け入れる値 !! デフォルト値&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Address=}} || 複数のアドレスを設定するには、このキーを複数回指定してください。DHCP を使用しない限り必須です。指定されたアドレスが(IPv4の 場合) {{ic|0.0.0.0}} または (IPv6 の場合) {{ic|::}} である場合、要求されたサイズの新しいアドレス範囲が、システム全体の未使用範囲のプールから自動的に割り当てられます。 || 固定 IPv4 または IPv6 アドレスとプレフィックス長({{man|3|inet_pton}} を参照) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== [Route] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Gateway=}} DHCP を使用しない場合、このオプションは&#039;&#039;&#039;必須&#039;&#039;&#039;です。&lt;br /&gt;
* {{ic|1=Destination=}} ルートの宛先プリフィックスです。スラッシュとプリフィックス長を後ろに付けることができます。&lt;br /&gt;
&lt;br /&gt;
{{ic|[Route]}} セクションに {{ic|Destination}} が存在しない場合、デフォルトルートとして扱われます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=[Address]}} が Address キーだけを含み {{ic|1=[Route]}} セクションが Gateway キーだけを含む場合、略式表記として {{ic|[Network]}} セクションに {{ic|1=Address=}} と {{ic|1=Gateway=}} キーを記述することができます。}}&lt;br /&gt;
&lt;br /&gt;
==== [DHCPv4] ====&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&lt;br /&gt;
! パラメータ !! 説明 !! 受け入れる値 !! デフォルト値&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=UseDNS=}} || DHCP サーバにより広告された DNS サーバを使用するかどうかを制御。 || 真偽値 || {{ic|true}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=Anonymize=}} || true を指定すると、DHCP サーバに送られるオプションが [[RFC:7844]] (Anonymity Profiles for DHCP Clients) に従って、識別情報の開示を最小限にするようになります。 || 真偽値 || {{ic|false}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|1=UseDomains=}} || DHCP サーバから受け取るドメイン名を DNS 検索ドメインとして使用するかどうかを制御。{{ic|route}} に設定すると、DHCP サーバから受け取るドメイン名が DNS クエリにのみ使用され、検索には使用されなくなります。このオプションは、[[systemd-resolved]] を使用している際にはローカルな名前解決を修正する可能性があります。 || 真偽値、{{ic|route}} || {{ic|false}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== [DHCPServer] ====&lt;br /&gt;
&lt;br /&gt;
これは、無線ホットスポットを作成するために [[hostapd]] とうまく連動する DHCP サーバーの設定例です。{{ic|IPMasquerade}} は [[インターネット共有#NAT の有効化|NATを有効にする]] ためのファイアウォールルールを追加し、{{ic|1=IPForward=ipv4}} [[インターネット共有#パケット転送の有効化|パケット転送]] を有効にしています。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|{{ic|1=IPMasquerade=true}}は{{ic|filter}} テーブルのルールを追加しません、それらは手動で追加する必要があります。[[systemd-nspawn#仮想イーサネットリンクを使用する]] を参照してください}}&lt;br /&gt;
​&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;wlan0&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlan0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.1.1.1/24&lt;br /&gt;
DHCPServer=true&lt;br /&gt;
IPMasquerade=ipv4&lt;br /&gt;
&lt;br /&gt;
[DHCPServer]&lt;br /&gt;
PoolOffset=100&lt;br /&gt;
PoolSize=20&lt;br /&gt;
EmitDNS=yes&lt;br /&gt;
DNS=9.9.9.9&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== netdev ファイル ===&lt;br /&gt;
&lt;br /&gt;
{{Remove|Duplicates the {{man|5|systemd.netdev}} man page.}}&lt;br /&gt;
&lt;br /&gt;
netdev ファイル群は仮想ネットワークデバイスを作成します。これらのファイルには次のセクションを記述できます: {{ic|[Match]}} と {{ic|[NetDev]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明します。詳細や例は {{man|5|systemd.netdev}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== [Match] セクション ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Host=}} ホストネーム&lt;br /&gt;
* {{ic|1=Virtualization=}} VM の中で実行されているかどうか確認する。&lt;br /&gt;
&lt;br /&gt;
==== [NetDev] セクション ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Name=}} インターフェイス名。&#039;&#039;&#039;必須&#039;&#039;&#039;&lt;br /&gt;
* {{ic|1=Kind=}} 例: &#039;&#039;bridge&#039;&#039;, &#039;&#039;bond&#039;&#039;, &#039;&#039;vlan&#039;&#039;, &#039;&#039;veth&#039;&#039;, &#039;&#039;sit&#039;&#039;。&#039;&#039;&#039;必須&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== link ファイル ===&lt;br /&gt;
&lt;br /&gt;
{{Remove|Duplicates the {{man|5|systemd.link}} man page.}}&lt;br /&gt;
&lt;br /&gt;
このファイルはカスタム udev ルールの代わりとなりデバイスが現れた時に [[udev]] によって適用されます。2つのセクションを記述します: {{ic|[Match]}} と {{ic|[Link]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明しています。詳しくは {{man|5|systemd.link}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;.link&#039;&#039; ファイルの問題を診断したいときは {{ic|udevadm test-builtin net_setup_link /sys/path/to/network/device}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
==== [Match] セクション ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=MACAddress=}} MAC アドレス&lt;br /&gt;
* {{ic|1=Host=}} ホストネーム&lt;br /&gt;
* {{ic|1=Virtualization=}}&lt;br /&gt;
* {{ic|1=Type=}} デバイスのタイプ (例: vlan)&lt;br /&gt;
&lt;br /&gt;
==== [Link] セクション ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=MACAddressPolicy=}} 永続的、またはランダムなアドレス。または、&lt;br /&gt;
* {{ic|1=MACAddress=}} 特定のアドレス。&lt;br /&gt;
* {{ic|1=NamePolicy=}} インターフェイス名に対してセットされるべきポリシーのリスト。例: kernel, keep&lt;br /&gt;
&lt;br /&gt;
{{Note|ほとんどの場合システムの {{ic|/usr/lib/systemd/network/99-default.link}} で基本的に問題ありません。}}&lt;br /&gt;
&lt;br /&gt;
== コンテナでの使用方法 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; は、コンテナ内とホストシステムの両方で使用されている場合、[[systemd-nspawn]] コンテナに対するネットワークの完全自動設定を提供できます。総合的な外観は [[systemd-nspawn#ネットワーキング]] を見てください。&lt;br /&gt;
&lt;br /&gt;
下で説明している設定について、&lt;br /&gt;
* {{ic|$ ip a}} コマンドの出力を、関連するインターフェイスにだけ絞っています。&lt;br /&gt;
* &#039;&#039;ホスト&#039;&#039;は起動しているメインの OS であり、&#039;&#039;コンテナ&#039;&#039;は仮想マシンのゲストのことです。&lt;br /&gt;
* インターフェイスの名前や IP アドレスは全てあくまでただの例です。&lt;br /&gt;
&lt;br /&gt;
=== DHCP を用いたネットワークブリッジ ===&lt;br /&gt;
&lt;br /&gt;
==== ブリッジインターフェイス ====&lt;br /&gt;
&lt;br /&gt;
まず、仮想[[ブリッジ]]インターフェイスを作成してください。systemd に、イーサネットブリッジとして機能する、&#039;&#039;br0&#039;&#039; という名前のデバイスを作成するように指示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;mybridge&#039;&#039;.netdev|2=&lt;br /&gt;
[NetDev]&lt;br /&gt;
Name=br0&lt;br /&gt;
Kind=bridge}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;systemd-networkd&#039;&#039; は、インターフェイス名とマシン ID に基づいて生成された MAC アドレスをブリッジに割り当てます。これにより接続の問題が発生する場合があります。例えば、MAC フィルタリングに基づいたルーティングです。そのような問題を回避するには、MAC アドレス(おそらく物理デバイスと同じもの)をブリッジに割り当ててください。上記の &#039;&#039;NetDev&#039;&#039; セクション内に {{ic|1=MACAddress=xx:xx:xx:xx:xx:xx}} という行を追加してください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-networkd.service}} を[[再起動]]すると systemd はブリッジを作成します。&lt;br /&gt;
&lt;br /&gt;
新しく追加したブリッジを見るには、ホストとコンテナ上で以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
3: br0: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN group default&lt;br /&gt;
    link/ether ae:bd:35:ea:0c:c9 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
インターフェイス &#039;&#039;br0&#039;&#039; が表示されていますが、この段階ではまだ DOWN になっていることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== イーサネットをブリッジに関連付ける ====&lt;br /&gt;
&lt;br /&gt;
次のステップでは、新しく作成したブリッジにネットワークインターフェイスを追加します。以下の例では、&#039;&#039;en*&#039;&#039; という名前にマッチする任意のインターフェイスをブリッジ &#039;&#039;br0&#039;&#039; に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;bind&#039;&#039;.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=en*&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Bridge=br0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ブリッジが IP と関連付けられていないインターフェイスを必要とするので、イーサネットインターフェイスは DHCP や IP アドレスと関連付けてはいけません: 対応する {{ic|/etc/systemd/network/&#039;&#039;MyEth&#039;&#039;.network}} を適宜変更して、アドレッシングを削除してください。&lt;br /&gt;
&lt;br /&gt;
==== ブリッジネットワーク ====&lt;br /&gt;
&lt;br /&gt;
ブリッジが作成され、既存のネットワークインターフェイスに関連付けられました。ブリッジインターフェイスの IP 設定を指定する必要があります。これは3番目の &#039;&#039;.network&#039;&#039; で定義されます。以下の例では DHCP を使用します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;mybridge&#039;&#039;.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=br0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4}}&lt;br /&gt;
&lt;br /&gt;
==== コンテナの設定 ====&lt;br /&gt;
&lt;br /&gt;
コンテナを起動する際は {{ic|1=--network-bridge=br0}} オプションを使用してください。詳細は [[systemd-nspawn#ネットワークブリッジを使用する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 結果 ====&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
3: br0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default&lt;br /&gt;
    link/ether 14:da:e9:b5:7a:88 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.87/24 brd 192.168.1.255 scope global br0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 fe80::16da:e9ff:feb5:7a88/64 scope link&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
6: vb-&#039;&#039;MyContainer&#039;&#039;: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000&lt;br /&gt;
    link/ether d2:7c:97:97:37:25 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet6 fe80::d07c:97ff:fe97:3725/64 scope link&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
2: host0: &amp;lt;BROADCAST,MULTICAST,ALLMULTI,AUTOMEDIA,NOTRAILERS,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
    link/ether 5e:96:85:83:a8:5d brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.73/24 brd 192.168.1.255 scope global host0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 fe80::5c96:85ff:fe83:a85d/64 scope link&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 注意 ====&lt;br /&gt;
&lt;br /&gt;
* ホストの {{ic|br0}} と、コンテナの {{ic|host0}} にそれぞれ IP アドレスが割り当てられました。&lt;br /&gt;
* 2つの新しいインターフェイスが作成されます: ホストの {{ic|vb-&#039;&#039;MyContainer&#039;&#039;}} とコンテナの {{ic|host0}} です。これは {{ic|1=--network-bridge=br0}} オプションによるものです。詳細は [[systemd-nspawn#ネットワークブリッジを使用する]] を参照してください。&lt;br /&gt;
* {{ic|host0}} の DHCP アドレスはシステムの {{ic|/usr/lib/systemd/network/80-container-host0.network}} ファイルから由来します。&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{Out of date|&#039;&#039;brctl&#039;&#039; は非推奨です。{{ic|bridge link}} を使用してください。[[ネットワークブリッジ#iproute2 を使う]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ brctl show|&lt;br /&gt;
bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
br0		8000.14dae9b57a88	no		enp7s0&lt;br /&gt;
							vb-&#039;&#039;MyContainer&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドの出力で2つのインターフェイスがバインドされたブリッジが確認できます。&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip route|&lt;br /&gt;
default via 192.168.1.254 dev br0&lt;br /&gt;
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.87&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip route|&lt;br /&gt;
default via 192.168.1.254 dev host0&lt;br /&gt;
192.168.1.0/24 dev host0  proto kernel  scope link  src 192.168.1.73&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドの出力で IP アドレスとゲートウェイが 192.168.1.254 の {{ic|br0}} と {{ic|host0}} インターフェイスが有効になったのが確認できます。ゲートウェイのアドレスは &#039;&#039;systemd-networkd&#039;&#039; によって自動的に取得されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /run/systemd/resolve/resolv.conf|&lt;br /&gt;
nameserver 192.168.1.254&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 静的 IP アドレスを持つネットワークブリッジ ===&lt;br /&gt;
&lt;br /&gt;
各デバイスに静的 IP アドレスを設定すると、Web サービス (例:FTP、http、SSH) を展開する場合に便利です。システム {{ic|/usr/lib/systemd/network/99-default.link}} ファイルに {{ic|1=MACAddressPolicy=persistent}} オプションが指定されている場合(デフォルトで指定されています)、各デバイスは再起動後も同じMACアドレスを保持します。したがって、ゲートウェイ上の任意のサービスを目的のデバイスに簡単にルーティングできます。&lt;br /&gt;
&lt;br /&gt;
このセットアップでは、次の設定を行う必要があります。&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
この設定は、[[#DHCP を用いたネットワークブリッジ]] セクションと非常によく似ています。まず、仮想ブリッジインターフェイスを作成し、メインの物理インターフェイスをそのインターフェイスにバインドする必要があります。この作業は、次の2つのファイルを使用して実行できます。これらのファイルの内容は、 DHCP セクションで使用できるものと同じです。&lt;br /&gt;
&lt;br /&gt;
 /etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.netdev&lt;br /&gt;
 /etc/systemd/network/&#039;&#039;MyEth&#039;&#039;.network&lt;br /&gt;
&lt;br /&gt;
次に、新しく作成した仮想ブリッジインターフェイスの IP および DNS を設定する必要があります。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=br0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DNS=192.168.1.254&lt;br /&gt;
Address=192.168.1.87/24&lt;br /&gt;
Gateway=192.168.1.254&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
コンテナに静的 IP アドレスを設定するには、システム {{ic|/usr/lib/systemd/network/80-container-host0.network}} ファイルを上書きする必要があります。このファイルは、コンテナの {{ic|host0}} ネットワークインタフェースに DHCP 構成を提供します。これを行うには、設定を {{ic|/etc/systemd/network/80-container-host0.network}} に置きます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/80-container-host0.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=host0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DNS=192.168.1.254&lt;br /&gt;
Address=192.168.1.94/24&lt;br /&gt;
Gateway=192.168.1.254&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
コンテナで {{ic|systemd-networkd.service}} が[[有効化]]されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 管理やデスクトップの統合 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; には[[コマンドラインシェル]]や GUI による適切なインタラクティブ管理インターフェイスがありません。&lt;br /&gt;
&lt;br /&gt;
ただし、ネットワークの現在の状態を表示したり、通知を受信したり、ワイヤレス構成を操作したりするためのツールはあります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;networkctl&#039;&#039; は(CLI を通して)ネットワークインターフェイスの状態の簡単な表示を行います。&lt;br /&gt;
* &#039;&#039;networkd&#039;&#039; で [[wpa_supplicant]] を使うように設定した場合、&#039;&#039;wpa_cli&#039;&#039; や &#039;&#039;wpa_gui&#039;&#039; を使うことで動的に WLAN インターフェイスを関連付けしたり再設定できます。&lt;br /&gt;
* {{AUR|networkd-notify-git}} はネットワークインターフェイスの状態の変化にあわせてシンプルな通知を生成します (接続・切断や再関連付けなど)。&lt;br /&gt;
* {{AUR|networkd-dispatcher}} デーモンを使うことで &#039;&#039;NetworkManager-dispatcher&#039;&#039; と同じようにネットワークインターフェイスの状態が変わったときにスクリプトを実行することができます。&lt;br /&gt;
* DNS リゾルバの &#039;&#039;systemd-resolved&#039;&#039; は {{ic|resolvectl status}} で現在の DNS サーバーの情報を視覚化できます。&lt;br /&gt;
&lt;br /&gt;
=== SSID (場所) に基づいた静的 IP または DHCP の設定 ===&lt;br /&gt;
&lt;br /&gt;
ホームワイヤレスネットワークが DHCP を使用し、オフィスワイヤレスネットワークが静的 IP を使用する状況がよくあります。この混在したセットアップは、次のように構成できます:&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイル名の番号によって,ファイルの処理順序が決まります。 SSID、 BSSID、 またはその両方に基づいて [Match] できます。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/24-wireless-office.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# special configuration for office WiFi network&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
SSID=office_ap_name&lt;br /&gt;
#BSSID=aa:bb:cc:dd:ee:ff&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.1.10.9/24&lt;br /&gt;
Gateway=10.1.10.1&lt;br /&gt;
DNS=10.1.10.1&lt;br /&gt;
#DNS=8.8.8.8&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless-dhcp.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# use DHCP for any other WiFi network&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== ワイヤード (有線) インターフェイスとワイヤレスインターフェイスのボンディング ===&lt;br /&gt;
&lt;br /&gt;
[[ワイヤレスボンディング]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
ボンディングを使用すると、複数のインターフェイスを介して接続を共有できるため、有線インターフェイスを取り外しても、ワイヤレス接続は維持され、ネットワーク接続はシームレスに維持されます。&lt;br /&gt;
&lt;br /&gt;
結合インタフェースを作成します。この場合、モードは &#039;&#039;active-backup&#039;&#039; です。つまり、プライマリインターフェイスがダウンした場合、パケットはセカンダリインターフェイスを介してルーティングされます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/30-bond0.netdev|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[NetDev]&lt;br /&gt;
Name=bond0&lt;br /&gt;
Kind=bond&lt;br /&gt;
&lt;br /&gt;
[Bond]&lt;br /&gt;
Mode=active-backup&lt;br /&gt;
PrimaryReselectPolicy=always&lt;br /&gt;
MIIMonitorSec=1s&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
有線インターフェイスをプライマリとして設定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/30-ethernet-bond0.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp0s25&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Bond=bond0&lt;br /&gt;
PrimarySlave=true&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ワイヤレスをセカンダリとして設定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/30-wifi-bond0.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlan0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Bond=bond0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
通常のインターフェイスと同様に、bond インターフェイスを設定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/30-bond0.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=bond0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
有線ネットワークが接続されていない場合は、ワイヤレス接続が維持されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ networkctl|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
IDX LINK    TYPE     OPERATIONAL      SETUP&lt;br /&gt;
  1 lo      loopback carrier          unmanaged&lt;br /&gt;
  2 enp0s25 ether    no-carrier       configured&lt;br /&gt;
  3 bond0   bond     degraded-carrier configured&lt;br /&gt;
  5 wlan0   wlan     enslaved         configured&lt;br /&gt;
&lt;br /&gt;
4 links listed.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== TCP スロースタートの速度を上げる ===&lt;br /&gt;
&lt;br /&gt;
遅延が中程度の広帯域リンク (通常、10 Mbit/s を超えるホームインターネット接続) では、TCP スロースタートアルゴリズムのデフォルト設定はやや保守的です。この問題は、ダウンロードがゆっくりと開始され、接続の全帯域幅に到達するまでに加速するのに数秒かかる場合に発生します。特に pacman アップグレードなどで、ダウンロードされた各パッケージがゆっくりと開始し、接続の最大速度に達する前に終了することがよくあります。&lt;br /&gt;
&lt;br /&gt;
これらの設定を調整して、 TCP 接続が既定よりも大きなウィンドウサイズで開始されるようにすることができます。これにより 新しい TCP 接続ごとに自動的に増加する時間を避けることができます [https://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/] これは通常、損失した多数のパケットを再送信する必要があるため、低速な接続ではパフォーマンスを低下させますが (または値が大きくなりすぎた場合) 、十分な帯域幅を持つ接続ではパフォーマンスを大幅に向上させることができます。&lt;br /&gt;
&lt;br /&gt;
これらの値を変更する前と変更した後にベンチマークを実行して、ネットワーク速度を向上させ、低下させないようにすることが重要です。ダウンロードの開始が遅く、速度が徐々に上がっていない場合は、これらの値を変更する必要はありません。これらの値はすでに接続速度に最適です。ベンチマークを行う際には、低速なサーバへのアクセスをさらに低速にすることを犠牲にして高速なマシンへのアクセスを高速化しないように、高速なリモートサーバと低速なリモートサーバの両方に対してテストするようにしてください。&lt;br /&gt;
&lt;br /&gt;
これらの値を調整するには、接続の &#039;&#039;.network&#039;&#039; ファイルを編集します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/eth0.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth0&lt;br /&gt;
&lt;br /&gt;
#[Network]&lt;br /&gt;
#Gateway=...  &amp;lt;-- Remove this if you have it, and put it in the Gateway= line below&lt;br /&gt;
&lt;br /&gt;
[Route]&lt;br /&gt;
# This will apply to the gateway supplied via DHCP.  If you manually specify&lt;br /&gt;
# your gateway, put it here instead.&lt;br /&gt;
Gateway=_dhcp4&lt;br /&gt;
&lt;br /&gt;
# The defaults for these values is 10.  They are a multiple of the MSS (1460 bytes).&lt;br /&gt;
InitialCongestionWindow=10&lt;br /&gt;
InitialAdvertisedReceiveWindow=10&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デフォルトの {{ic|10}} は、 10Mbit/s より遅い接続に適しています。100 Mbit/s 接続の場合、値 {{ic|30}} 位が適切に機能します。マニュアル・ページ {{man|5|systemd.network|&amp;lt;nowiki&amp;gt;[ROUTE] SECTION OPTIONS&amp;lt;/nowiki&amp;gt;|fragment=%5BROUTE%5D_SECTION_OPTIONS}} には、{{ic|100}} の値は過剰と見なされると記載されています。&lt;br /&gt;
&lt;br /&gt;
[[sysctl]] 設定 {{ic|net.ipv4.tcp_slow_start_after_idle}} が有効になっている場合、しばらくアイドル状態が続くと (多くの場合、ごく短時間) 、接続はこれらの初期設定に戻ります。この設定を無効にすると、パケット転送中に大きいウィンドウがネゴシエートされた場合、接続は大きいウィンドウを維持します。設定に関係なく、新しい各 TCP 接続は上記の {{ic|Initial*}} 設定で始まります。&lt;br /&gt;
&lt;br /&gt;
sysctl 設定 {{ic|net.ipv4.tcp_congestion_control}} は、 TCP リンクがアクティブなとき、特に2つのホスト間のパスが輻輳してスループットを低下させる必要があるときに、輻輳ウィンドウと受信ウィンドウを調整する方法を制御するため、これらの値とは直接関係しません。上記の {{ic|Initial*}} 値は、輻輳アルゴリズムに引き継がれて必要に応じて調整される前に、新しい接続ごとに選択されたデフォルトのウィンドウ値を設定するだけです。高い初期値を設定すると、輻輳アルゴリズムが最適な値 (または、逆に、間違った初期値を設定するとネゴシエーション時間が長くなりますが、輻輳アルゴリズムはそれらを修正するように動作し、新しく確立された各 TCP 接続の速度が数秒間遅くなります。) を見つけようとしている間に、単純にネゴシエーションが短縮されます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|8|systemd-networkd}}&lt;br /&gt;
* [https://web.archive.org/web/20201111213850/https://coreos.com/blog/intro-to-systemd-networkd/ Tom Gundersen posts on Core OS blog]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?pid=1393759#p1393759 How to set up systemd-networkd with wpa_supplicant] (WonderWoofy&#039;s walkthrough on Arch forums)&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Discord&amp;diff=22966</id>
		<title>Discord</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Discord&amp;diff=22966"/>
		<updated>2021-12-26T11:36:28Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: discord-canaryは公式リポジトリに入ったようです&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:インスタントメッセージ]]&lt;br /&gt;
[[en:Discord]]&lt;br /&gt;
Discord はプロプライエタリでクロスプラットフォームのオールインワン音声・テキストチャットアプリケーションです。ゲーマー向けに開発されていますが、多数のオープンソースコミュニティが [https://discordapp.com/open-source Discord で公式サーバー] を作っています。Discord はブラウザから使うことができますが、デスクトップアプリケーションも存在します。デスクトップアプリケーションは [[Electron]] を使用します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 公式クライアント ===&lt;br /&gt;
&lt;br /&gt;
[https://discordapp.com/ 公式アプリ]は以下のパッケージのいずれかで[[インストール]]できます。&lt;br /&gt;
&lt;br /&gt;
* 安定版: {{Pkg|discord}}&lt;br /&gt;
* ナイトリー版: {{Pkg|discord-canary}}&lt;br /&gt;
&lt;br /&gt;
=== サードパーティ製クライアント ===&lt;br /&gt;
{{Warning|[[Discord]] の [https://twitter.com/discord 公式 Twitter] によるとサードパーティクライアントを使用すると ToS に違反するようです([https://twitter.com/discord/status/1159511918538895360], [https://twitter.com/discord/status/1273126312413138944])。自己責任で利用してください。}}&lt;br /&gt;
グラフィカルクライアント:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|ripcord}} - 詳しくは [[Ripcord]] の記事を見てください&lt;br /&gt;
&lt;br /&gt;
コマンドラインクライアント:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|cordless-git}}{{Broken package link|パッケージが存在しません}}&lt;br /&gt;
&lt;br /&gt;
GitHub には他にも多数の CLI 用サードパーティ製クライアントが存在します ([https://github.com/MitchWeaver/Discline Discline] や [https://github.com/xynxynxyn/terminal-discord terminal-discord] など)。ただし現在 AUR にパッケージになっているのは Cordless だけです。&lt;br /&gt;
&lt;br /&gt;
=== チャットクライアントプラグイン ===&lt;br /&gt;
&lt;br /&gt;
* {{AUR|purple-discord-git}} を使うことで、[[Pidgin]] などの {{Pkg|libpurple}} ベースのグラフィカル・ターミナルメッセンジャーで Discord を使うことが可能です。&lt;br /&gt;
* {{AUR|bitlbee-discord-git}} を使うことで [[Bitlbee]] から Discord を使うことができます。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
ボイスチャット時に音が割れる場合、次の記事を見てください: [[PulseAudio/トラブルシューティング#Glitches, skips or crackling]]&lt;br /&gt;
&lt;br /&gt;
マルチモニター構成で個々のモニターを共有できない場合、{{AUR|mon2cam-git}} を試してみてください。詳しくは [https://trello.com/c/SJEH2Fsi/41-multiple-monitors-are-shown-as-one-in-screenshare Discord Trello] を参照。&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Dm-crypt/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A8%AD%E5%AE%9A&amp;diff=22202</id>
		<title>Dm-crypt/システム設定</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Dm-crypt/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A8%AD%E5%AE%9A&amp;diff=22202"/>
		<updated>2021-10-31T04:59:44Z</updated>

		<summary type="html">&lt;p&gt;Ozraru: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:セキュリティ]]&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[en:dm-crypt/System configuration]]&lt;br /&gt;
{{Tip|リモートで root などのブートファイルシステムのロックを解除する必要がある場合 (ヘッドレスマシンや遠隔地のサーバーなど)、[[Dm-crypt/特記事項#root などのパーティションのリモート解除]]の指示に従って下さい。}}&lt;br /&gt;
&lt;br /&gt;
== mkinitcpio ==&lt;br /&gt;
システムの暗号化をする場合、[[mkinitcpio]] を正しく設定した後に initial ramdisk を再生成する必要があります。特にシナリオによっては、以下のフックを有効しなくてはなりません:&lt;br /&gt;
&lt;br /&gt;
* {{ic|encrypt}}: root パーティションや、root よりも&#039;&#039;前&#039;&#039;にマウントする必要があるパーティションを暗号化する場合に必ず必要。他の場合は必要ありません。{{ic|/etc/crypttab}} などのシステム初期化スクリプトが暗号化されたパーティションの鍵を解除してくれます。{{ic|encrypt}} フックを使用する場合、{{ic|udev}} フックよりも後に記述する必要があります。&lt;br /&gt;
* {{ic|sd-encrypt}}: systemd 版の {{ic|encrypt}} フックで {{ic|encrypt}} フックの代わりに使うことができます。必ず {{ic|systemd}} フックと一緒に使用する必要があります。&lt;br /&gt;
* {{ic|keymap}}: 英語以外のキーマップで暗号化パスワードを入力できるようになります。{{ic|encrypt}} フックより前に記述してください。キーマップの設定は {{ic|/etc/vconsole.conf}} で行います。詳しくは[[キーマップ#永続的な設定]]を参照。&lt;br /&gt;
* {{ic|keyboard}}: 初期ユーザー空間で USB キーボードを使えるようにするために必須です。&lt;br /&gt;
&lt;br /&gt;
[[mkinitcpio#通常のフック|他のフック]]についてはここでは触れません。&lt;br /&gt;
&lt;br /&gt;
=== サンプル ===&lt;br /&gt;
&lt;br /&gt;
{{ic|encrypt}} フックを使用する {{ic|/etc/mkinitcpio.conf}} の設定例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|2=&lt;br /&gt;
...&lt;br /&gt;
HOOKS=&amp;quot;base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックを使用する systemd ベースの initramfs の設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|2=&lt;br /&gt;
...&lt;br /&gt;
HOOKS=&amp;quot;base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt sd-lvm2 filesystems fsck&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== ブートローダー ==&lt;br /&gt;
暗号化された　root パーティションを起動できるようにするには、以下のカーネルパラメータのサブセットを設定する必要があります: 設定する方法は[[カーネルパラメータ]]の使用している[[ブートローダー]]の手順を見て下さい。例えば [[GRUB#Root 暗号化|GRUB]] を使用しているならブート設定を生成する前に {{ic|/etc/default/grub}} にパラメータを追加するのが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
必要なカーネルパラメータは {{ic|encrypt}} フックと {{ic|sd-encrypt}} フックのどちらを使用するかによって変わります。&lt;br /&gt;
&lt;br /&gt;
=== encrypt フックを使う ===&lt;br /&gt;
&lt;br /&gt;
==== cryptdevice ====&lt;br /&gt;
このパラメータはコールドブート時に暗号化された root が含まれたデバイスのロックを解除するためにパスフレーズを要求するシステムプロンプトを作成します。どのデバイスに暗号化されたシステムが含まれているのか確認するために {{ic|encrypt}} フックによってパースされます:&lt;br /&gt;
&lt;br /&gt;
 cryptdevice=&#039;&#039;device&#039;&#039;:&#039;&#039;dmname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;device&#039;&#039;}} は暗号化されたデバイスのパスです。[[永続的なブロックデバイスの命名]]を使うことを推奨します。&lt;br /&gt;
* {{ic|&#039;&#039;dmname&#039;&#039;}} は復号化後にデバイスに与えられる &#039;&#039;&#039;d&#039;&#039;&#039;evice-&#039;&#039;&#039;m&#039;&#039;&#039;apper の名前です。{{ic|/dev/mapper/&#039;&#039;dmname&#039;&#039;}} として使用できるようになります。&lt;br /&gt;
* LVM に [[Dm-crypt/システム全体の暗号化#LUKS_on_LVM|暗号化されたルート]]が含まれる場合、最初に LVM が有効になって暗号化されたルートの論理ボリュームを含むボリュームグループが&#039;&#039;デバイス&#039;&#039;として使用できるようになります。それからボリュームグループがルートにマッピングされます。パラメータは {{ic|cryptdevice&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;&#039;/dev/vgname/lvname&#039;&#039;:&#039;&#039;dmname&#039;&#039;}} という形式になります。&lt;br /&gt;
&lt;br /&gt;
==== root ====&lt;br /&gt;
{{ic|1=root=}} パラメータは実際の (暗号化を解除した後の) root ファイルシステムの {{ic|&#039;&#039;device&#039;&#039;}} を指定します:&lt;br /&gt;
&lt;br /&gt;
 root=&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ファイルシステムが復号化されたデバイスファイル上に直接フォーマットされている場合、{{ic|/dev/mapper/&#039;&#039;dmname&#039;&#039;}} となります。&lt;br /&gt;
* LVM を先に有効にして[[Dm-crypt/システム全体の暗号化#LUKS_on_LVM|暗号化した論理ルートボリューム]]を含めている場合も、上記と同じになります。&lt;br /&gt;
* root ファイルシステムが完全に[[Dm-crypt/システム全体の暗号化#LUKS_on_LVM|暗号化された LVM]] の論理ボリュームに含まれている場合、device mapper は {{ic|root&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;/dev/mapper/&#039;&#039;volumegroup&#039;&#039;-&#039;&#039;logicalvolume&#039;&#039;}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[GRUB]] を使用する場合はこのパラメータを手動で指定する必要はありません。&#039;&#039;grub-mkconfig&#039;&#039; を実行するだけで復号化された root ファイルシステムの UUID の確認が自動的に行われ、{{ic|grub.cfg}} で指定されます。}}&lt;br /&gt;
&lt;br /&gt;
==== resume ====&lt;br /&gt;
 resume=&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;device&#039;&#039;}} は suspend2disk のために使われる復号化された (スワップ) ファイルシステムのデバイスファイルです。スワップが別のパーティション上にある場合、{{ic|/dev/mapper/swap}} という形式になります。[[Dm-crypt/スワップの暗号化]]を参照。&lt;br /&gt;
&lt;br /&gt;
==== cryptkey ====&lt;br /&gt;
This parameter specifies the location of a keyfile and is required by the {{ic|&#039;&#039;encrypt&#039;&#039;}} hook for reading such a keyfile to unlock the {{ic|&#039;&#039;cryptdevice&#039;&#039;}} (unless a key is in the default location, see below). It can have three parameter sets, depending on whether the keyfile exists as a file in a particular device, a bitstream starting on a specific location, or a file in the initramfs.&lt;br /&gt;
&lt;br /&gt;
For a file in a device the format is:&lt;br /&gt;
&lt;br /&gt;
 cryptkey=&#039;&#039;device&#039;&#039;:&#039;&#039;fstype&#039;&#039;:&#039;&#039;path&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;device&#039;&#039;}} is the raw block device where the key exists.&lt;br /&gt;
* {{ic|&#039;&#039;fstype&#039;&#039;}} is the filesystem type of {{ic|&#039;&#039;device&#039;&#039;}} (or auto).&lt;br /&gt;
* {{ic|&#039;&#039;path&#039;&#039;}} is the absolute path of the keyfile within the device.&lt;br /&gt;
&lt;br /&gt;
例: {{ic|1=cryptkey=/dev/usbstick:vfat:/secretkey}}。&lt;br /&gt;
&lt;br /&gt;
For a bitstream on a device the key&#039;s location is specified with the following: &lt;br /&gt;
&lt;br /&gt;
 cryptkey=&#039;&#039;device&#039;&#039;:&#039;&#039;offset&#039;&#039;:&#039;&#039;size&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
where the offset is in bytes and the size in bits. Example: {{ic|1=cryptkey=/dev/sdZ:0:512}} reads a 512 bit keyfile starting at the beginning of the device.&lt;br /&gt;
&lt;br /&gt;
For a file [[mkinitcpio#BINARIES と FILES|included]] in the initramfs the format is[https://projects.archlinux.org/svntogit/packages.git/tree/trunk/encrypt_hook?h=packages/cryptsetup#n14]:&lt;br /&gt;
&lt;br /&gt;
 cryptkey=rootfs:&#039;&#039;path&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example: {{ic|1=cryptkey=rootfs:/secretkey}}&lt;br /&gt;
&lt;br /&gt;
Also note that if {{ic|cryptkey}} is not specified, it defaults to {{ic|/crypto_keyfile.bin}} (in the initramfs).[https://projects.archlinux.org/svntogit/packages.git/tree/trunk/encrypt_hook?h=packages/cryptsetup#n8]&lt;br /&gt;
&lt;br /&gt;
[[Dm-crypt/デバイスの暗号化#キーファイル]]を参照。&lt;br /&gt;
&lt;br /&gt;
==== crypto ====&lt;br /&gt;
This parameter is specific to pass &#039;&#039;dm-crypt&#039;&#039; plain mode options to the &#039;&#039;encrypt&#039;&#039; hook. &lt;br /&gt;
&lt;br /&gt;
It takes the form&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;crypto=&amp;lt;/nowiki&amp;gt;&amp;lt;hash&amp;gt;:&amp;lt;cipher&amp;gt;:&amp;lt;keysize&amp;gt;:&amp;lt;offset&amp;gt;:&amp;lt;skip&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
引数は &#039;&#039;cryptsetup&#039;&#039; のオプションと直接関連します。[[Dm-crypt/デバイスの暗号化#plain モードの暗号化オプション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
For a disk encrypted with just &#039;&#039;plain&#039;&#039; default options, the {{ic|crypto}} arguments must be specified, but each entry can be left blank: &lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;crypto=::::&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
A specific example of arguments is  &lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;crypto=sha512:twofish-xts-plain64:512:0:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== sd-encrypt フックを使う ===&lt;br /&gt;
&lt;br /&gt;
以下の {{ic|luks}} は全て {{ic|rd.luks}} に置き換えられます。{{ic|luks}} パラメータはメインシステムと initrd の両方には反映されます。{{ic|rd.luks}} パラメータは initrd にだけ反映されます。他のオプションなど詳細については {{man|8|systemd-cryptsetup-generator}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|/etc/crypttab.initramfs}} ファイルが存在する場合、[[mkinitcpio]] は {{ic|/etc/crypttab}} として initramfs に追加します。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ルートファイルシステムで {{ic|luks.*}} カーネルパラメータを使用し、さらに {{ic|/etc/crypttab}} でスワップを記述すると [[systemd]] は &amp;quot;Not creating device &#039;swap&#039; because it was not specified on the kernel command line.&amp;quot; というエラーを吐きます。この問題を解決するには代わりに {{ic|rd.luks.*}} パラメータを使ってください。}}&lt;br /&gt;
&lt;br /&gt;
==== luks.uuid ====&lt;br /&gt;
&lt;br /&gt;
 luks.uuid=&#039;&#039;UUID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Specify the UUID of the device to be decrypted on boot with this flag. If the UUID is in {{ic|/etc/crypttab}}, the options listed there will be used.&lt;br /&gt;
&lt;br /&gt;
==== luks.name ====&lt;br /&gt;
&lt;br /&gt;
 luks.name=&#039;&#039;UUID&#039;&#039;=&#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Specify the name of the mapped device after the LUKS partition is open. For example, specifying {{ic|1=&#039;&#039;UUID&#039;&#039;=cryptroot}} causes the unlocked device to be located at {{ic|/dev/mapper/cryptroot}}. If this is not specified the mapped device will be located at {{ic|/dev/mapper/luks-&#039;&#039;UUID&#039;&#039;}} where &#039;&#039;UUID&#039;&#039; is the UUID of the LUKS partition.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to the second parameter of {{ic|encrypt}}&#039;s {{ic|cryptdevice}}.&lt;br /&gt;
&lt;br /&gt;
==== luks.options ====&lt;br /&gt;
&lt;br /&gt;
 luks.options=UUID=&#039;&#039;options&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 luks.options=&#039;&#039;options&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Specify options for the device listed after {{ic|UUID}} or, if not specified, for all UUIDs not specified elsewhere (e.g., crypttab).&lt;br /&gt;
&lt;br /&gt;
This is roughly equivalent to the third parameter of {{ic|encrypt}}&#039;s {{ic|cryptdevice}}.&lt;br /&gt;
&lt;br /&gt;
Follows a similar format to options in crypttab - options are separated by commas, options with values are specified using {{ic|1=&#039;&#039;option&#039;&#039;=&#039;&#039;value&#039;&#039;}}.&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 luks.options=timeout=10s,swap,cipher=aes-cbc-essiv:sha256,size=256&lt;br /&gt;
&lt;br /&gt;
==== luks.key ====&lt;br /&gt;
&lt;br /&gt;
 luks.key=&#039;&#039;mykeyfile&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|luks.UUID}} で指定したデバイスを復号化するのに使用するパスワードファイルの場所を指定します。{{ic|encrypt}} フックのパラメータのようにデフォルトの場所というものは存在しません。&lt;br /&gt;
&lt;br /&gt;
== crypttab ==&lt;br /&gt;
{{ic|/etc/crypttab}} (encrypted device table) ファイルにはシステムの起動時にロックを解除する暗号化デバイスのリストを記述します。[[fstab]] と似ています。crypttab ファイルを使うことで暗号化したスワップデバイスやセカンダリファイルシステムを自動でマウントすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{ic|crypttab}} は [[fstab]] よりも&#039;&#039;前&#039;&#039;に読み込まれるので、ファイルシステムの中身がマウントされる前に dm-crypt コンテナのロックを解除できます。ただし crypttab が読み込まれるのはシステムが起動した&#039;&#039;後&#039;&#039;なので、[[Dm-crypt/システム全体の暗号化|root を暗号化]]する場合に、[[#mkinitcpio|mkinitcpio]] フックや[[#ブートローダー|ブートローダーのオプション]]でロックを解除するのを代替することはできません。ブート時の crypttab の処理は {{ic|systemd-cryptsetup-generator}} によって自動的に行われるため、特に有効化する必要はありません。&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|5|crypttab}} を見てください。デバイスの UUID を使って設定する方法は[[#起動時にマウント]]セクションを見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[[systemd-boot]] と {{ic|sd-encrypt}} フックを使用する場合、ルートパーティション以外のパスフレーズがルートパーティションのパスフレーズと同じであれば、パスフレーズがキャッシュされるためルートパーティション以外に crypttab を配置する必要はありません。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=219859 こちらのスレッド] を参照。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;dm-crypt&#039;&#039; の [[dm-crypt/デバイスの暗号化#plain モードの暗号化オプション|plain モード]] ({{ic|--type plain}}) を使用する場合、{{ic|crypttab}} エントリを処理する際に [[systemd]] によって問題が発生することがあります:&lt;br /&gt;
* For {{ic|--type plain}} devices with a keyfile, it is necessary to add the {{ic|1=hash=plain}} option to crypttab due to a [https://bugs.freedesktop.org/show_bug.cgi?id&amp;amp;#61;52630 systemd incompatibility]. &#039;&#039;&#039;Do not&#039;&#039;&#039; use {{ic|systemd-cryptsetup}} manually for device creation to work around it.&lt;br /&gt;
* It may be further required to add the {{ic|plain}} option explicitly to force {{ic|systemd-cryptsetup}} to recognize a {{ic|--type plain}}) device at boot. [https://github.com/systemd/systemd/issues/442 GitHub issue in question.]}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;nofail&#039;&#039; オプションが指定された場合、パスワードの入力中にパスワード入力画面が消えてしまうことがあります。&#039;&#039;nofail&#039;&#039; はキーファイルを使用する場合にのみ使ってください。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/crypttab|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Example crypttab file. Fields are: name, underlying device, passphrase, cryptsetup options.&lt;br /&gt;
# Mount /dev/lvm/swap re-encrypting it with a fresh key each reboot&lt;br /&gt;
swap	/dev/lvm/swap	/dev/urandom	swap,cipher=aes-xts-plain64,size=256&lt;br /&gt;
# Mount /dev/lvm/tmp as /dev/mapper/tmp using plain dm-crypt with a random passphrase, making its contents unrecoverable after it is dismounted.&lt;br /&gt;
tmp	/dev/lvm/tmp	/dev/urandom	tmp,cipher=aes-xts-plain64,size=256 &lt;br /&gt;
# Mount /dev/lvm/home as /dev/mapper/home using LUKS, and prompt for the passphrase at boot time.&lt;br /&gt;
home   /dev/lvm/home&lt;br /&gt;
# Mount /dev/sdb1 as /dev/mapper/backup using LUKS, with a passphrase stored in a file.&lt;br /&gt;
backup /dev/sdb1       /home/alice/backup.key&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 起動時にマウント ===&lt;br /&gt;
&lt;br /&gt;
起動時に暗号化されたドライブをマウントしたい場合、デバイスの UUID を {{ic|/etc/crypttab}} に入力してください。UUID は {{ic|lsblk -f}} コマンドで確認して以下のように {{ic|crypttab}} に追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/crypttab|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
externaldrive         UUID=2f9a8428-ac69-478a-88a2-4aa458565431        none    luks,timeout=180&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The first parameter is your preferred device mapper&#039;s name for the encrypted drive. The option {{ic|none}} will trigger a prompt during boot to type the passphrase for unlocking the partition. The {{ic|timeout}} option defines a timeout in seconds for entering the decryption password during boot.&lt;br /&gt;
&lt;br /&gt;
A [[Dm-crypt/デバイスの暗号化#キーファイル|keyfile]] can also be set up and referenced instead of {{ic|none}}. This results in an automatic unlocking, if the keyfile is accessible during boot. Since LUKS offers the option to have multiple keys, the chosen option can also be changed later.&lt;br /&gt;
&lt;br /&gt;
Use the device mapper&#039;s name you&#039;ve defined in {{ic|/etc/crypttab}} in {{ic|/etc/fstab}} as follows:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|&amp;lt;nowiki&amp;gt;/dev/mapper/externaldrive      /mnt/backup               ext4    defaults,errors=remount-ro  0  2&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Since {{ic|/dev/mapper/externaldrive}} already is the result of a unique partition mapping, there is no need to specify an UUID for it. In any case, the mapper with the filesystem will have a different UUID than the partition it is encrypted in.&lt;br /&gt;
&lt;br /&gt;
==== スタックされたブロックデバイスのマウント ==== &lt;br /&gt;
&lt;br /&gt;
The systemd generators also automatically process stacked block devices at boot. &lt;br /&gt;
&lt;br /&gt;
For example, you can create a [[RAID]] setup, use cryptsetup on it and create an [[LVM]] logical volume with respective filesystem inside the encrypted block device. A resulting: &lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -f|&lt;br /&gt;
─sdXX                  linux_raid_member    &lt;br /&gt;
│ └─md0                 crypto_LUKS   &lt;br /&gt;
│   └─cryptedbackup     LVM2_member &lt;br /&gt;
│     └─vgraid-lvraid   ext4              /mnt/backup&lt;br /&gt;
└─sdYY                  linux_raid_member    &lt;br /&gt;
  └─md0                 crypto_LUKS       &lt;br /&gt;
    └─cryptedbackup     LVM2_member &lt;br /&gt;
      └─vgraid-lvraid   ext4              /mnt/backup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
will ask for the passphrase and mount automatically at boot. &lt;br /&gt;
&lt;br /&gt;
Given you specify the correct corresponding crypttab (e.g. UUID for the {{ic|crypto_LUKS}} device) and fstab ({{ic|/dev/mapper/vgraid-lvraid}}) entries, there is no need to add additional mkinitcpio hooks/configuration, because {{ic|/etc/crypttab}} processing applies to non-root mounts only. One exception is when the {{ic|mdadm_udev}} hook is used &#039;&#039;already&#039;&#039; (e.g. for the root device). In this case {{ic|/etc/madadm.conf}} and the initramfs need updating to achieve the correct root raid is picked first.&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
===起動時にシステムがフリーズしたりパスワードのプロンプトが表示されない===&lt;br /&gt;
[[Plymouth]] を使用する場合、適切なモジュールを使用するか、Plymouth を無効化してください。正しく設定しないと Plymouth によってパスワードプロンプトが隠れてしまい、システムを起動できなくなります。詳しくは [[Plymouth#plymouth フック]]を参照。&lt;/div&gt;</summary>
		<author><name>Ozraru</name></author>
	</entry>
</feed>