aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml')
-rw-r--r--infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml59
1 files changed, 59 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml b/infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml
new file mode 100644
index 000000000000..42486f01fe8c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/nixos/doc/manual/administration/container-networking.xml
@@ -0,0 +1,59 @@
+<section xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ version="5.0"
+ xml:id="sec-container-networking">
+ <title>Container Networking</title>
+
+ <para>
+ When you create a container using <literal>nixos-container create</literal>,
+ it gets it own private IPv4 address in the range
+ <literal>10.233.0.0/16</literal>. You can get the container’s IPv4 address
+ as follows:
+<screen>
+<prompt># </prompt>nixos-container show-ip foo
+10.233.4.2
+
+<prompt>$ </prompt>ping -c1 10.233.4.2
+64 bytes from 10.233.4.2: icmp_seq=1 ttl=64 time=0.106 ms
+</screen>
+ </para>
+
+ <para>
+ Networking is implemented using a pair of virtual Ethernet devices. The
+ network interface in the container is called <literal>eth0</literal>, while
+ the matching interface in the host is called
+ <literal>ve-<replaceable>container-name</replaceable></literal> (e.g.,
+ <literal>ve-foo</literal>). The container has its own network namespace and
+ the <literal>CAP_NET_ADMIN</literal> capability, so it can perform arbitrary
+ network configuration such as setting up firewall rules, without affecting or
+ having access to the host’s network.
+ </para>
+
+ <para>
+ By default, containers cannot talk to the outside network. If you want that,
+ you should set up Network Address Translation (NAT) rules on the host to
+ rewrite container traffic to use your external IP address. This can be
+ accomplished using the following configuration on the host:
+<programlisting>
+<xref linkend="opt-networking.nat.enable"/> = true;
+<xref linkend="opt-networking.nat.internalInterfaces"/> = ["ve-+"];
+<xref linkend="opt-networking.nat.externalInterface"/> = "eth0";
+</programlisting>
+ where <literal>eth0</literal> should be replaced with the desired external
+ interface. Note that <literal>ve-+</literal> is a wildcard that matches all
+ container interfaces.
+ </para>
+
+ <para>
+ If you are using Network Manager, you need to explicitly prevent it from
+ managing container interfaces:
+<programlisting>
+networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
+</programlisting>
+ </para>
+
+ <para>
+ You may need to restart your system for the changes to take effect.
+ </para>
+</section>