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
これで、特定のドメインからインターネットにアクセスできるようになります。