私はこのチュートリアルを使用しています:Unixプログラムを特定のネットワークインタフェースにバインドする
$ NSと$ INが正しく設定されていると仮定
私の質問
2つのネットワークインタフェースがあり、そのうちの1つにはデータ制限があり、それにアクセスするために特定のコマンド以外には何も必要ありません。ただし、「ip netns exec $NS {command}」と一緒に使用しようとすると、このコマンドはインターネットにアクセスできません。 IP アドレスに接続できますが、ホストを確認することはできません。
私が踏んだステップ
sudo mkdir -p /etc/netns/$NS
sudo sh -c "echo \"nameserver 8.8.8.8\" >> /etc/netns/$NS/resolv.conf"
curl <ip> // OK
curl <site> // OK
sudo ip netns add $NS
sudo ip link set $IN netns $NS
sudo ip netns exec $NS ip link set lo up
sudo ip netns exec $NS ip link set $IN up
sudo ip netns exec $NS dhclient $IN
sudo ip netns exec $NS curl <ip> // OK
sudo ip netns exec $NS curl <site> // Could not resolve host: <site>
ノート
- インターフェイスの種類はイーサネットです。
- netns ipルーティング(ip netns exec $ NS ipルーティング)が正しいようです。デフォルトパスはIP $ INを指します。
- 特定のステップのコマンド(最後のコマンドを除く)はエラーなしで実行されます。