Search K
Appearance
Appearance
Network namespace 的组件名称为 network_namespace, 相关内核
# General setup
# -> Configure standard kernel features (expert users)
# -> Multiple users, groups and capabilities support
CONFIG_MULTIUSER=y
# General setup
# -> Namespaces support
CONFIG_NAMESPACES=y
# General setup
# -> Namespaces support
# -> Network namespace
CONFIG_NET_NS=y检查工具为
#!/bin/bash
source ./kernel_config_utils.sh
network_namespace_check() {
is_error=false
if ! kernel_config_check CONFIG_MULTIUSER; then
is_error=true
fi
if ! kernel_config_check CONFIG_NAMESPACES; then
is_error=true
fi
if ! kernel_config_check CONFIG_NET_NS; then
is_error=true
fi
if [ "$is_error" == "true" ]; then
return 1
fi
local ifname="dodo"
local peer_ifname="lala"
if ! netif_veth_new $ifname $peer_ifname; then
return 1
fi
while :
do
local peer_netns="lala"
if ! ${IP_CMD} netns add $peer_netns; then
echo "add netns failed: netns '$peer_netns'"
is_error=true
break
fi
while :
do
local ip="192.168.66.1"
local peer_ip="192.168.66.2"
local netmask_len="24"
if ! ${IP_CMD} link set $ifname up; then
echo "set netif up failed: ifname '$ifname'"
is_error=true
break
fi
if ! ${IP_CMD} address add $ip/$netmask_len dev $ifname; then
echo "add netif address failed: ifname '$ifname'"
is_error=true
break
fi
if ! ${IP_CMD} link set $peer_ifname netns $peer_netns; then
echo "set netif netns failed: peer_ifname '$peer_ifname'"
is_error=true
break
fi
if ! ${IP_CMD} netns exec $peer_netns ${IP_CMD} link set $peer_ifname up; then
echo "set netif up failed: peer_ifname '$peer_ifname'"
is_error=true
break
fi
if ! ${IP_CMD} netns exec $peer_netns ${IP_CMD} address add $peer_ip/$netmask_len dev $peer_ifname; then
echo "add netif address failed: peer_ifname '$peer_ifname'"
is_error=true
break
fi
if ! ${PING_CMD} -I $ifname -c 1 -W 1 $peer_ip > /dev/null; then
echo "ping peer timeout: ifname '$ifname', peer_ifname '$peer_ifname'"
is_error=true
break
fi
break
done
${IP_CMD} netns del $peer_netns
break
done
netif_veth_delete $ifname $peer_ifname
if [ "$is_error" == "true" ]; then
return 1
fi
return 0
}