# ifupdown-netns Some simple scripts to simplify configuring network namespaces on Debian-like systems. Copy them into the corresponding directories under `/etc/network`. To configure an interface in a namespace: ``` auto eth1 iface eth1 inet manual netns myns ``` On invocation of `ifup`: * if the namespace doesn't exist it will be created * if the folders `if-down.d`, `if-post-down.d`, `if-pre-up.d` and `if-up.d` under `/etc/netns//network` don't exist, they will be created * if the `/etc/netns//network/interfaces` file doesn't exist a blank one will be created * if it does and the interface is configured, the script will invoke `ifup` for this interface inside the namespace. ## `zsh` functions to run commands and start a shell in a namespace with a custom prompt ``` nse () { if [ $# -lt 2 ]; then echo "Please specify a network namespace and a command" echo "Usage: $0 " return fi NS=${1} shift ARGS=${@} ip netns exec ${NS} unshare -m /bin/sh -c "mount --make-rprivate /;mount --bind /run/network.${NS} /run/network; ${ARGS}" } nss () { if [ $# -ne 1 ]; then echo "Please specify a network namespace" echo "Usage: $0 " return fi nse $1 zsh -i } alias nsr="nsenter -t 1 -n" NS=`ip netns identify $$` if [ "$NS" ]; then; NS="/$NS" fi if [ "`id -u`" -eq 0 ]; then export PS1="%{%}%T%{%} %{%}%n%{%}@%{%}%m${NS} %{%}%~%{%}%#%{%} " else export PS1="%{%}%T%{%} %{%}%n%{%}@%{%}%m${NS} %{%}%~%{%}%#%{%} " fi ```