ネームスペースでネットワーク検証
動作確認 Ubuntu 24.04
RH系もおよそ動きそう
root権限必要です
- iproute2
- iptables(nft)
ネームスペース2つ作成
ip netns add ns1
ip netns add ns2
flowchart
%%node
subgraph HOST[host]
ns1
ns2
end
%%connection
ns1 ~~~ ns2
vethペア(仮想LANケーブル)でつなげる
ip link add veth0 netns ns1 type veth0 peer netns ns2
flowchart
%%node
subgraph HOST[host]
subgraph NS1[ns1]
ns1-veth0[veth0]
end
subgraph NS2[ns2]
ns2-veth0[veth0]
end
end
%%connection
ns1-veth0 o--o ns2-veth0
IPアドレスとリンクアップ
ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth0
ip netns exec ns1 ip link set veth0 up
ip netns exec ns2 ip addr add 10.0.0.2/24 dev veth0
ip netns exec ns2 ip link set veth0 up
flowchart
%%node
subgraph HOST[host]
subgraph NS1[ns1]
ns1-veth0[veth0]
end
subgraph NS2[ns2]
ns2-veth0[veth0]
end
end
%%connection
ns1-veth0 o--o ns2-veth0
%%style
classDef NIC fill:#da4,color:#35d,stroke:none
class ns1-veth0,ns2-veth0 NIC
接続確認するコマンド例
ip netns exec ns1 ping -c 3 10.0.0.2
ip netns exec ns1 ip addr # IPアドレス
ip netns exec ns1 ip link # インターフェイス
ip netns exec ns1 ip nei # 隣接するインターフェイス
ip netns exec ns1 ip route # ルーティングテーブル
ネームスペースを削除
ip netns delete ns1 #個別に削除する場合
ip netns delete ns2
ip --all netns delete #まとめて全部のnetnsを削除する場合
vethペア接続
ブリッジ接続
ルーティング
スクリプトの検索
grep -ril <keyword> .
keywords: nat, vlan, route, routing, bridge, subnet, bond, docker
一般ユーザでscript
ディレクトリにいる場合
sudo su
source nsfunc.sh
# ネームスペースのIPアドレス表示
nsinfo # すべてのネームスペース
nsinfo ns1 ns5 rt3 # 引数でネームスペース指定
# ネームスペースと関連するブリッジ、ファイルを削除
rmns
もしくは/root/.bashrc
等に追記すると便利かもしれません
Archlinuxでvethペア作成できない?
デフォルトではモジュール読み込まれないみたい
# ip link add veth0 type veth peer name veth1
Error: Unknown device type.
# lsmod | grep veth
読み込みのファイル作成したらvethペアできた
# modprobe -c | grep veth
alias rtnl_link_veth veth
# echo "rtnl_link_veth" > /etc/modules-load.d/rtnl_link_veth.conf
bondingできない - Archlinux
- LXC/LXDとつなげる
- パケットフィルタリング iptables(nft)
- 帯域制限シミュレーション
- 動的ルーティング: BGP RIP OSPF
- トンネリング
- IP v4/v6 over IP v4/v6
- DHCP DNS
iptables
はlegacyらしいけどまだまだiptablesいけます! そのうちにnftablesも対応するかも知れません Chapter 10. Getting started with nftables
Introduction to Linux interfaces for virtual networking
iproute2の各種インターフェイス、bridge, vlan, vethなど図解とサンプル
Network namespaceによるネットワークテスト環境の構築
基本的なネットワーク
Network Namespace - CUBE SUGAR CONTAINER
各種ルーティング、C言語でネームスペース作成とか 「Linuxで動かしながら学ぶTCP/IPネットワーク入門」著者の方
FRRoutingでOSPFなどなど...