
Ubuntu 17.1ディストリビューションでLinuxネームスペースを使用しようとしています。究極の目標は、アプリケーションがイントラネット有線接続の代わりに3Gモデムを介して特定のネットワークインターフェイスを使用できるようにすることです。マイコンピュータには3つのネットワークインターフェイスがあります。
enp0s25:
インターネット接続なしでInet 10.18.0.101イントラネットルーターに有線接続
wlp3s0:
ワイヤレス、リモート管理に使用され、本番環境inet 10.11.1.116では利用できません
enx8cae4cff1c86:
有線エミュレートされた4G USBモバイルモデムがついにinet 10.11.1.142にリリースされます。
wlp3s0 と enx8cae4cff1c86 は同じルータに接続されています。次のコードを使用してという名前空間を作成しました。移動する
ip netns add mobilens
ip link set dev enx8cae4cff1c86 netns mobilens
ip netns exec mobilens ifconfig enx8cae4cff1c86 10.1.1.10/24 up
ip netns exec mobilens ifconfig lo 127.0.0.1/8 up
ip netns exec mobilens route add default gw 10.1.1.1
ip netns exec mobilens dhcpcd enx8cae4cff1c86
また、次のエントリを使用して/etc/netns/mobilens/resolv.confファイルを作成しました。
nameserver 10.11.1.1
nameserver 8.8.8.8
search google.com
名前空間でifconfigを実行する
ip netns exec mobilens ifconfig
Return
inet 10.1.1.10 netmask 255.255.255.0
名前空間で使用された DNS サーバーに次のように問い合わせると
ip netns exec mobilens nmcli dev show | grep DNS
それは戻ってくる
IP4.DNS[1]: 10.11.1.1
この名前空間を使用してgoogle.comにpingしようとしましたが、解決されましたが失敗しました。
ip netns exec mobilens ping www.google.com
PING www.google.com (172.217.7.4) 56(84) バイトのデータ。
10.1.1.10(10.1.1.10)でターゲットホストに接続できません。 icmp_seq=1 10.1.1.10 (10.1.1.10) でターゲットホストに接続できません。
icmp_seq=3 ターゲットホストに接続できません。
この名前空間を介してインターネットにアクセスするにはどうすればよいですか?
編集1:名前空間でxtermを使用すると、テストが簡単になります。
私も使い始めました
dhclient -d enx8cae4cff1c86
名前空間のDHSCPサーバーの代わりに。
しかし、問題は残っています。私はこれがある程度ルーティングのためだと思います。以下は、ネームスペース外部インターフェイスのRouteコマンドの結果です。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default router.asus.com 0.0.0.0 UG 303 0 0 wlp3s0
10.11.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlp3s0
10.18.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s25
10.18.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s25
これは名前空間からのものです。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.1.1.1 0.0.0.0 UG 0 0 0 enx8cae4cff1c86
10.11.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enx8cae4cff1c86
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enx8cae4cff1c86
名前空間ルーティングに対する可能な修正に関する提案はありますか?
答え1
[解決済み]
回避策は、デフォルトゲートウェイを変更することです。名前空間設定ファイルに次の行を追加しました。
ip netns exec mobilens ip route change default via 10.11.1.1 dev enx8cae4cff1c86
このステップだけでwww.google.comをpingできます。
ただし、管理 Wi-Fi 接続を無効にすると、ping で名前解決に関連するエラーが発生します。私は \etc\netns\mobilens\resolv.conf に以下を含むファイルを生成することでこの問題を解決しました
。
nameserver 10.11.1.1
nameserver 8.8.8.8
search google.com
これで、特定のドメインからインターネットにアクセスできるようになります。
答え2
部分的な答え:
まず、ネットワークネームスペースでxtermを起動すると、より簡単にテストできます。私は私の色を好み、ルートの代わりに私のユーザーIDを使用します。
ip netns exec mobilens su -c "xterm -bg yellow &" my_userid
第二に、DHCPを実行しています。仕える人その名前空間では、クライアントの代わりに返品ネットワーク管理者を起動します。あなたが望むのはDHCPです顧客その名前空間または静的構成で。複数のネームスペースに直面したとき、ネットワーク管理者が何をしているのかわかりません(私はNMの経験が悪く、決して望むように動作させることはできませんでした)。
だから:誰でもNMがネームスペースのインターフェイスに対して何をしているかを確認してください(NMが邪魔になった場合は停止してください)。または正しいゲートウェイ、パス、およびネームサーバーを使用して静的に構成します。またはたとえば、DHCPクライアントを使用しdhclient -d enx8cae4cff1c86
て出力を観察し、すべてが正しく割り当てられていることを確認します。
疑わしい場合は、tcpdump
インターフェイスで実行してデータパケットが正常に出ていることを確認してください。