CUBE SUGAR CONTAINER

技術系のこと書きます。

Network Namespace

Network Namespace 内の Linux Bridge で STP が動くようになった

以前、システムが所属している以外の (= 非ルートな) Network Namespace 上では Linux Bridge の STP が動作しない件について書いた。 blog.amedama.jp 月日は流れて、去年の話ではあるけど Linux カーネルに以下のパッチが投稿されて取り込まれたようだ。 l…

Network Namespace と HAProxy を使って HTTP/2 を試す

今回は OSS のリバースプロキシである HAProxy 1 を使って HTTP/2 を試してみる。 HTTP/2 は HTTP/1.1 に存在するパフォーマンス面の課題を解決することを目的に生み出された。 Google が開発していた SPDY というプロトコルがベースになっている。 HTTP/1.1…

Network Namespace と Libreswan で IPsec VPN を試す (Route-based / VTI デバイス)

今回は Linux の Network Namespace で作ったネットワーク上で Libreswan を動かして IPsec VPN を試してみる。 なお、Libreswan には、いくつかの動作モードがある。 今回は、その中でも Route-based VPN using VTI と呼ばれる動作モードを利用する。 これ…

Network Namespace と nftables で Destination NAT を試す

今回は Network Namespace で作ったネットワーク上で nftables 1 を使った Destination NAT を試してみる。 このエントリは、以下のエントリの続きとなっている。 blog.amedama.jp 上記は Source NAT だったのが、今回は Destination NAT になっている。 使…

Network Namespace と nftables で Source NAT を試す

今回は Network Namespace で作ったネットワーク上で nftables 1 を使った Source NAT (Network Address Translation) を試してみる。 nftables は、Linux で長らく使われてきた iptables 2 などのプログラムを置き換えることを志向したフレームワーク。 nft…

Linux の Network Namespace と dhcpcd / dnsmasq で DHCPv4 を試す

ISC DHCP 1 のメンテナンスが 2022 年末で終了してしまった。 ISC によると DHCP サーバの実装については Kea DHCP 2 への移行が推奨されている。 ただ、ISC DHCP には DHCP クライアントの実装も含まれていた。 ところが Kea DHCP には DHCP クライアントが…

BIRD と Network Namespace で BGP-4 を使ったダイナミックルーティングを試す

BIRD 1 (The BIRD Internet Routing Daemon) はルーティングプロトコルを実装した OSS のひとつ。 今回は、そんな BIRD を Network Namespace と組み合わせて BGP-4 を使ったダイナミックルーティングを設定をしてみる。 なお、現在 (2023-06-22) の BIRD は…

BIRD と Network Namespace で OSPFv2 を使ったダイナミックルーティングを試す

BIRD 1 は The BIRD Internet Routing Daemon の略で、ルーティングプロトコルを実装した OSS のひとつ。 今回は、そんな BIRD を Network Namespace と組み合わせて OSPFv2 を使ったダイナミックルーティングを設定をしてみる。 なお、現在 (2023-06-17) の…

BIRD と Network Namespace で RIPv2 を使ったダイナミックルーティングを試す

BIRD 1 は The BIRD Internet Routing Daemon の略で、ルーティングプロトコルを実装した OSS のひとつ。 今回は、そんな BIRD を Network Namespace と組み合わせて RIPv2 を使ったダイナミックルーティングを設定をしてみる。 なお、現在 (2023-06-16) の …

BIRD と Network Namespace でスタティックルーティングを試す

BIRD 1 は The BIRD Internet Routing Daemon の略で、ルーティングプロトコルを実装した OSS のひとつ。 今回は、そんな BIRD を Network Namespace と組み合わせてスタティックルーティング (静的経路制御) の設定をしてみる。 なお、今回試す内容は ip(8)…

Linux の Network Namespace で L2TP (IPsec なし) を試す

今回は L2TP の LAC (L2TP Access Concentrator) と LNS (L2TP Network Server) を Linux の Network Namespace の環境で動かしてみる。 L2TP はリモートアクセス VPN でよく使われるプロトコルの一つ。 ただし、今回は IPsec を組み合わせないため、単なる…

Linux の Network Namespace で PPPoE を試す

今回は PPPoE (PPP over Ethernet) のサーバとクライアントを Network Namespace の環境で動かしてみる。 PPPoE は、その名のとおり PPP (Point-to-Point Protocol) を Ethernet で使えるようにしたもの。 NTT 東西が提供するブロードバンドサービスのフレッ…

strongSwan の IPsec VPN を Network Namespace で試す (Route-based / VTI デバイス)

strongSwan は IPsec VPN を構成するのに用いられるソフトウェア。 今回は、その strongSwan を Network Namespace で作ったネットワーク上で動かしてみる。 動作モードとしては VTI (Virtual Tunnel Interface) デバイスを使った Route-based を利用する。 …

WireGuard の VPN を Linux の Network Namespace で試す

WireGuard は VPN を構成するための一連の実装と通信プロトコル。 実装のコードベースが小さく、他の VPN ソフトウェアと比べて設定方法がシンプルという特徴がある。 今回は、その WireGuard を Linux の Network Namespace と一緒に試してみる。 使った環…

Linux でリンクアグリゲーション (LAG) を試してみる

リンクアグリゲーションは、複数のネットワークインターフェイスを束ねて扱う技術の総称。 たとえば、2 本のイーサネットを束ねて冗長化することで 1 本に障害が起こってもサービスを提供し続けることができる。 あるいは、フレームをロードバランスすること…

Linux TC (Traffic Control) の netem (Network Emulator) で劣悪なネットワーク環境を再現する

今回は Linux TC (Traffic Control) に実装されている netem (Network Emulator) という qdisc (Queueing Discipline) を使って、劣悪なネットワーク環境を再現する方法について書いてみる。 Linux TC は、文字通り Linux のトラフィックを制御するための機…

Linux の Network Namespace と Keepalived でルータの冗長化を試す

今回は「Linuxで動かしながら学ぶTCP/IPネットワーク入門」に載せようか悩んで、結局は載せなかった内容のひとつを扱う。 Linux の Network Namespace を使って作った 2 台のルータを、Keepalived (VRRP) を使ってホットスタンバイで冗長化する構成を組んで…

Network Namespace 内の Linux Bridge では STP が動作しないらしい

どうやら、今のところ Network Namespace 1 内では Linux Bridge の STP (Spanning Tree Protocol) がサポートされていないようだ。 今回は、以下のような実験を通して、それを実際に確かめてみる。 単一の Linux Bridge 内にループを作ってストームを引き起…

iproute2 の ip-netns(8) を使わずに Network Namespace を操作する

今回は、iproute2 の ip-netns(8) を使わずに、Linux の Network Namespace を操作する方法について書いてみる。 目的は、namespaces(7) について、より深い理解を得ること。 使った環境は次のとおり。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RE…

Linux の Network Namespace と radvd / dnsmasq で IPv6 SLAAC (+RDNSS) を試す

今回は、Linux の Network Namespace と radvd / dnsmasq を使って IPv6 の SLAAC を試してみる。 IPv6 では、アドレスの自動設定にいくつかのやり方がある。 SLAAC というのは、そのひとつで RFC 4862 で定義されている IPv6 Stateless Address Autoconfigu…

Linux で VXLAN を扱ってみる

久しぶりに VXLAN について調べたところ、カーネルの機能で VXLAN インターフェイスが作れるようになってたので試してみた。 ここでいう VXLAN というのは、RFC7348 で定義されている Virtual eXtensible Local Area Network というプロトコルを指す。 この…

Linux Bridge でタグ VLAN を使う

今回は Linux Bridge (ネットワークブリッジ) でタグ VLAN (IEEE 802.1Q) を使う方法について。 設定が足らなくてだいぶ悩んだのでメモしておく。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME…