Linuxネットワークネームスペースを使用したインターネット接続

Linuxネットワークネームスペースを使用したインターネット接続

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インターフェイスで実行してデータパケットが正常に出ていることを確認してください。

関連情報