vethペア作成
VETH0=veth-a1 VETH1=veth-b1 ip link add $VETH0 type veth peer name $VETH1vethの片方をホストのbridgeに接続
sudo brctl addif br0 $VETH0 sudo ip link set $VETH0 up
Dockerコンテナを起動
コンテナを--network noneで起動する。NAMEの右辺(コンテナ名)は適宜変更可。NAME=container docker run --network none --rm -it --name $NAME debian
ipコマンドのため、コンテナのnetnsを/var/run/netns以下にリンク
(CONTAINER_PID=`docker inspect $NAME --format '{{.State.Pid}}'` && sudo ln -s /proc/$CONTAINER_PID/ns/net /var/run/netns/$NAME)
コンテナにvethを設置し、IPアドレスを設定
CONTAINER_IP=192.168.19.11 CONTAINER_IP_PREFIX=24 sudo ip link set $VETH1 netns $NAME up sudo ip netns exec $NAME ip addr add $CONTAINER_IP/$CONTAINER_IP_PREFIX dev $VETH1/proc/sys/net/bridge/bridge-nf-call-iptablesが1で、かつ、iptablesのFORWARDチェーンのポリシーがDROPなら、次の設定も必要
iptables -A FORWARD -s $CONTAINER_IP -j ACCEPT iptables -A FORWARD -d $CONTAINER_IP -j ACCEPTあるいは、
iptables -A FORWARD -m physdev --physdev-in $VETH0 -j ACCEPT iptables -A FORWARD -m physdev --physdev-out $VETH0 -j ACCEPT