<?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=Grainrigi</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=Grainrigi"/>
	<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/Grainrigi"/>
	<updated>2026-05-15T14:39:33Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=22257</id>
		<title>Kubernetes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=22257"/>
		<updated>2021-11-05T20:36:07Z</updated>

		<summary type="html">&lt;p&gt;Grainrigi: 最新のパッケージに合わせ更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Kubernetes]]&lt;br /&gt;
[https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Kubernetes] はコンテナ化されたアプリケーションのデプロイ・スケーリング・管理を自動化するためのオープンソースシステムです。Kubernetes は k8s とも呼ばれます。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubernetes ==&lt;br /&gt;
&lt;br /&gt;
=== Minikube ===&lt;br /&gt;
&lt;br /&gt;
MiniKubeは[[VirtualBox]]などの仮想マシン上に小さなKubernetesクラスタを構築することが出来るプラットフォームです。&lt;br /&gt;
Kubernetesを試してみたいという場合、完全なインストールをいきなり用意するよりもMinikubeを利用するのが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
Arch LinuxでMinikubeを利用するには、{{Pkg|minikube}} パッケージおよび、{{Pkg|virtualbox}}などの仮想化環境をインストールします。&lt;br /&gt;
&lt;br /&gt;
実際のminikubeの操作法については[https://kubernetes.io/ja/docs/setup/learning-environment/minikube/ 公式のチュートリアル]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 完全なインストール ===&lt;br /&gt;
&lt;br /&gt;
Arch Linux で Kubernetes を使用するためには、{{AUR|kubelet-bin}}, {{AUR|kubeadm-bin}}, {{AUR|kubectl-bin}}をインストールします。&lt;br /&gt;
Kubernetesを実際に動作させるには、{{Pkg|docker}}や{{Pkg|cri-o}}などのコンテナランタイムも予めインストールしておく必要が有ります。&lt;br /&gt;
&lt;br /&gt;
また、必要に応じて以下のパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
* {{AUR|cni-bin}}: [https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ CNI(Container Network Interface)プラグイン]を動作させるのに必要なバイナリパッケージ。標準のCNI(flannel等)を利用する場合、これは必須です。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubectl プラグイン ==&lt;br /&gt;
&lt;br /&gt;
[https://kubernetes.io/docs/reference/kubectl/overview/ Kubectl] プラグインは独立したバイナリであり、サブコマンドを追加して Kubectl の機能を拡張します。&lt;br /&gt;
&lt;br /&gt;
Arch Linux には Kubectl プラグインの AUR パッケージが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|kubectl-trace-git}}: kubectl を使って kubernetes クラスタの bpftrace プログラムをスケジュールします。&lt;br /&gt;
&lt;br /&gt;
== 基本設定 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} ヘルパーを使用するか手動で kubernetes クラスタを設定します。&lt;br /&gt;
&lt;br /&gt;
=== kubeadm を使う ===&lt;br /&gt;
&lt;br /&gt;
以下はマスターとスレーブがひとつずつの構成を取っており、両ノードとも {{ic|192.168.122.0/24}} ネットワーク内に存在し、マスターは kubernetes クラスタを {{ic|192.168.122.1}} でホストします。&lt;br /&gt;
&lt;br /&gt;
また、ポッドに割り当てるIPアドレス範囲(CIDR)は利用するCNIプラグインに合わせて決定しますが、ここでは[https://github.com/coreos/flannel flannel]を利用するので、{{ic|10.244.0.0/16}} とします。&lt;br /&gt;
&lt;br /&gt;
==== マスター ====&lt;br /&gt;
&lt;br /&gt;
まず、マシンの[[スワップ]]を無効にします。Kubernetesを稼働させる全てのノードにおいて、これは必須です。&lt;br /&gt;
{{bc|# swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
次に、コンテナランタイムを開始させます。{{Pkg|docker}}を利用する場合、{{ic|docker.service}}を開始します。&lt;br /&gt;
{{bc|# systemctl start docker.service}}&lt;br /&gt;
&lt;br /&gt;
それから、以下のコマンドを実行:&lt;br /&gt;
{{bc|# kubeadm init --apiserver-advertise-address&amp;amp;#61;192.168.122.1 --pod-network-cidr&amp;amp;#61;10.244.0.0/16}}&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}}によってPKI(公開鍵基盤)とクライアント証明書が自動的に作成され、{{ic|kubelet.service}}が開始されます。&lt;br /&gt;
&lt;br /&gt;
問題なく起動が完了したら、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
 Your Kubernetes master has initialized successfully!&lt;br /&gt;
&lt;br /&gt;
新しく作成した kubernetes クラスタの管理者としてアカウントを設定します:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p $HOME/.kube&lt;br /&gt;
 $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 $ sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
&lt;br /&gt;
それからポッドネットワークをデプロイします。[https://kubernetes.io/docs/concepts/cluster-administration/addons/ こちら] に様々な方法が載っています。全ての方法にはそれぞれデフォルトのポッドネットワーク CIDR が存在します。{{ic|--pod-network-cidr}} で指定した値にあわせて設定を修正してください。&lt;br /&gt;
&lt;br /&gt;
ここではflannelをデプロイするので、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
 $ kubectl apply -f kube-flannel.yml&lt;br /&gt;
&lt;br /&gt;
最後に、マスターの状態を確認:&lt;br /&gt;
 $ kubectl get componentstatus&lt;br /&gt;
&lt;br /&gt;
==== ノード ====&lt;br /&gt;
&lt;br /&gt;
マスターの成功メッセージの最後の行に入力してクラスタに参加:&lt;br /&gt;
 kubeadm join --token &amp;lt;token&amp;gt; 192.168.122.1:6443 --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== settings behind proxy ===&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} は {{ic|https_proxy}}, {{ic|http_proxy}}, {{ic|no_proxy}} [[環境変数]]を読み込みます。Kubernetes の内部ネットワークは最後の環境変数に記述します。例:&lt;br /&gt;
 export no_proxy=&amp;quot;192.168.122.0/24,10.96.0.0/12,192.168.123.0/24&amp;quot;&lt;br /&gt;
2番目の CIDR がデフォルトのサービスネットワーク CIDR です。&lt;br /&gt;
&lt;br /&gt;
また、CNI プラグインが追加で必要です:&lt;br /&gt;
 $ go get -d github.com/containernetworking/plugins&lt;br /&gt;
 $ cd ~/go/src/github.com/containernetworking/plugins&lt;br /&gt;
 $ bash ./build_linux.sh &lt;br /&gt;
 # cp bin/* /opt/cni/bin/&lt;br /&gt;
&lt;br /&gt;
=== fatal error: runtime: out of memory ===&lt;br /&gt;
ソースから kubernetes をビルドしたときに発生します。{{ic|zram}} 領域を設定することで回避できます:&lt;br /&gt;
 # ￼￼modprobe zram&lt;br /&gt;
 # echo lz4 &amp;gt; /sys/block/zram0/comp_algorithm&lt;br /&gt;
 # echo 16G &amp;gt; /sys/block/zram0/disksize&lt;br /&gt;
 # mkswap --label zram0 /dev/zram0&lt;br /&gt;
 # swapon --priority 100 /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== error when creating &amp;quot;xxx.yaml&amp;quot;: No API token found for service account &amp;quot;default&amp;quot; ===&lt;br /&gt;
[https://stackoverflow.com/questions/31891734/not-able-to-create-pod-in-kubernetes stackoverflow] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Error: unable to load server certificate ===&lt;br /&gt;
サービスの起動時に発生することがあります。{{ic|*.key}} ファイルのパーミッションの設定が正しいか確認してください。&lt;/div&gt;</summary>
		<author><name>Grainrigi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15844</id>
		<title>Kubernetes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15844"/>
		<updated>2020-03-29T13:32:16Z</updated>

		<summary type="html">&lt;p&gt;Grainrigi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Kubernetes]]&lt;br /&gt;
[https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Kubernetes] はコンテナ化されたアプリケーションのデプロイ・スケーリング・管理を自動化するためのオープンソースシステムです。Kubernetes は k8s とも呼ばれます。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubernetes ==&lt;br /&gt;
&lt;br /&gt;
=== Minikube ===&lt;br /&gt;
&lt;br /&gt;
MiniKubeは[[VirtualBox]]などの仮想マシン上に小さなKubernetesクラスタを構築することが出来るプラットフォームです。&lt;br /&gt;
Kubernetesを試してみたいという場合、完全なインストールをいきなり用意するよりもMinikubeを利用するのが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
Arch LinuxでMinikubeを利用するには、{{Pkg|minikube}} パッケージおよび、{{Pkg|virtualbox}}などの仮想化環境をインストールします。&lt;br /&gt;
&lt;br /&gt;
実際のminikubeの操作法については[https://kubernetes.io/ja/docs/setup/learning-environment/minikube/ 公式のチュートリアル]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 完全なインストール ===&lt;br /&gt;
&lt;br /&gt;
Arch Linux で Kubernetes を使用するためには、{{AUR|kubelet-bin}}, {{AUR|kubeadm-bin}}, {{AUR|kubectl-bin}}をインストールします。&lt;br /&gt;
Kubernetesを実際に動作させるには、{{Pkg|docker}}や{{AUR|cri-o}}などのコンテナランタイムも予めインストールしておく必要が有ります。&lt;br /&gt;
&lt;br /&gt;
さらに、AURパッケージの依存関係が不完全なため、{{Pkg|ebtables}}, {{Pkg|ethtool}}, {{Pkg|socat}}, {{Pkg|conntrack-tools}}が追加で必要です。&lt;br /&gt;
&lt;br /&gt;
また、必要に応じて以下のパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
* {{AUR|cni-plugins-bin}}: [https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ CNI(Container Network Interface)プラグイン]を動作させるのに必要なバイナリパッケージ。標準のCNI(flannel等)を利用する場合、これは必須です。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubectl プラグイン ==&lt;br /&gt;
&lt;br /&gt;
[https://kubernetes.io/docs/reference/kubectl/overview/ Kubectl] プラグインは独立したバイナリであり、サブコマンドを追加して Kubectl の機能を拡張します。&lt;br /&gt;
&lt;br /&gt;
Arch Linux には Kubectl プラグインの AUR パッケージが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|kubectl-trace-git}}: kubectl を使って kubernetes クラスタの bpftrace プログラムをスケジュールします。&lt;br /&gt;
&lt;br /&gt;
== 基本設定 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} ヘルパーを使用するか手動で kubernetes クラスタを設定します。&lt;br /&gt;
&lt;br /&gt;
=== kubeadm を使う ===&lt;br /&gt;
&lt;br /&gt;
以下はマスターとスレーブがひとつずつの構成を取っており、両ノードとも {{ic|192.168.122.0/24}} ネットワーク内に存在し、マスターは kubernetes クラスタを {{ic|192.168.122.1}} でホストします。&lt;br /&gt;
&lt;br /&gt;
また、ポッドに割り当てるIPアドレス範囲(CIDR)は利用するCNIプラグインに合わせて決定しますが、ここでは[https://github.com/coreos/flannel flannel]を利用するので、{{ic|10.244.0.0/16}} とします。&lt;br /&gt;
&lt;br /&gt;
==== マスター ====&lt;br /&gt;
&lt;br /&gt;
まず、マシンの[[スワップ]]を無効にします。Kubernetesを稼働させる全てのノードにおいて、これは必須です。&lt;br /&gt;
{{bc|# swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
次に、コンテナランタイムを開始させます。{{Pkg|docker}}を利用する場合、{{ic|docker.service}}を開始します。&lt;br /&gt;
{{bc|# systemctl start docker.service}}&lt;br /&gt;
&lt;br /&gt;
それから、以下のコマンドを実行:&lt;br /&gt;
{{bc|# kubeadm init --apiserver-advertise-address&amp;amp;#61;192.168.122.1 --pod-network-cidr&amp;amp;#61;10.244.0.0/16}}&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}}によってPKI(公開鍵基盤)とクライアント証明書が自動的に作成され、{{ic|kubelet.service}}が開始されます。&lt;br /&gt;
&lt;br /&gt;
問題なく起動が完了したら、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
 Your Kubernetes master has initialized successfully!&lt;br /&gt;
&lt;br /&gt;
新しく作成した kubernetes クラスタの管理者としてアカウントを設定します:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p $HOME/.kube&lt;br /&gt;
 $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 $ sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
&lt;br /&gt;
それからポッドネットワークをデプロイします。[https://kubernetes.io/docs/concepts/cluster-administration/addons/ こちら] に様々な方法が載っています。全ての方法にはそれぞれデフォルトのポッドネットワーク CIDR が存在します。{{ic|--pod-network-cidr}} で指定した値にあわせて設定を修正してください。&lt;br /&gt;
&lt;br /&gt;
ここではflannelをデプロイするので、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
 $ kubectl apply -f kube-flannel.yml&lt;br /&gt;
&lt;br /&gt;
最後に、マスターの状態を確認:&lt;br /&gt;
 $ kubectl get componentstatus&lt;br /&gt;
&lt;br /&gt;
==== ノード ====&lt;br /&gt;
&lt;br /&gt;
マスターの成功メッセージの最後の行に入力してクラスタに参加:&lt;br /&gt;
 kubeadm join --token &amp;lt;token&amp;gt; 192.168.122.1:6443 --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== settings behind proxy ===&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} は {{ic|https_proxy}}, {{ic|http_proxy}}, {{ic|no_proxy}} [[環境変数]]を読み込みます。Kubernetes の内部ネットワークは最後の環境変数に記述します。例:&lt;br /&gt;
 export no_proxy=&amp;quot;192.168.122.0/24,10.96.0.0/12,192.168.123.0/24&amp;quot;&lt;br /&gt;
2番目の CIDR がデフォルトのサービスネットワーク CIDR です。&lt;br /&gt;
&lt;br /&gt;
また、CNI プラグインが追加で必要です:&lt;br /&gt;
 $ go get -d github.com/containernetworking/plugins&lt;br /&gt;
 $ cd ~/go/src/github.com/containernetworking/plugins&lt;br /&gt;
 $ bash ./build_linux.sh &lt;br /&gt;
 # cp bin/* /opt/cni/bin/&lt;br /&gt;
&lt;br /&gt;
=== fatal error: runtime: out of memory ===&lt;br /&gt;
ソースから kubernetes をビルドしたときに発生します。{{ic|zram}} 領域を設定することで回避できます:&lt;br /&gt;
 # ￼￼modprobe zram&lt;br /&gt;
 # echo lz4 &amp;gt; /sys/block/zram0/comp_algorithm&lt;br /&gt;
 # echo 16G &amp;gt; /sys/block/zram0/disksize&lt;br /&gt;
 # mkswap --label zram0 /dev/zram0&lt;br /&gt;
 # swapon --priority 100 /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== error when creating &amp;quot;xxx.yaml&amp;quot;: No API token found for service account &amp;quot;default&amp;quot; ===&lt;br /&gt;
[https://stackoverflow.com/questions/31891734/not-able-to-create-pod-in-kubernetes stackoverflow] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Error: unable to load server certificate ===&lt;br /&gt;
サービスの起動時に発生することがあります。{{ic|*.key}} ファイルのパーミッションの設定が正しいか確認してください。&lt;/div&gt;</summary>
		<author><name>Grainrigi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15843</id>
		<title>Kubernetes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15843"/>
		<updated>2020-03-29T13:24:43Z</updated>

		<summary type="html">&lt;p&gt;Grainrigi: Minikubeに関する記述を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Kubernetes]]&lt;br /&gt;
[https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Kubernetes] はコンテナ化されたアプリケーションのデプロイ・スケーリング・管理を自動化するためのオープンソースシステムです。Kubernetes は k8s とも呼ばれます。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubernetes ==&lt;br /&gt;
&lt;br /&gt;
=== Minikube ===&lt;br /&gt;
&lt;br /&gt;
MiniKubeは[[VirtualBox]]などの仮想マシン上に小さなKubernetesクラスタを構築することが出来るプラットフォームです。&lt;br /&gt;
Kubernetesを試してみたいという場合、完全なインストールをいきなり用意するよりもMinikubeを利用するのが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
Arch LinuxでMinikubeを利用するには、{{Pkg|minikube}} パッケージおよび、{{Pkg|virtualbox}}などの仮想化環境をインストールします。&lt;br /&gt;
&lt;br /&gt;
実際のminikubeの操作法については[https://kubernetes.io/ja/docs/setup/learning-environment/minikube/ 公式のチュートリアル]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 完全なインストール ===&lt;br /&gt;
&lt;br /&gt;
Arch Linux で Kubernetes を使用するためには、{{AUR|kubelet-bin}}, {{AUR|kubeadm-bin}}, {{AUR|kubectl-bin}}をインストールします。&lt;br /&gt;
Kubernetesを実際に動作させるには、{{Pkg|docker}}や{{AUR|cri-o}}などのコンテナランタイムも予めインストールしておく必要が有ります。&lt;br /&gt;
&lt;br /&gt;
さらに、AURパッケージの依存関係が不完全なため、{{Pkg|ebtables}}, {{Pkg|ethtool}}, {{Pkg|socat}}, {{Pkg|conntrack-tools}}が追加で必要です。&lt;br /&gt;
&lt;br /&gt;
また、必要に応じて以下のパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
* {{AUR|cni-plugins-bin}}: [https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ CNI(Container Network Interface)プラグイン]を動作させるのに必要なバイナリパッケージ。標準のCNI(flannel等)を利用する場合、これは必須です。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubectl プラグイン ==&lt;br /&gt;
&lt;br /&gt;
[https://kubernetes.io/docs/reference/kubectl/overview/ Kubectl] プラグインは独立したバイナリであり、サブコマンドを追加して Kubectl の機能を拡張します。&lt;br /&gt;
&lt;br /&gt;
Arch Linux には Kubectl プラグインの AUR パッケージが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|kubectl-trace-git}}: kubectl を使って kubernetes クラスタの bpftrace プログラムをスケジュールします。&lt;br /&gt;
&lt;br /&gt;
== 基本設定 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} ヘルパーを使用するか手動で kubernetes クラスタを設定します。&lt;br /&gt;
&lt;br /&gt;
=== kubeadm を使う ===&lt;br /&gt;
&lt;br /&gt;
以下はマスターとスレーブがひとつずつの構成を取っており、両ノードとも {{ic|192.168.122.0/24}} ネットワーク内に存在し、マスターは kubernetes クラスタを {{ic|192.168.122.1}} でホストします。&lt;br /&gt;
&lt;br /&gt;
また、ポッドに割り当てるIPアドレス範囲(CIDR)は利用するCNIプラグインに合わせて決定しますが、ここでは[https://github.com/coreos/flannel flannel]を利用するので、{{ic|10.244.0.0/16}} とします。&lt;br /&gt;
&lt;br /&gt;
==== マスター ====&lt;br /&gt;
&lt;br /&gt;
まず、マシンの[[スワップ]]を無効にします。Kubernetesを稼働させる全てのノードにおいて、これは必須です。&lt;br /&gt;
{{bc|# swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
次に、コンテナランタイムを開始させます。{{Pkg|docker}}を利用する場合、{{ic|docker.service}}を開始します。&lt;br /&gt;
{{bc|# systemctl start docker.service}}&lt;br /&gt;
&lt;br /&gt;
それから、以下のコマンドを実行:&lt;br /&gt;
{{bc|# kubeadm init --advertise-address&amp;amp;#61;192.168.122.1 --pod-network-cidr&amp;amp;#61;10.244.0.0/16}}&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}}によってPKI(公開鍵基盤)とクライアント証明書が自動的に作成され、{{ic|kubelet.service}}が開始されます。&lt;br /&gt;
&lt;br /&gt;
問題なく起動が完了したら、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
 Your Kubernetes master has initialized successfully!&lt;br /&gt;
&lt;br /&gt;
新しく作成した kubernetes クラスタの管理者としてアカウントを設定します:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p $HOME/.kube&lt;br /&gt;
 $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 $ sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
&lt;br /&gt;
それからポッドネットワークをデプロイします。[https://kubernetes.io/docs/concepts/cluster-administration/addons/ こちら] に様々な方法が載っています。全ての方法にはそれぞれデフォルトのポッドネットワーク CIDR が存在します。{{ic|--pod-network-cidr}} で指定した値にあわせて設定を修正してください。&lt;br /&gt;
&lt;br /&gt;
ここではflannelをデプロイするので、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
 $ kubectl apply -f kube-flannel.yml&lt;br /&gt;
&lt;br /&gt;
最後に、マスターの状態を確認:&lt;br /&gt;
 $ kubectl get componentstatus&lt;br /&gt;
&lt;br /&gt;
==== ノード ====&lt;br /&gt;
&lt;br /&gt;
マスターの成功メッセージの最後の行に入力してクラスタに参加:&lt;br /&gt;
 kubeadm join --token &amp;lt;token&amp;gt; 192.168.122.1:6443 --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== settings behind proxy ===&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} は {{ic|https_proxy}}, {{ic|http_proxy}}, {{ic|no_proxy}} [[環境変数]]を読み込みます。Kubernetes の内部ネットワークは最後の環境変数に記述します。例:&lt;br /&gt;
 export no_proxy=&amp;quot;192.168.122.0/24,10.96.0.0/12,192.168.123.0/24&amp;quot;&lt;br /&gt;
2番目の CIDR がデフォルトのサービスネットワーク CIDR です。&lt;br /&gt;
&lt;br /&gt;
また、CNI プラグインが追加で必要です:&lt;br /&gt;
 $ go get -d github.com/containernetworking/plugins&lt;br /&gt;
 $ cd ~/go/src/github.com/containernetworking/plugins&lt;br /&gt;
 $ bash ./build_linux.sh &lt;br /&gt;
 # cp bin/* /opt/cni/bin/&lt;br /&gt;
&lt;br /&gt;
=== fatal error: runtime: out of memory ===&lt;br /&gt;
ソースから kubernetes をビルドしたときに発生します。{{ic|zram}} 領域を設定することで回避できます:&lt;br /&gt;
 # ￼￼modprobe zram&lt;br /&gt;
 # echo lz4 &amp;gt; /sys/block/zram0/comp_algorithm&lt;br /&gt;
 # echo 16G &amp;gt; /sys/block/zram0/disksize&lt;br /&gt;
 # mkswap --label zram0 /dev/zram0&lt;br /&gt;
 # swapon --priority 100 /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== error when creating &amp;quot;xxx.yaml&amp;quot;: No API token found for service account &amp;quot;default&amp;quot; ===&lt;br /&gt;
[https://stackoverflow.com/questions/31891734/not-able-to-create-pod-in-kubernetes stackoverflow] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Error: unable to load server certificate ===&lt;br /&gt;
サービスの起動時に発生することがあります。{{ic|*.key}} ファイルのパーミッションの設定が正しいか確認してください。&lt;/div&gt;</summary>
		<author><name>Grainrigi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15842</id>
		<title>Kubernetes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kubernetes&amp;diff=15842"/>
		<updated>2020-03-29T12:55:21Z</updated>

		<summary type="html">&lt;p&gt;Grainrigi: Kubernetesのパッケージを動作するものに置き換え, kubeadmのチュートリアルを最新版(v1.18.0)で動作するものに変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Kubernetes]]&lt;br /&gt;
[https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ Kubernetes] はコンテナ化されたアプリケーションのデプロイ・スケーリング・管理を自動化するためのオープンソースシステムです。Kubernetes は k8s とも呼ばれます。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubernetes ==&lt;br /&gt;
&lt;br /&gt;
Arch Linux で Kubernetes を使用するためには、{{AUR|kubelet-bin}}, {{AUR|kubeadm-bin}}, {{AUR|kubectl-bin}}をインストールします。&lt;br /&gt;
Kubernetesを実際に動作させるには、{{Pkg|docker}}や{{AUR|cri-o}}などのコンテナランタイムも予めインストールしておく必要が有ります。&lt;br /&gt;
&lt;br /&gt;
さらに、AURパッケージの依存関係が不完全なため、{{Pkg|ebtables}}, {{Pkg|ethtool}}, {{Pkg|socat}}, {{Pkg|conntrack-tools}}が追加で必要です。&lt;br /&gt;
&lt;br /&gt;
また、必要に応じて以下のパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
* {{AUR|cni-plugins-bin}}: [https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ CNI(Container Network Interface)プラグイン]を動作させるのに必要なバイナリパッケージ。標準のCNI(flannel等)を利用する場合、これは必須です。&lt;br /&gt;
&lt;br /&gt;
== Arch Linux の Kubectl プラグイン ==&lt;br /&gt;
&lt;br /&gt;
[https://kubernetes.io/docs/reference/kubectl/overview/ Kubectl] プラグインは独立したバイナリであり、サブコマンドを追加して Kubectl の機能を拡張します。&lt;br /&gt;
&lt;br /&gt;
Arch Linux には Kubectl プラグインの AUR パッケージが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|kubectl-trace-git}}: kubectl を使って kubernetes クラスタの bpftrace プログラムをスケジュールします。&lt;br /&gt;
&lt;br /&gt;
== 基本設定 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} ヘルパーを使用するか手動で kubernetes クラスタを設定します。&lt;br /&gt;
&lt;br /&gt;
=== kubeadm を使う ===&lt;br /&gt;
&lt;br /&gt;
以下はマスターとスレーブがひとつずつの構成を取っており、両ノードとも {{ic|192.168.122.0/24}} ネットワーク内に存在し、マスターは kubernetes クラスタを {{ic|192.168.122.1}} でホストします。&lt;br /&gt;
&lt;br /&gt;
また、ポッドに割り当てるIPアドレス範囲(CIDR)は利用するCNIプラグインに合わせて決定しますが、ここでは[https://github.com/coreos/flannel flannel]を利用するので、{{ic|10.244.0.0/16}} とします。&lt;br /&gt;
&lt;br /&gt;
==== マスター ====&lt;br /&gt;
&lt;br /&gt;
まず、マシンの[[スワップ]]を無効にします。Kubernetesを稼働させる全てのノードにおいて、これは必須です。&lt;br /&gt;
{{bc|# swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
次に、コンテナランタイムを開始させます。{{Pkg|docker}}を利用する場合、{{ic|docker.service}}を開始します。&lt;br /&gt;
{{bc|# systemctl start docker.service}}&lt;br /&gt;
&lt;br /&gt;
それから、以下のコマンドを実行:&lt;br /&gt;
{{bc|# kubeadm init --advertise-address&amp;amp;#61;192.168.122.1 --pod-network-cidr&amp;amp;#61;10.244.0.0/16}}&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}}によってPKI(公開鍵基盤)とクライアント証明書が自動的に作成され、{{ic|kubelet.service}}が開始されます。&lt;br /&gt;
&lt;br /&gt;
問題なく起動が完了したら、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
 Your Kubernetes master has initialized successfully!&lt;br /&gt;
&lt;br /&gt;
新しく作成した kubernetes クラスタの管理者としてアカウントを設定します:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p $HOME/.kube&lt;br /&gt;
 $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 $ sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
&lt;br /&gt;
それからポッドネットワークをデプロイします。[https://kubernetes.io/docs/concepts/cluster-administration/addons/ こちら] に様々な方法が載っています。全ての方法にはそれぞれデフォルトのポッドネットワーク CIDR が存在します。{{ic|--pod-network-cidr}} で指定した値にあわせて設定を修正してください。&lt;br /&gt;
&lt;br /&gt;
ここではflannelをデプロイするので、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
 $ kubectl apply -f kube-flannel.yml&lt;br /&gt;
&lt;br /&gt;
最後に、マスターの状態を確認:&lt;br /&gt;
 $ kubectl get componentstatus&lt;br /&gt;
&lt;br /&gt;
==== ノード ====&lt;br /&gt;
&lt;br /&gt;
マスターの成功メッセージの最後の行に入力してクラスタに参加:&lt;br /&gt;
 kubeadm join --token &amp;lt;token&amp;gt; 192.168.122.1:6443 --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== settings behind proxy ===&lt;br /&gt;
&lt;br /&gt;
{{ic|kubeadm}} は {{ic|https_proxy}}, {{ic|http_proxy}}, {{ic|no_proxy}} [[環境変数]]を読み込みます。Kubernetes の内部ネットワークは最後の環境変数に記述します。例:&lt;br /&gt;
 export no_proxy=&amp;quot;192.168.122.0/24,10.96.0.0/12,192.168.123.0/24&amp;quot;&lt;br /&gt;
2番目の CIDR がデフォルトのサービスネットワーク CIDR です。&lt;br /&gt;
&lt;br /&gt;
また、CNI プラグインが追加で必要です:&lt;br /&gt;
 $ go get -d github.com/containernetworking/plugins&lt;br /&gt;
 $ cd ~/go/src/github.com/containernetworking/plugins&lt;br /&gt;
 $ bash ./build_linux.sh &lt;br /&gt;
 # cp bin/* /opt/cni/bin/&lt;br /&gt;
&lt;br /&gt;
=== fatal error: runtime: out of memory ===&lt;br /&gt;
ソースから kubernetes をビルドしたときに発生します。{{ic|zram}} 領域を設定することで回避できます:&lt;br /&gt;
 # ￼￼modprobe zram&lt;br /&gt;
 # echo lz4 &amp;gt; /sys/block/zram0/comp_algorithm&lt;br /&gt;
 # echo 16G &amp;gt; /sys/block/zram0/disksize&lt;br /&gt;
 # mkswap --label zram0 /dev/zram0&lt;br /&gt;
 # swapon --priority 100 /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== error when creating &amp;quot;xxx.yaml&amp;quot;: No API token found for service account &amp;quot;default&amp;quot; ===&lt;br /&gt;
[https://stackoverflow.com/questions/31891734/not-able-to-create-pod-in-kubernetes stackoverflow] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Error: unable to load server certificate ===&lt;br /&gt;
サービスの起動時に発生することがあります。{{ic|*.key}} ファイルのパーミッションの設定が正しいか確認してください。&lt;/div&gt;</summary>
		<author><name>Grainrigi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Iptables&amp;diff=13439</id>
		<title>Iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Iptables&amp;diff=13439"/>
		<updated>2018-09-19T13:07:59Z</updated>

		<summary type="html">&lt;p&gt;Grainrigi: 「基本概念」においてイタリック体が片仮名に適用されなかったので英単語を追加した&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ファイアウォール]]&lt;br /&gt;
[[de:Iptables]]&lt;br /&gt;
[[el:Iptables]]&lt;br /&gt;
[[en:Iptables]]&lt;br /&gt;
[[es:Iptables]]&lt;br /&gt;
[[fr:Iptables]]&lt;br /&gt;
[[it:Iptables]]&lt;br /&gt;
[[ru:Iptables]]&lt;br /&gt;
[[sr:Iptables]]&lt;br /&gt;
[[zh-hans:Iptables]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイアウォール}}&lt;br /&gt;
{{Related|シンプルなステートフルファイアウォール}}&lt;br /&gt;
{{Related|Sysctl#TCP/IP スタックの防御}}&lt;br /&gt;
{{Related|Sshguard}}&lt;br /&gt;
{{Related|Fail2ban}}&lt;br /&gt;
{{Related|Nftables}}&lt;br /&gt;
{{Related|ポートノッキング}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Iptables は [[Wikipedia:ja:iptables|netfilter]] プロジェクトの一つとして Linux カーネルに組み込まれている強力な[[ファイアウォール]]です。直接、または様々な[[ファイアウォール#iptables|フロントエンド]]や [[ファイアウォール#グラフィカルフロントエンド|GUI]] を使って設定することができます。[[Wikipedia:ja:IPv4|IPv4]] では iptables が、[[IPv6]] では ip6tables が使用されます。&lt;br /&gt;
&lt;br /&gt;
いつかメインの Linux ファイアウォールユーティリティとして iptables を置き換えるものとして、[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTQ5MDU Linux カーネル 3.13] で [[nftables]] がリリースされています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
標準の Arch Linux カーネルは iptables サポートを有効にしてコンパイルされています。必要なのは、[[公式リポジトリ]]の {{Pkg|iptables}} に入ってるユーザーランドユーティリティを[[インストール]]することだけです ({{Grp|base}} グループの {{Pkg|iproute2}} パッケージが iptables に依存しているため、あなたのシステムにはデフォルトで iptables パッケージがインストールされています)。&lt;br /&gt;
&lt;br /&gt;
== 基本概念 ==&lt;br /&gt;
&lt;br /&gt;
iptables は IPv4 パケットを検査・変更・転送・リダイレクト・拒否するのに使われます。IPv4 パケットをフィルタリングするコードはカーネルに含まれており、特定の目的ごとに&#039;&#039;テーブル(tables)&#039;&#039;としてまとめられています。テーブルは定義済みの&#039;&#039;チェイン(chains)&#039;&#039;のセットで出来ており、チェインを通過するルールが順番に含まれています。各ルールはマッチと対応するアクション (&#039;&#039;ターゲット(targets)&#039;&#039;と呼ばれます) の条件文からなり、条件が真のときに (つまり条件がマッチしたとき) 実行されます。iptables はそれらのチェインやルールを使うためのユーザーユーティリティです。ほとんどの新規ユーザーは linux の IP ルーティングの複雑性をとても難しく感じますが、一般的なユースケース (NAT や基本的なインターネットファイアウォール) では実はあまり複雑ではありません。&lt;br /&gt;
&lt;br /&gt;
iptables の動作を理解するための鍵は [http://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg このチャート] です。上部の小文字の単語がテーブルで下部の大文字の単語がチェインになります。&#039;&#039;あらゆるネットワークインターフェース&#039;&#039;から来た IP パケットは全てこのフローチャートの上から下まで通過します。よくある勘違いの元は、内部インターフェースからのパケットがインターネットに接するインターフェースからのパケットと違ったふうに処理されることにあります。全てのインターフェースは同じように処理されます。それを別々に扱うようにルールを定義するのはあなた次第です。もちろんローカルプロセスのためのパケットというものが存在し、チャートの一番上から &amp;lt;Local Process&amp;gt; のところで止まり、一方ローカルプロセスによって生成されたパケットは &amp;lt;Local Process&amp;gt; からスタートしてフローチャートを下っていきます。このフローチャートの働きの詳しい説明は [http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#TRAVERSINGOFTABLES こちら] から読めます。&lt;br /&gt;
&lt;br /&gt;
ほとんどの使い方では &#039;&#039;raw&#039;&#039;, &#039;&#039;mangle&#039;&#039;, &#039;&#039;security&#039;&#039; テーブルを使うことは全くありません。従って、&#039;&#039;iptables&#039;&#039; をネットワークパケットが通る様子を表すと以下のチャートのようになります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
                               XXXXXXXXXXXXXXXXXX&lt;br /&gt;
                             XXX     Network    XXX&lt;br /&gt;
                               XXXXXXXXXXXXXXXXXX&lt;br /&gt;
                                       +&lt;br /&gt;
                                       |&lt;br /&gt;
                                       v&lt;br /&gt;
 +-------------+              +------------------+&lt;br /&gt;
 |table: filter| &amp;lt;---+        | table: nat       |&lt;br /&gt;
 |chain: INPUT |     |        | chain: PREROUTING|&lt;br /&gt;
 +-----+-------+     |        +--------+---------+&lt;br /&gt;
       |             |                 |&lt;br /&gt;
       v             |                 v&lt;br /&gt;
 [local process]     |           ****************          +--------------+&lt;br /&gt;
       |             +---------+ Routing decision +------&amp;gt; |table: filter |&lt;br /&gt;
       v                         ****************          |chain: FORWARD|&lt;br /&gt;
****************                                           +------+-------+&lt;br /&gt;
Routing decision                                                  |&lt;br /&gt;
****************                                                  |&lt;br /&gt;
       |                                                          |&lt;br /&gt;
       v                        ****************                  |&lt;br /&gt;
+-------------+       +------&amp;gt;  Routing decision  &amp;lt;---------------+&lt;br /&gt;
|table: nat   |       |         ****************&lt;br /&gt;
|chain: OUTPUT|       |               +&lt;br /&gt;
+-----+-------+       |               |&lt;br /&gt;
      |               |               v&lt;br /&gt;
      v               |      +-------------------+&lt;br /&gt;
+--------------+      |      | table: nat        |&lt;br /&gt;
|table: filter | +----+      | chain: POSTROUTING|&lt;br /&gt;
|chain: OUTPUT |             +--------+----------+&lt;br /&gt;
+--------------+                      |&lt;br /&gt;
                                      v&lt;br /&gt;
                               XXXXXXXXXXXXXXXXXX&lt;br /&gt;
                             XXX    Network     XXX&lt;br /&gt;
                               XXXXXXXXXXXXXXXXXX&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
iptables には5つのテーブルがあります:&lt;br /&gt;
&lt;br /&gt;
# {{ic|raw}} は接続追跡の対象から外れるようパケットを設定するのに使われます。&lt;br /&gt;
# {{ic|filter}} はデフォルトのテーブルで、主としてファイアウォールが備えるべきアクションは全てここで行われます。&lt;br /&gt;
# {{ic|nat}} は[[Wikipedia:ja:ネットワークアドレス変換|ネットワークアドレス変換]]に使われます (例: ポートフォワーディング)。&lt;br /&gt;
# {{ic|mangle}} は特別なパケット変換に使われます ([[Wikipedia:Mangled packet|Mangled packet]] を参照)。&lt;br /&gt;
# {{ic|security}} は[[セキュリティ#強制アクセス制御|強制アクセス制御]]のネットワークルールに使われます (例: SELinux -- 詳しくは [https://lwn.net/Articles/267140/ この記事] を参照)。&lt;br /&gt;
&lt;br /&gt;
ほとんどの場合、使用するテーブルは2つだけです: &#039;&#039;filter&#039;&#039; と &#039;&#039;nat&#039;&#039;。他のテーブルは複数のルーターやルーティングの判定が関わる複雑な設定のためにあり、どちらにしろ導入の域を超えています。&lt;br /&gt;
&lt;br /&gt;
=== チェイン ===&lt;br /&gt;
&lt;br /&gt;
テーブルは&#039;&#039;チェイン&#039;&#039;で構成されています。チェインは順番に並べられたルールのリストです。デフォルトのテーブル、{{ic|filter}} には3つの組み込みチェインが含まれます: {{ic|INPUT}}, {{ic|OUTPUT}}, {{ic|FORWARD}}。[http://www.frozentux.net/iptables-tutorial/chunkyhtml/images/tables_traverse.jpg フローチャート] で示されているように、パケットのフィルタリングプロセスの別々の場所で使われます。nat テーブルには {{ic|PREROUTING}}, {{ic|POSTROUTING}}, {{ic|OUTPUT}} チェインが含まれます。&lt;br /&gt;
&lt;br /&gt;
他のテーブルの組み込みチェインの説明は {{ic|man 8 iptables}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、チェインにはルールが何も入っていません。使用したいチェインにルールを追加するのはあなたの手に委ねられています。チェインにはデフォルトのポリシーが&#039;&#039;存在&#039;&#039;し、基本的には {{ic|ACCEPT}} に設定されていますが、あなたのルールセットを何も通り抜けられないようにしたい場合は {{ic|DROP}} に設定しなおすことができます。デフォルトのポリシーは常にチェインの一番最後に適用されます。故に、パケットはデフォルトポリシーの適用の前にチェインに存在するルール全てを通過する必要があります。&lt;br /&gt;
&lt;br /&gt;
ユーザー定義チェインを追加すればルールセットをより効率的に、または簡単に修正できるようにすることができます。ユーザー定義チェインをどうやって使うかの例は[[シンプルなステートフルファイアウォール]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ルール ===&lt;br /&gt;
&lt;br /&gt;
パケットフィルタリングは複数の&#039;&#039;マッチ&#039;&#039; (ルールが適用されるパケットの条件) と一つの&#039;&#039;ターゲット&#039;&#039; (パケットが全ての条件に一致したときのアクション) によって記された、&#039;&#039;ルール&#039;&#039;に基づきます。ルールがマッチするものはパケットが入ってくるインターフェース (例: eth0 または eth1) や、パケットのタイプ (ICMP, TCP, UDP)、パケットの送信先ポートなどになります。&lt;br /&gt;
&lt;br /&gt;
ターゲットは {{ic|-j}} または {{ic|--jump}} オプションを使って指定します。ターゲットはユーザー定義チェイン (条件に一致した場合、次のユーザー定義チェインにジャンプしてそこから処理が続行される)、特別な組み込みターゲットのどれか、またはターゲットの拡張のいずれかになります。組み込みターゲットは {{ic|ACCEPT}}, {{ic|DROP}}, {{ic|QUEUE}}, {{ic|RETURN}} で、ターゲットの拡張は {{ic|REJECT}} や {{ic|LOG}} などです。ターゲットが組み込みターゲットだった場合、パケットの運命はすぐに決まり、現在のテーブルのパケットの処理は停止します。ターゲットがユーザー定義チェインだった場合で、さらにこの2番目のチェインをパケットが通過した場合、元のチェインの次のルールに移ります。ターゲットの拡張は&#039;&#039;終了&#039;&#039; (組み込みターゲットと同じ) と&#039;&#039;非終了&#039;&#039; (ユーザー定義チェインと同じ) のいずれも可能です。詳しくは {{ic|man 8 iptables-extensions}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== チェインの通過 ===&lt;br /&gt;
&lt;br /&gt;
あらゆるインターフェースで受け取られたネットワークパケットは [http://www.frozentux.net/iptables-tutorial/chunkyhtml/images/tables_traverse.jpg フローチャート] で示されている順番でテーブルのトラフィック制御チェインを通過していきます。最初のルーティングの決定はパケットの最終目的地がローカルマシンなのか (その場合パケットは {{ic|INPUT}} チェインを通過します) もしくは他のところなのか (その場合パケットは {{ic|FORWARD}} チェインを通過します) 判断するところからです。次のルーティングの決定は送出パケットにどのインターフェースを割り当てるかの決定を伴います。この経路にあるチェインごとに、全てのルールが順番に評価され、ルールが一致すれば、対応するターゲット・ジャンプのアクションが実行されます。最も一般的に使われるターゲットのビッグスリーは {{ic|ACCEPT}} と {{ic|DROP}}、そしてユーザー定義チェインへのジャンプです。組み込みチェインにはデフォルトポリシーを設定できますが、ユーザー定義チェインではできません。ジャンプした先のチェインのルールがどれも完全一致しないときは、パケットは [http://www.frozentux.net/iptables-tutorial/images/table_subtraverse.jpg こちら] に描かれているように元のチェインに戻ります。{{ic|DROP}} ターゲットのルールで完全一致があった場合は即座にパケットは拒否され、先の処理は行われません。チェインの中でパケットが {{ic|ACCEPT}} されると、全ての上位のチェインでパケットが {{ic|ACCEPT}} され、上位チェインを通過しなくなります。ただし、他のテーブルのチェインは全て通常通りにパケットが通過するので注意してください。&lt;br /&gt;
&lt;br /&gt;
=== モジュール ===&lt;br /&gt;
&lt;br /&gt;
connlimit, conntrack, limit, recent など多数のモジュールを使うことで iptables を拡張することができます。これらのモジュールは新しい機能を追加して複雑なフィルタリングルールを可能にします。&lt;br /&gt;
&lt;br /&gt;
== iptables の設定と実行 ==&lt;br /&gt;
&lt;br /&gt;
iptables は [[systemd]] のサービスであり次のように起動できます:&lt;br /&gt;
&lt;br /&gt;
 # systemctl start iptables&lt;br /&gt;
&lt;br /&gt;
ただし、このサービスは {{ic|/etc/iptables/iptables.rules}} ファイルがないと起動せず、Arch の {{Pkg|iptables}} パッケージにはデフォルトの iptables.rule ファイルは付いていません。したがって初めてサービスを起動する場合:&lt;br /&gt;
&lt;br /&gt;
 # touch /etc/iptables/iptables.rules&lt;br /&gt;
 # systemctl start iptables&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 # cp /etc/iptables/empty.rules /etc/iptables/iptables.rules&lt;br /&gt;
 # systemctl start iptables&lt;br /&gt;
&lt;br /&gt;
他のサービスと同じように、起動時に iptables が自動的にロードされるようにしたいときは、有効化してください:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable iptables&lt;br /&gt;
&lt;br /&gt;
=== コマンドラインから ===&lt;br /&gt;
&lt;br /&gt;
==== 現在のルールを表示する ====&lt;br /&gt;
&lt;br /&gt;
次のコマンドを使うことで現在のルールセットとルールごとのヒット数を確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# iptables -nvL|Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
 pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
 pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
 pkts bytes target     prot opt in     out     source               destination}}&lt;br /&gt;
&lt;br /&gt;
上のように出力された場合、ルールは存在しません。何もブロックされません。&lt;br /&gt;
&lt;br /&gt;
ルールを表示する際に行番号を表示するには、{{ic|--line-numbers}} をコマンドに追加してください。個々のルールを削除したり追加するときに便利です。&lt;br /&gt;
&lt;br /&gt;
==== ルールをリセットする ====&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを使えば iptables をデフォルトに戻すことができます:&lt;br /&gt;
&lt;br /&gt;
 # iptables -F&lt;br /&gt;
 # iptables -X&lt;br /&gt;
 # iptables -t nat -F&lt;br /&gt;
 # iptables -t nat -X&lt;br /&gt;
 # iptables -t mangle -F&lt;br /&gt;
 # iptables -t mangle -X&lt;br /&gt;
 # iptables -t raw -F&lt;br /&gt;
 # iptables -t raw -X&lt;br /&gt;
 # iptables -t security -F&lt;br /&gt;
 # iptables -t security -X&lt;br /&gt;
 # iptables -P INPUT ACCEPT&lt;br /&gt;
 # iptables -P FORWARD ACCEPT&lt;br /&gt;
 # iptables -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
引数を付けない {{ic|-F}} コマンドは現在のテーブルの全てのチェインを削除します。同じく、{{ic|-X}} はテーブル内の空の (デフォルトでない) チェインを全て削除します。&lt;br /&gt;
&lt;br /&gt;
{{ic|[chain]}} 引数を付けて {{ic|-F}} や {{ic|-X}} を使うことでチェインを個別に削除することもできます。&lt;br /&gt;
&lt;br /&gt;
==== ルールを編集する ====&lt;br /&gt;
&lt;br /&gt;
ルールの追加は、チェインにルールを付け足すか、またはチェインの特定の位置にルールを挿入することで行います。ここでは両方の方法を用います。&lt;br /&gt;
&lt;br /&gt;
まず最初に、わたしたちのコンピュータはルーターではありません (もちろん、[[ルーター]]なのであれば話は別ですが)。{{ic|FORWARD}} チェインのデフォルトポリシーを {{ic|ACCEPT}} から {{ic|DROP}} に変更します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -P FORWARD DROP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{warning|このセクションは iptables のルールに関する構文と構想を伝えるためにあります。サーバーのセキュリティを確保するための方法を記述しているわけではありません。システムのセキュリティを向上させる方法については、最小限セキュアな iptables の設定について書かれた[[シンプルなステートフルファイアウォール]]や、一般的な視点で Arch Linux のセキュリティを上げる方法を説明している[[セキュリティ]]のページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
[[Dropbox]] の LAN 同期機能は認識された全てのコンピュータに[https://isc.sans.edu/port.html?port=17500 30秒毎にパケットを送信します]。Dropbox クライアントで LAN を使っていてこの機能を利用しない場合、このパケットは拒否すると良いでしょう:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -A INPUT -p tcp --dport 17500 -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
# iptables -nvL --line-numbers&lt;br /&gt;
|&lt;br /&gt;
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
1        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:17500 reject-with icmp-port-unreachable&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{note|ここでは {{ic|DROP}} ではなく {{ic|REJECT}} を使用していますが、これは [https://tools.ietf.org/html/rfc1122#page-69 RFC 1122 3.3.8] がパケットをドロップする代わりに出来る限り ICMP エラーを返すことをホストに要求しているためです。実際には、サーバーの存在を知るべきホストからのパケットは {{ic|REJECT}} して、サーバーの存在すら知るべきでない (もしくは何か良からぬことを企んでいる) ホストからのパケットは {{ic|DROP}} するのがベストです。}}&lt;br /&gt;
&lt;br /&gt;
そして今度は、Dropbox に関する考えをあらためてコンピュータに Dropbox をインストールすることを決めたとします。LAN 同期も行いますが、ネットワーク上の特定の一つの IP しか使いません。そこで {{ic|-R}} を使って古いルールを置き換える必要があります。{{ic|10.0.0.85}} は別の IP です:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -R INPUT 1 -p tcp --dport 17500 ! -s 10.0.0.85 -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
# iptables -nvL --line-numbers&lt;br /&gt;
|&lt;br /&gt;
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
1        0     0 REJECT     tcp  --  *      *      !10.0.0.85            0.0.0.0/0            tcp dpt:17500 reject-with icmp-port-unreachable&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
オリジナルのルールをコンピュータのポート {{ic|17500}} に {{ic|10.0.0.85}} がアクセスできるようにルールを置き換えました。しかしながらここで、このルールは扱いづらいということに気づきました。フレンドリーな Dropbox ユーザーがデバイスのポート {{ic|17500}} にアクセスしようとしたときに、すぐにそのユーザーを許可したいわけで、その後のファイアウォールルールで彼をテストしたくないということです。&lt;br /&gt;
&lt;br /&gt;
信頼されているユーザーはすぐ許可するように、新しいルールを書き込みます。{{ic|-I}} を使って古いルールの前に新しいルールを挿入:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -I INPUT -p tcp --dport 17500 -s 10.0.0.85 -j ACCEPT -m comment --comment &amp;quot;Friendly Dropbox&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
# iptables -nvL --line-numbers&lt;br /&gt;
|&lt;br /&gt;
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
1        0     0 ACCEPT     tcp  --  *      *       10.0.0.85            0.0.0.0/0            tcp dpt:17500 /* Friendly Dropbox */&lt;br /&gt;
2        0     0 REJECT     tcp  --  *      *      !10.0.0.85            0.0.0.0/0            tcp dpt:17500 reject-with icmp-port-unreachable&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして2番目のルールを、ポート {{ic|17500}} で全てを拒否するルールに置き換えます:&lt;br /&gt;
&lt;br /&gt;
 # iptables -R INPUT 2 -p tcp --dport 17500 -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
&lt;br /&gt;
最終的なルールは以下のようになりました:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
# iptables -nvL --line-numbers&lt;br /&gt;
|&lt;br /&gt;
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
1        0     0 ACCEPT     tcp  --  *      *       10.0.0.85            0.0.0.0/0            tcp dpt:17500 /* Friendly Dropbox */&lt;br /&gt;
2        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:17500 reject-with icmp-port-unreachable&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;
num   pkts bytes target     prot opt in     out     source               destination&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイル ===&lt;br /&gt;
&lt;br /&gt;
Arch Linux のデフォルトでは、iptables のルールは {{ic|/etc/iptables/iptables.rules}} に保存されます。ただし、ルールは自動でロードされません。代わりに起動時にこのファイルを読み込んでルールをロードする {{ic|iptables.service}} を有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable iptables&lt;br /&gt;
 # systemctl start iptables&lt;br /&gt;
&lt;br /&gt;
IPv6 の iptables ルールは、デフォルトで、{{ic|/etc/iptables/ip6tables.rules}} に保存され、このファイルは {{ic|ip6tables.service}} によって読み込まれます。このサービスを起動する方法は上と同じです。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=iptables 1.4.21-1 パッケージの {{ic|iptables.service}} と {{ic|ip6tables.service}} ファイルは古くなっています。systemd 214 からセキュリティ上の理由で、ネットワークが設定される前にファイアウォールが実行するように、ファイアウォールは {{ic|network-pre.target}} ターゲットの前に起動することが推奨されています。iptables がアップデートされるまで、ドロップインディレクトリ {{ic|/etc/systemd/system/iptables.service.d}} を作成して、その中に {{ic|00-pre-network.conf}} ファイルを使って以下のスニペットを記述して下さい:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Wants=network-pre.target&lt;br /&gt;
 Before=network-pre.target&lt;br /&gt;
&lt;br /&gt;
システムが {{ic|ip6tables.service}} を使っている場合、{{ic|/etc/systemd/system/ip6tables.service.d}} ドロップインディレクトリで同じことを行なって下さい。このことに関する詳細は [https://bugs.freedesktop.org/show_bug.cgi?id&amp;amp;#61;79600 systemd のバグレポート], [https://lists.freedesktop.org/archives/systemd-devel/2014-June/019925.html systemd のリリースアナウンス], {{Bug|33478}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
コマンドラインでルールを追加した後、設定ファイルは自動では変更されません &amp;amp;mdash; 手動で保存する必要があります:&lt;br /&gt;
&lt;br /&gt;
 # iptables-save &amp;gt; /etc/iptables/iptables.rules&lt;br /&gt;
&lt;br /&gt;
設定ファイルを手動で編集したら、リロードしてください:&lt;br /&gt;
&lt;br /&gt;
 # systemctl reload iptables&lt;br /&gt;
&lt;br /&gt;
もしくは iptables を使って直接ロードすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # iptables-restore &amp;lt; /etc/iptables/iptables.rules&lt;br /&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;
{{ic|LOG}} ターゲットを使うことでルールにヒットしたパケットを記録することができます。{{ic|ACCEPT}} や {{ic|DROP}} など他のターゲットとちがって、パケットは {{ic|LOG}} ターゲットにヒットした後もチェインを通過します。つまり拒否されたパケットを全て記録するためには、それぞれの DROP ルールの前に同じ {{ic|LOG}} ルールを追加する必要があります。これだと事態がややこしくなり効率的でなくなるので、代わりに {{ic|logdrop}} チェインを作成します。&lt;br /&gt;
&lt;br /&gt;
チェインを作成:&lt;br /&gt;
&lt;br /&gt;
 # iptables -N logdrop&lt;br /&gt;
&lt;br /&gt;
新しく作成したチェインに以下のルールを追加:&lt;br /&gt;
&lt;br /&gt;
 # iptables -A logdrop -m limit --limit 5/m --limit-burst 10 -j LOG&lt;br /&gt;
 # iptables -A logdrop -j DROP&lt;br /&gt;
&lt;br /&gt;
{{ic|limit}} や {{ic|limit-burst}} オプションの説明は[[#ログ出力の上限を設定する|下のセクション]]にあります。&lt;br /&gt;
&lt;br /&gt;
これで、パケットを拒否してイベントを記録したいときは、毎回 {{ic|logdrop}} チェインにジャンプするようにします。例えば:&lt;br /&gt;
&lt;br /&gt;
 # iptables -A INPUT -m conntrack --ctstate INVALID -j logdrop&lt;br /&gt;
&lt;br /&gt;
=== ログ出力の上限を設定する ===&lt;br /&gt;
&lt;br /&gt;
上記の {{ic|logdrop}} チェインは limit モジュールを使うことで &#039;&#039;iptables&#039;&#039; のログが大きくなりすぎたり不必要なハードドライブの書き込みが発生するのを防ぐことができます。上限を設定していないと、誤って設定したサービスが接続を試行したり、攻撃者によって、iptables のログへの書き込みでドライブ (少なくとも {{ic|/var}} パーティション) が埋まってしまう可能性があります。&lt;br /&gt;
&lt;br /&gt;
limit モジュールは {{ic|-m limit}} で呼び出すことができます。そして {{ic|--limit}} を使うことで平均レートを、{{ic|--limit-burst}} を使うことで最初のバーストレートを設定することができます。上記の {{ic|logdrop}} のサンプルなら:&lt;br /&gt;
&lt;br /&gt;
 # iptables -A logdrop -m limit --limit 5/m --limit-burst 10 -j LOG&lt;br /&gt;
&lt;br /&gt;
これで通過する全てのパケットを記録するルールが追加されます。最初の連続する10のパケットが記録され、それから1分ごとに5のパケットだけ記録されます。&amp;quot;limit burst&amp;quot; のカウントは log アクティビティがノーマルに自動的に戻って &amp;quot;limit rate&amp;quot; が壊れない度にリセットされます。&lt;br /&gt;
&lt;br /&gt;
=== 記録されたパケットを表示する ===&lt;br /&gt;
&lt;br /&gt;
記録されたパケットは [[systemd#Journal|systemd の journal]] でカーネルメッセージとして見ることができます。&lt;br /&gt;
&lt;br /&gt;
マシンが最後に起動したときから記録されたパケットを全て表示するには:&lt;br /&gt;
 # journalctl -k | grep &amp;quot;IN=.*OUT=.*&amp;quot; | less&lt;br /&gt;
&lt;br /&gt;
=== syslog-ng ===&lt;br /&gt;
&lt;br /&gt;
[[syslog-ng]] を使っている場合、iptables のログ出力先をコントロールすることができます:&lt;br /&gt;
 filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };&lt;br /&gt;
を&lt;br /&gt;
 filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };&lt;br /&gt;
&lt;br /&gt;
これで iptables による {{ic|/var/log/everything.log}} へのログ出力が停止されます。&lt;br /&gt;
&lt;br /&gt;
iptables に {{ic|/var/log/iptables.log}} 以外のファイルにログを出力して欲しい場合は、destination {{ic|d_iptables}} の file の値を変更するだけで可能です ({{ic|syslog-ng.conf}} にあります):&lt;br /&gt;
 destination d_iptables { file(&amp;quot;/var/log/iptables.log&amp;quot;); };&lt;br /&gt;
&lt;br /&gt;
=== ulogd ===&lt;br /&gt;
&lt;br /&gt;
[http://www.netfilter.org/projects/ulogd/index.html ulogd] は netfilter のための特別なユーザースペースパケットログデーモンで、デフォルトの {{ic|LOG}} ターゲットを置き換えることができます。{{Pkg|ulogd}} パッケージは {{ic|[community]}} リポジトリから入手可能です。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
{{Wikipedia/ja|iptables}}&lt;br /&gt;
* [http://www.netfilter.org/projects/iptables/index.html iptables 公式ウェブサイト]&lt;br /&gt;
* [http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html iptables Tutorial 1.2.2] by Oskar Andreasson&lt;br /&gt;
* [https://wiki.debian.org/iptables iptables Debian] Debian wiki&lt;/div&gt;</summary>
		<author><name>Grainrigi</name></author>
	</entry>
</feed>