<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Liske</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Liske"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Liske"/>
	<updated>2026-05-01T23:35:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31530</id>
		<title>Release Notes for Alpine 3.23.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31530"/>
		<updated>2025-11-26T20:01:18Z</updated>

		<summary type="html">&lt;p&gt;Liske: update ifstate&amp;#039;s versioned docs link to the version shipped in 3.23&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
=== {{pkg|apk-tools}} v3 ===&lt;br /&gt;
&lt;br /&gt;
After 5 years of development in the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of apk-tools, apk v3 is now ready for Alpine v3.23.0. This should be a safe and seamless upgrade from apk v2, but might has some breaking changes if you use &amp;lt;code&amp;gt;libapk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that we will only transition the package manager to v3, but will keep the v2 index and package format. We plan to move to the v3 index and package format after Alpine v3.23.&lt;br /&gt;
&lt;br /&gt;
For more information, take a look at the release notes of apk v3: TODO&lt;br /&gt;
&lt;br /&gt;
=== /usr merge ===&lt;br /&gt;
&lt;br /&gt;
New installations are now /usr-merged, and people are encouraged to merge their systems after upgrade. See the [https://alpinelinux.org/posts/2025-10-01-usr-merge.html official announcement] for more details.&lt;br /&gt;
&lt;br /&gt;
=== {{Pkg|linux-stable}} replaces {{Pkg|linux-edge}} ===&lt;br /&gt;
&lt;br /&gt;
For years, {{Pkg|linux-lts}} and {{Pkg|linux-edge}} grew apart and developed their own kernel configs, different architectures, etc.&lt;br /&gt;
&lt;br /&gt;
Now {{Pkg|linux-edge}} gets replaced with {{Pkg|linux-stable}} which has the identical configuration as {{Pkg|linux-lts}}, but follows the stable releases instead of the long-term releases (see https://kernel.org/).&lt;br /&gt;
&lt;br /&gt;
If you had {{Pkg|linux-edge}} installed, apk automatically installs {{Pkg|linux-stable}} as a replacement. There is a reasonably amount of kernel config differences, if you need a config option that existed previously in {{Pkg|linux-edge}}, please open a issue to add the required option to {{Pkg|linux-lts}}. Also this change might involve manual boot loader configuration, as the kernel has been renamed and follows {{Pkg|linux-lts}}&#039; packaging recipe.&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== Static binaries are built as PIE ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17294#note_524739}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM metapackage ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== nftrules ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/67137}}&lt;br /&gt;
&lt;br /&gt;
=== curl HTTP/3 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/89382}}&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* BIRD 3.1.4&lt;br /&gt;
* busybox 1.37.0&lt;br /&gt;
* Deno 2.3.1&lt;br /&gt;
* ffmpeg 8&lt;br /&gt;
* GCC 15.2.0&lt;br /&gt;
* GNOME 49&lt;br /&gt;
* Go 1.25&lt;br /&gt;
* ISC BIND 9.20.16&lt;br /&gt;
* ISC Kea 3.0.3&lt;br /&gt;
* KDE Plasma 6.5.2&lt;br /&gt;
* Linux 6.12&lt;br /&gt;
* LLVM 21.1.2&lt;br /&gt;
* LXQt 2.30.&lt;br /&gt;
* nginx 1.28&lt;br /&gt;
* NodeJS 24.11.1 (LTS)&lt;br /&gt;
* PHP 8.5.0&lt;br /&gt;
* Qt 6.10&lt;br /&gt;
* Ruby 3.4.7&lt;br /&gt;
* Rust 1.91.1&lt;br /&gt;
* wlroots 0.19&lt;br /&gt;
* zigbee2mqtt 2.6.3&lt;br /&gt;
&lt;br /&gt;
=== GCC 15 ===&lt;br /&gt;
&lt;br /&gt;
=== LLVM 21 ===&lt;br /&gt;
&lt;br /&gt;
=== ifupdown-ng 0.13 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== GNOME 49 ===&lt;br /&gt;
&lt;br /&gt;
https://release.gnome.org/49/&lt;br /&gt;
&lt;br /&gt;
* We kept gnome-session (and gdm) at 48 because of the [https://release.gnome.org/49/developers/index.html#stronger-systemd-dependencies stricter systemd dependency] ({{Issue|17514}})&lt;br /&gt;
* Our gdk-pixbuf didn&#039;t enable the glycin sandboxing library yet ({{Issue|17550}})&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg 8 ===&lt;br /&gt;
&lt;br /&gt;
The {{Pkg|ffmpeg}} package got upgraded from version 6 to 8.&lt;br /&gt;
&lt;br /&gt;
Most consumers of ffmpeg are now built against ffmpeg 8, but some packages might still use ffmpeg 6 or 7, depending on its API compatability. Therefore the {{Pkg|ffmpeg6}} and {{Pkg|ffmpeg7}} packages are also still available.&lt;br /&gt;
&lt;br /&gt;
Also note that {{Pkg|ffmpeg4}} got removed and all consumers were migrated to at least ffmpeg 6.&lt;br /&gt;
&lt;br /&gt;
=== ifstate 2 ===&lt;br /&gt;
&lt;br /&gt;
The declarative network configuration tool {{Pkg|ifstate}} has been upgraded from version 1.x to version 2. It is not possible to use the old configuration file of ifstate 1.x with ifstate 2.x! The configuration file &#039;&#039;&#039;must&#039;&#039;&#039; be adapted to the new schema and file name to prevent breaking the host&#039;s network the next time it is booted! More information about the required config changes can be found in the [https://ifstate.net/2.2/docs/upgrades/#ifstate-20 ifstate documentation].&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== {{Pkg|binutils-gold}} removed ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: not done yet and maybe not in 3.23}}&lt;br /&gt;
&lt;br /&gt;
The gold linker got deprecated by upstream on February 2025 and in Alpine v3.23 we removed it from our repositories.&lt;br /&gt;
&lt;br /&gt;
Previously this has been hold because of Go&#039;s use of the gold linker for ARM architectures, but these days the default ld linker works as expected.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Qt5 removals ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg4 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM 17 ===&lt;br /&gt;
&lt;br /&gt;
=== rssh ===&lt;br /&gt;
&lt;br /&gt;
rssh package has been removed due to the dead upstream.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;[[Release Notes for Alpine 3.22.0|← Previous page: Release Notes for Alpine 3.22.0]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liske</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31248</id>
		<title>Release Notes for Alpine 3.23.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31248"/>
		<updated>2025-10-17T20:40:05Z</updated>

		<summary type="html">&lt;p&gt;Liske: add hint on major ifstate upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
{{Note|We&#039;re beginning to work on the roadmap for Alpine Linux v3.23. To view the upcoming changes, see {{Issue|17294}}.}}&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
=== {{pkg|apk-tools}} v3 ===&lt;br /&gt;
&lt;br /&gt;
After 5 years of development in the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of apk-tools, apk v3 is now ready for Alpine v3.23.0. This should be a safe and seamless upgrade from apk v2, but might has some breaking changes if you use &amp;lt;code&amp;gt;libapk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that we will only transition the package manager to v3, but will keep the v2 index and package format. We plan to move to the v3 index and package format after Alpine v3.23.&lt;br /&gt;
&lt;br /&gt;
For more information, take a look at the release notes of apk v3: TODO&lt;br /&gt;
&lt;br /&gt;
=== /usr merge ===&lt;br /&gt;
&lt;br /&gt;
New installations are now /usr-merged, and people are encouraged to merge their systems after upgrade. See the [https://alpinelinux.org/posts/2025-10-01-usr-merge.html official announcement] for more details&lt;br /&gt;
&lt;br /&gt;
=== {{Pkg|linux-stable}} replaces {{Pkg|linux-edge}} ===&lt;br /&gt;
&lt;br /&gt;
For years, {{Pkg|linux-lts}} and {{Pkg|linux-edge}} grew apart and developed their own kernel configs, different architectures, etc.&lt;br /&gt;
&lt;br /&gt;
Now {{Pkg|linux-edge}} gets replaced with {{Pkg|linux-stable}} which has the identical configuration as {{Pkg|linux-lts}}, but follows the stable releases instead of the long-term releases (see https://kernel.org/).&lt;br /&gt;
&lt;br /&gt;
If you had {{Pkg|linux-edge}} installed, apk automatically installs {{Pkg|linux-stable}} as a replacement. There is a reasonably amount of kernel config differences, if you need a config option that existed previously in {{Pkg|linux-edge}}, please open a issue to add the required option to {{Pkg|linux-lts}}. Also this change might involve manual boot loader configuration, as the kernel has been renamed and follows {{Pkg|linux-lts}}&#039; packaging recipe.&lt;br /&gt;
&lt;br /&gt;
=== ifstate breaking changes ===&lt;br /&gt;
&lt;br /&gt;
The declarative network configuration tool {{Pkg|ifstate}} has been upgraded from version 1.x to version 2. It is not possible to use the old configuration file of ifstate 1.x with ifstate 2.x! The configuration file &#039;&#039;&#039;must&#039;&#039;&#039; be adapted to the new schema and file name to prevent breaking the host&#039;s network the next time it is booted! More information about the required config changes can be found in the [https://ifstate.net/2.0/docs/upgrades/#ifstate-20 ifstate documentation].&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== Static binaries are built as PIE ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17294#note_524739}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM metapackage ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== nftrules ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/67137}}&lt;br /&gt;
&lt;br /&gt;
=== curl HTTP/3 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/89382}}&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* BIRD TODO&lt;br /&gt;
* busybox TODO&lt;br /&gt;
* Deno TODO&lt;br /&gt;
* GCC TODO&lt;br /&gt;
* GNOME TODO&lt;br /&gt;
* Go TODO&lt;br /&gt;
* ISC BIND TODO&lt;br /&gt;
* KDE Plasma TODO&lt;br /&gt;
* Linux TODO&lt;br /&gt;
* LLVM TODO&lt;br /&gt;
* LXQt TODO&lt;br /&gt;
* nginx TODO&lt;br /&gt;
* NodeJS TODO (LTS)&lt;br /&gt;
* PHP TODO&lt;br /&gt;
* Qt TODO&lt;br /&gt;
* Ruby TODO&lt;br /&gt;
* Rust TODO&lt;br /&gt;
* wlroots TODO&lt;br /&gt;
* zigbee2mqtt TODO&lt;br /&gt;
* ffmpeg TODO&lt;br /&gt;
&lt;br /&gt;
=== GCC 15 ===&lt;br /&gt;
&lt;br /&gt;
=== LLVM 21 ===&lt;br /&gt;
&lt;br /&gt;
=== ifupdown-ng 0.13 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== GNOME 49 ===&lt;br /&gt;
&lt;br /&gt;
https://release.gnome.org/49/&lt;br /&gt;
&lt;br /&gt;
* We kept gnome-session (and gdm) at 48 because of the [https://release.gnome.org/49/developers/index.html#stronger-systemd-dependencies stricter systemd dependency] ({{Issue|17514}})&lt;br /&gt;
* Our gdk-pixbuf didn&#039;t enable the glycin sandboxing library yet ({{Issue|17550}})&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg 8 ===&lt;br /&gt;
&lt;br /&gt;
6 -&amp;gt; 8&lt;br /&gt;
&lt;br /&gt;
6 and 7 are still available as ffmpeg6 and ffmpeg7&lt;br /&gt;
&lt;br /&gt;
4 gets removed&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== {{Pkg|binutils-gold}} removed ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: not done yet and maybe not in 3.23}}&lt;br /&gt;
&lt;br /&gt;
The gold linker got deprecated by upstream on February 2025 and in Alpine v3.23 we removed it from our repositories.&lt;br /&gt;
&lt;br /&gt;
Previously this has been hold because of Go&#039;s use of the gold linker for ARM architectures, but these days the default ld linker works as expected.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Qt5 removals ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg4 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM 17 ===&lt;br /&gt;
&lt;br /&gt;
=== rssh ===&lt;br /&gt;
&lt;br /&gt;
rssh package has been removed due to the dead upstream.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;[[Release Notes for Alpine 3.22.0|← Previous page: Release Notes for Alpine 3.22.0]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Liske</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.19.0&amp;diff=25783</id>
		<title>Release Notes for Alpine 3.19.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.19.0&amp;diff=25783"/>
		<updated>2023-11-19T17:32:04Z</updated>

		<summary type="html">&lt;p&gt;Liske: Add netns section.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Base System ==&lt;br /&gt;
&lt;br /&gt;
=== iptables-nft ===&lt;br /&gt;
&lt;br /&gt;
the &amp;lt;code&amp;gt;/sbin/iptables{,-save,-restore}&amp;lt;/code&amp;gt; symlinks now point to xtables-nft-multi instead of xtables-legacy-multi. this means they use the nftables kernel backend instead of the legacy iptables one.&lt;br /&gt;
&lt;br /&gt;
since the new iptables- binaries also don&#039;t use the iptables backend, to work with any existing rules and save them, you need to install &amp;lt;code&amp;gt;iptables-legacy&amp;lt;/code&amp;gt; and use &amp;lt;code&amp;gt;iptables-legacy-save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
because mixing backends is not supported, you should reboot your system if you have to use the iptables commands after upgrading.&lt;br /&gt;
&lt;br /&gt;
=== netns ===&lt;br /&gt;
&lt;br /&gt;
The OpenRC package contains a patch to make it possible to start most services in netns namespaces. See also [[Netns|netns]].&lt;br /&gt;
&lt;br /&gt;
[[Category:News]]&lt;/div&gt;</summary>
		<author><name>Liske</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Netns&amp;diff=25348</id>
		<title>Netns</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Netns&amp;diff=25348"/>
		<updated>2023-09-26T20:02:44Z</updated>

		<summary type="html">&lt;p&gt;Liske: Minor format fixes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Netns&#039;&#039;&#039; (network namespaces) are another instance of the network stack with its own network devices (links), ip setup and firewall rules. Besides of using netns for building containers they can be used to get a stricter isolation than using [[VRF]]s.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The packages and patches described in this article are available in Alpine edge and ≥3.19.&lt;br /&gt;
&lt;br /&gt;
== NETNS management ==&lt;br /&gt;
&lt;br /&gt;
=== iproute2 ===&lt;br /&gt;
&lt;br /&gt;
Netns can be ad-hoc managed using the &amp;lt;code&amp;gt;ip netns&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip netns&lt;br /&gt;
ip netns add tenant1&lt;br /&gt;
ip netns del tenant1&lt;br /&gt;
ip netns exec tenant1 ip -br link&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ifstate ===&lt;br /&gt;
&lt;br /&gt;
[https://ifstate.net IfState], a declarative network configuration tool, is full netns aware since IfState 1.9.0. The following config example creates a wireguard tunnel and a vlan sub-interface. The wireguard link &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; and the vlan sub-interface are moved into the &amp;lt;code&amp;gt;vpn&amp;lt;/code&amp;gt; netns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# root netns&lt;br /&gt;
interfaces:&lt;br /&gt;
  - name: eth0&lt;br /&gt;
    addresses:&lt;br /&gt;
    - 198.51.100.2/31&lt;br /&gt;
    link:&lt;br /&gt;
      state: up&lt;br /&gt;
      kind: physical&lt;br /&gt;
routing:&lt;br /&gt;
  routes:&lt;br /&gt;
    - to: 0.0.0.0/0&lt;br /&gt;
      via: 198.51.100.1&lt;br /&gt;
  rules: []&lt;br /&gt;
&lt;br /&gt;
namespaces:&lt;br /&gt;
  # &amp;quot;vpn&amp;quot; netns&lt;br /&gt;
  vpn:&lt;br /&gt;
    interfaces:&lt;br /&gt;
    - name: eth0.42&lt;br /&gt;
      addresses:&lt;br /&gt;
      - 192.0.2.1/25&lt;br /&gt;
      link:&lt;br /&gt;
        state: up&lt;br /&gt;
        kind: vlan&lt;br /&gt;
        vlan_id: 42&lt;br /&gt;
        link: eth0&lt;br /&gt;
        # link to eth0 in root netns&lt;br /&gt;
        link_netns: null&lt;br /&gt;
    - name: wg0&lt;br /&gt;
      addresses:&lt;br /&gt;
      - 192.0.2.254/30&lt;br /&gt;
      link:&lt;br /&gt;
        state: up&lt;br /&gt;
        kind: wireguard&lt;br /&gt;
        # bind wireguard to the root netns&lt;br /&gt;
        bind_netns: null&lt;br /&gt;
      wireguard:&lt;br /&gt;
        private_key: !include /etc/wireguard/secret.key&lt;br /&gt;
        peers:&lt;br /&gt;
        - public_key: 3Eimby+9YtJwtx+peCsz6RiubRqAp+cATHNiGWsUsEU=&lt;br /&gt;
          endpoint: 203.0.113.42&lt;br /&gt;
          persistent_keepalive_interval: 30&lt;br /&gt;
          allowedips:&lt;br /&gt;
          - 0.0.0.0/0&lt;br /&gt;
    routing:&lt;br /&gt;
      routes: []&lt;br /&gt;
        - to: 0.0.0.0/0&lt;br /&gt;
          dev: wg0&lt;br /&gt;
      rules: []&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NETNS-based Service Isolation ==&lt;br /&gt;
&lt;br /&gt;
Services can be run isolated in a NETNS (&#039;&#039;&#039;and&#039;&#039;&#039; [[VRF]] inside the NETNS) when running at least OpenRC 0.49.0-r1. You can set the &amp;lt;code&amp;gt;$netns&amp;lt;/code&amp;gt; variable for the service in &amp;lt;code&amp;gt;/etc/conf.d&amp;lt;/code&amp;gt; in most cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The netns must already be created before a service can be started inside of it!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== NETNS-compatible initd scripts ==&lt;br /&gt;
&lt;br /&gt;
Not all initd scripts might be netns compatible. Some network stack related packages have been patched to be netns aware:&lt;br /&gt;
&lt;br /&gt;
* ipset&lt;br /&gt;
* iptables&lt;br /&gt;
* nftables&lt;/div&gt;</summary>
		<author><name>Liske</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Netns&amp;diff=25347</id>
		<title>Netns</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Netns&amp;diff=25347"/>
		<updated>2023-09-26T20:01:04Z</updated>

		<summary type="html">&lt;p&gt;Liske: Initial content about Alpine&amp;#039;s netns superpower.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Netns&#039;&#039;&#039; (network namespaces) are another instance of the network stack with its own network devices (links), ip setup and firewall rules. Besides of using netns for building containers they can be used to get a stricter isolation than using [[VRF]]s.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
The packages and patches described in this article are available in Alpine edge and ≥3.19.&lt;br /&gt;
&lt;br /&gt;
== NETNS management ==&lt;br /&gt;
&lt;br /&gt;
=== iproute2 ===&lt;br /&gt;
&lt;br /&gt;
Netns can be ad-hoc managed using the &amp;lt;code&amp;gt;ip netns&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip netns&lt;br /&gt;
ip netns add tenant1&lt;br /&gt;
ip netns del tenant1&lt;br /&gt;
ip netns exec tenant1 ip -br link&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ifstate ===&lt;br /&gt;
&lt;br /&gt;
[https://ifstate.net IfState], a declarative network configuration tool, is full netns aware since IfState 1.9.0. The following config example creates a wireguard tunnel and a vlan sub-interface. The wireguard link &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; and the vlan sub-interface are moved into the &amp;lt;code&amp;gt;vpn&amp;lt;/code&amp;gt; netns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# root netns&lt;br /&gt;
interfaces:&lt;br /&gt;
  - name: eth0&lt;br /&gt;
    addresses:&lt;br /&gt;
    - 198.51.100.2/31&lt;br /&gt;
    link:&lt;br /&gt;
      state: up&lt;br /&gt;
      kind: physical&lt;br /&gt;
routing:&lt;br /&gt;
  routes:&lt;br /&gt;
    - to: 0.0.0.0/0&lt;br /&gt;
      via: 198.51.100.1&lt;br /&gt;
  rules: []&lt;br /&gt;
&lt;br /&gt;
namespaces:&lt;br /&gt;
  # &amp;quot;vpn&amp;quot; netns&lt;br /&gt;
  vpn:&lt;br /&gt;
    interfaces:&lt;br /&gt;
    - name: eth0.42&lt;br /&gt;
      addresses:&lt;br /&gt;
      - 192.0.2.1/25&lt;br /&gt;
      link:&lt;br /&gt;
        state: up&lt;br /&gt;
        kind: vlan&lt;br /&gt;
        vlan_id: 42&lt;br /&gt;
        link: eth0&lt;br /&gt;
        # link to eth0 in root netns&lt;br /&gt;
        link_netns: null&lt;br /&gt;
    - name: wg0&lt;br /&gt;
      addresses:&lt;br /&gt;
      - 192.0.2.254/30&lt;br /&gt;
      link:&lt;br /&gt;
        state: up&lt;br /&gt;
        kind: wireguard&lt;br /&gt;
        # bind wireguard to the root netns&lt;br /&gt;
        bind_netns: null&lt;br /&gt;
      wireguard:&lt;br /&gt;
        private_key: !include /etc/wireguard/secret.key&lt;br /&gt;
        peers:&lt;br /&gt;
        - public_key: 3Eimby+9YtJwtx+peCsz6RiubRqAp+cATHNiGWsUsEU=&lt;br /&gt;
          endpoint: 203.0.113.42&lt;br /&gt;
          persistent_keepalive_interval: 30&lt;br /&gt;
          allowedips:&lt;br /&gt;
          - 0.0.0.0/0&lt;br /&gt;
    routing:&lt;br /&gt;
      routes: []&lt;br /&gt;
        - to: 0.0.0.0/0&lt;br /&gt;
          dev: wg0&lt;br /&gt;
      rules: []&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NETNS-based Service Isolation ==&lt;br /&gt;
&lt;br /&gt;
Services can be run isolated in a NETNS (&#039;&#039;&#039;and&#039;&#039;&#039; [[VRF]] inside the NETNS) when running OpenRC 0.49.0-r1+. You can set the &amp;lt;code&amp;gt;$netns&amp;lt;/code&amp;gt; variable for the service in &amp;lt;code&amp;gt;/etc/conf.d&amp;lt;/code&amp;gt; in most cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The netns must already be created before a service can be started inside of it!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== NETNS-compatible initd scripts ==&lt;br /&gt;
&lt;br /&gt;
Not all initd scripts might be netns compatible. Some network stack related packages have been patched to be netns aware:&lt;br /&gt;
&lt;br /&gt;
- ipset&lt;br /&gt;
- iptables&lt;br /&gt;
- nftables&lt;/div&gt;</summary>
		<author><name>Liske</name></author>
	</entry>
</feed>