さまざまなネットワークアダプタを使用してさまざまなブラウザのウィンドウを開くにはどうすればよいですか?

2
Manuel Boluda Gonzalez 2020-01-10 00:16.

Wi-Fiネットワークをテストしようとしていますが、特定のネットワークアダプターを使用してChromeまたはFirefoxのさまざまなウィンドウを開く可能性が必要です(たとえば、2つのWi-Fiネットワークアダプターがあります–wifi1wifi2–そして開きたいGoogle Chromeウィンドウwifi1wifi2)。

チェックアウトしましたiptablesが、これは私が探しているものではありません。

どんなアイデアでも大歓迎です。

2 answers

1
Kamil Maciorowski 2020-01-10 22:27.

ネットワーク名前空間を使用した一般的なソリューション

ネットワーク名前空間で可能です。追加のネットワーク名前空間を作成し、そのネットワークデバイスを構成して、最終的にそこでブラウザーを実行できます。

現在、名前空間を使用していないと思います(ip netns何も出力しません)。

新しく追加されたネットワーク名前空間のプログラムに特定のネットワークデバイスを使用させるには、少なくとも2つのアプローチがあります。

  • デバイスをdefalutネットワーク名前空間(デフォルトで属する)から追加された名前空間に「移動」して、直接利用できるようにすることができます。以下の例1を参照してください。
  • デバイスをデフォルトのネットワーク名前空間に残したい、または必要な場合(たとえば、使用中、または構成済みで、再度構成する必要がない場合)、vethペア、つまり2つの仮想インターフェイスを作成できます。 1つはデフォルトのネットワーク名前空間内にあり、もう1つは追加された名前空間内にあります。これは、ルーターとデバイス間のケーブルのように機能します。追加された名前空間にIPアドレスとルーティングを適切に構成し、デフォルトの名前空間にNATを設定する必要があります。以下の例2を参照してください。

考えられる問題

  • ネットワーク名前空間に属するネットワークデバイスは、名前空間の外部で実行されているプログラムでは使用できません。つまり、デフォルトの名前空間にあるネットワークマネージャー(存在する場合)は、追加された名前空間にあるデバイスを(また)そこで実行しない限り、おそらく役に立ちません。テストでは、追加された名前空間ipdhclientrouteなどを使用して、すべてを(半)手動で構成できます。
  • 追加されたネットワーク名前空間ではDNSが使用できない場合があります。たとえば、私のKubuntuでは、/etc/resolv.confファイルは次のようになっています。

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    # 127.0.0.53 is the systemd-resolved stub resolver.
    # run "systemd-resolve --status" to see details about the actual nameservers.
    
    nameserver 127.0.0.53
    

    追加された名前空間には独自のloデバイスがあり、それを起動できます。ただし、これはlo、スタブリゾルバーがリッスンしているデフォルトのネットワーク名前空間とは異なるインターフェイスです。テストの最も簡単な解決策は、とにかくファイルを編集し、nameserverマシンの外部のDNSサーバーを指すエントリを追加することです。例nameserver 8.8.8.8またはnameserver IP.of.your.router。ファイルの最後にエントリを追加します。追加された名前空間のプロセスは使用できません127.0.0.53が、他のDNSサーバーを使用します。

    resolv.conf追加された名前空間から到達可能なサーバーを既に指定している場合は、心配する必要はありません。

  • ブラウザを2回実行すると、おそらくすでに実行中のインスタンスが検出され、タスクがそのインスタンスに委任されて終了します。別のネットワーク名前空間で2番目のインスタンスを実行した場合でも、おそらくタスクは古いインスタンスに委任されます。

    私はVivaldiを使用していますが、解決策はデフォルト以外を指定することです--user-data-dir。そのため、ユーザーデータディレクトリはブラウザによって異なります。例えば:

    vivaldi --user-data-dir=/tmp/
    

    同じオプションがChromeでも機能すると思います。Firefoxについてはよくわかりません。最も簡単な解決策は、Chromeを1回、Firefoxを1回実行することです。


例1:デバイスを直接使用する

ほとんどのコマンドにはが必要sudoです。便宜上sudo su -、高架シェルで実行および作業できます。

  1. 有用な変数を定義します。dev必要に応じて(デバイス名)を調整します。

    netns=ns1
    dev=wlp2s0
    
  2. 名前空間が存在しないことを確認してください。

    ip netns del "$netns" 2>/dev/null
    
  3. 新しいネットワーク名前空間を作成します。

    ip netns add "$netns"
    
  4. デバイスをデフォルトの名前空間に移動します(厳密には必須ではありません)。

    ip link set dev "$dev" down
    
  5. 新しい名前空間に追加します(デフォルトの名前空間から消えます)。

    • これは有線インターフェースに適しています。

      ip link set dev "$dev" netns "$netns"
      
    • ワイヤレスインターフェイスの場合、上記の結果が得られる可能性がありInvalid argumentます。次に、このアプローチ:

      PHYを移動する必要があります

      これはおそらくあなたに正しいphy(期待phy0または同様のもの)を示すでしょう

      phy="$(basename "$(cd "/sys/class/net/$dev/phy80211" && pwd -P)")"
      echo "$phy"
      

      実際のコマンド:

      iw phy "$phy" set netns name "$netns"
      
  6. すべてのデバイスが本来あるべき場所にあることを確認します。

    ip link show
    ip netns exec "$netns" ip link show
    # examine output
    
  7. インターフェイスを起動します。名前空間には、独自のループバックデバイスが含まれていますlo。一般的にプログラムはそれに依存したいと思うかもしれないので、私もそれを持ち出します。

    ip netns exec "$netns" ip link set dev lo up ip netns exec "$netns" ip link set dev "$dev" up
    
  8. これらの最後のコマンドが、正しい名前空間でip netns exec "$netns"実際のコマンド(ip link …)を実行するためにどのように使用されたかに注意してください。私たちは毎回これを行うことができます。便宜上、名前空間でまったく新しい昇格されたシェルを実行してみましょう。

    # taking relevant variables to the new shell
    export netns dev phy
    
    # assuming the current shell is elevated
    # this will replace it with a new elevated shell in the namespace
    exec ip netns exec "$netns" su
    

    この新しいシェルから呼び出すものはすべて、ネットワーク名前空間で実行されます。たとえば、soleip link showは、デフォルトの名前空間に属するデバイスではなく、目的のデバイスを表示する必要があります。

  9. 名前空間でインターフェースを構成します。使用iw(ワイヤレスの場合)、 、、および/または任意の通常どおりのように必要とされています。ワイヤレスインターフェイスの例:iproutedhclient

    wpa_passphrase mySSID myPass | wpa_supplicant -i "$dev" -c /dev/stdin -B
    dhclient "$dev"
    
  10. DNSに注意してください(上記の「考えられる問題」を参照)。

  11. ネットワーク名前空間で別のブラウザを実行します(上記の「考えられる問題」を参照)。おそらく通常のユーザーとして実行する必要があります。例:

    # from the elevated shell in the network namespace
    sudo -u regularuser vivaldi --user-data-dir=/tmp/
    

例1の続き:変更を元に戻す

これまでに行われた変更は一時的なものです。問題が発生した場合は、再起動してください。

再起動せずに、でネットワーク名前空間を削除できますip netns del "$netns"。デバイスは、削除された名前空間で使用されなくなると、デフォルトの名前空間に表示されます。それを使用しているプロセス(ブラウザ、シェルwpa_supplicantdhclient多分など)を特定して強制終了する必要があります。これを参照してください:名前空間の削除後にインターフェースが失われました。便利なコマンド:

find /proc/ -name "$dev"

追加の名前空間を削除する前に、デバイスをデフォルトの名前空間に明示的に「戻す」ことをお勧めします。dhclientとにかくいくつかのプロセス(のような)を強制終了したいと思うかもしれません。そうしないと、それらは無駄に実行され続けます。それらを見つけて、デバイスを「返却」する前でも終了します。ただし、いくつか見逃した場合は、名前空間を削除する前にデバイスを「返す」ことで、少なくともデバイスがデフォルトの名前空間に表示されます。デバイスが見つからなくなることはありません。

デフォルトのネットワーク名前空間には名前がないため、それに属するプロセスのPIDを使用していることに注意してください。initプロセスはデフォルトのネットワーク名前空間に属していると思います1

  • 有線の場合:

    # from the elevated shell in our additional network namespace
    ip link set dev "$dev" netns 1
    
  • ワイヤレスの場合:

    # from the elevated shell in our additional network namespace
    iw phy "$phy" set netns 1
    

次に、名前空間を削除します。

ip netns del "$netns"

デバイスがデフォルトのネットワーク名前空間に表示されると、ネットワークマネージャー(存在する場合)が起動する可能性があります。または、デバイスを手動で構成することもできます。


例2:vethペア

この例は、DiegoPinoGarcíaiptablesによるネットワーク名前空間に基づいています-パケットを特定のインターフェイスにルーティングするターゲット。私は後者の基本的な理解しか持っていないことを認めます、そして私はそれを調整しなければならなかったので、解決策は最適ではないかもしれません。

ほとんどのコマンドにはが必要sudoです。便宜上sudo su -、高架シェルで実行および作業できます。

  1. 有用な変数を定義します。必要に応じて調整してください。

    # arbitrary mark
    mark=11
    
    netns="ns$mark" dev=wlp2s0 gate=192.168.80.1 # gate is the gateway dev connects to, like AP, home router or so # veth devices devdef="v-eth-$netns"
    devns="v-peer-$netns" # and their addresses ipdef="10.200.$mark.1"
    ipns="10.200.$mark.2" net="10.200.$mark.0"
    
  2. 名前空間が存在しないことを確認してください。

    ip netns del "$netns" 2>/dev/null
    
  3. 新しいネットワーク名前空間を作成します。

    ip netns add "$netns"
    
  4. デフォルトのネットワーク名前空間にvethペアを作成します。

    ip link add "$devdef" type veth peer name "$devns"
    
  5. 一方の端をもう一方のネットワーク名前空間に移動します。

    ip link set "$devns" netns "$netns"
    
  6. インターフェイスを構成します。

    ip addr add "$ipdef"/24 dev "$devdef"
    ip netns exec "$netns" ip addr add "$ipns"/24 dev "$devns"
    
  7. インターフェイスを起動します。名前空間には、独自のループバックデバイスloが含まれています。一般的にプログラムはそれに依存したいと思うかもしれないので、私もそれを持ち出します。

    ip netns exec "$netns" ip link set lo up
    ip netns exec "$netns" ip link set "$devns" up
    ip link set "$devdef" up
    
  8. 名前空間を離れるすべての外部トラフィックがvethリンクを通過するようにします。

    ip netns exec "$netns" ip route add default via "$ipdef" dev "$devns"
    
  9. IPv4転送を有効にし、マスカレードを有効にします。

    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    リンクされた記事はさまざまなルールをフラッシュします。いくつかのルール(転送など)がすでに定義されている場合は、現在行っていることをよく考えてください

    # think twice if you should run these
    iptables -F FORWARD
    iptables -P FORWARD DROP
    iptables -t nat -F
    iptables -t raw -F
    ip route flush table "$mark"
    

    これらが必要になります:

    iptables -t raw -A PREROUTING -i "$devdef" -j MARK --set-mark "$mark" ip rule add fwmark "$mark" priority 1000 table "$mark" ip route add default via "$gate" dev "$dev" table "$mark"
    ip route flush cache
    iptables -t nat -A POSTROUTING -s "$net"/255.255.255.0 -o "$dev" -j MASQUERADE
    iptables -A FORWARD -i "$dev" -o "$devdef" -j ACCEPT
    iptables -A FORWARD -o "$dev" -i "$devdef" -j ACCEPT
    
  10. ネットワーク名前空間内から外部ホストにpingを実行できるかどうかを確認します。

    ip netns exec "$netns" ping 8.8.8.8
    
  11. DNSに注意してください(上記の「考えられる問題」を参照)。

  12. ネットワーク名前空間で別のブラウザを実行します(上記の「考えられる問題」を参照)。おそらく通常のユーザーとして実行する必要があります。例:

    ip netns exec "$netns" sudo -u regularuser vivaldi --user-data-dir=/tmp/
    

例2の続き:変更を元に戻す

これまでに行われた変更は一時的なものです。問題が発生した場合は、再起動してください。

現在の主題に関係のないルール(転送など)がある場合は、現在行っていることをよく考えてください

# think twice if you should run these
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -t nat -F
iptables -t raw -F
ip route flush table "$mark"
echo 0 > /proc/sys/net/ipv4/ip_forward

あなたは確かにこれらを実行することができます:

ip rule del fwmark "$mark" priority 1000 table "$mark" ip netns del "$netns"

しかし、問題は2つのインターフェースについてです!今何?

最も幸運な場合、通常起動するブラウザは、テストするアドレスに対して問題のインターフェイスの1つを使用します。もしそうなら、あなたは他のインターフェース、いずれかの方法(例1)または別の方法(例2)についてのみ私の答えに従う必要があります。

それ以外の場合は、2つのインターフェイスのそれぞれについて私の答えに従う必要があります。いずれかの方法(例1)または別の方法(例2)、あるいは両方(一方のインターフェースの例1、もう一方のインターフェースの例2)を選択できます。それぞれのインターフェースと選択した方法に合わせて変数を調整した、2つの別々の高架シェルを使用します。これらはヒントです:

  • さまざまなdev変数を設定します(非常に明白です)。
  • さまざまなnetns変数を設定します。
  • 各インターフェイスのvethペア(例2)の場合、
    • 異なるmark; 調整することを忘れないでくださいgate(異なる場合と異なる場合があります)。他の変数はに依存しmarkます。これにより、それらは自動的に異なります。
    • 2番目のインターフェイスにソリューションを適用するときに、設定を無意識にフラッシュしないでください。
0
davidgo 2020-01-10 09:16.

WebブラウザはOSスタックとは異なるレイヤーで動作し、ルーティングを処理するためにOSに接続するだけなので、これを行う簡単な方法はありません。

代替接続を利用して、それぞれが異なるルーティングテーブルを持つ独自のVMに1つ(または両方)のブラウザを設定できる場合があります。

ゲートウェイ/リモートシステムを使用している場合は、SSHを使用して、常に1つの接続でのみ利用できます。1つのブラウザインスタンスをsoxプロキシとして構成(または通常のプロキシを設定)できます。

ボックスにポリシーベースのルーティングを設定し(簡単ではありません)、iptablesで識別子を使用してパケットにタグを付けることができる場合があります(これは解決するのが最も難しいビットです-パケットにタグを付ける方法は所有者にあると私が考える唯一の方法です各ブラウザを異なるユーザーが起動し、タグに基づいてパケットをルーティングします。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

グアンタナモ湾で唯一のイスラム教徒の軍曹としてラマダンを祝うのはどのようなものですか

グアンタナモ湾で唯一のイスラム教徒の軍曹としてラマダンを祝うのはどのようなものですか

この画像は法的な理由で削除されました。グアンタナモ湾の116人のイスラム教徒の囚人が断食をし、金曜日の夜にラマダンの30日間を終えたとき、彼らは1か月の夜間の祈りと強制給餌を日没まで延期しました。

木曜日のお得な情報:スタンディングデスク、ロボット掃除機、ライトニングケーブルなど

木曜日のお得な情報:スタンディングデスク、ロボット掃除機、ライトニングケーブルなど

2つのスタンディングデスク、新しいロボット掃除機、6フィートの稲妻ケーブル、その他多くの今日のお得な情報を大幅に節約できます。Kinjaディールをブックマークして、TwitterやFacebookでフォローしたり、Kinjaディールコミュニティグループに参加したり、ニュースレターに登録して、ディールを見逃さないようにしてください。

次の大きな日食は1年先ですが、人々はすでにパーティーを計画しています

次の大きな日食は1年先ですが、人々はすでにパーティーを計画しています

写真提供者:APこれだけの計画で、アメリカ人は結婚式をまとめていると思うでしょうが、実際にはもっと大きなもののためです。

70年以上にわたる世界の核兵器の興亡

70年以上にわたる世界の核兵器の興亡

1987年以来、原子力科学者会報は、各国の核兵器を核ノートに数え、これらの数をしばしば取り巻く秘密のベールを剥がしてきました。Bulletinは廃止され、NuclearNotebookがすっきりとしたインタラクティブなグラフィックになりました。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で 1 日を過ごし、ジェニファー・ロペス、ジュリアン・ハフなども。ハリウッドからニューヨークまで、そしてその間のあらゆる場所で、お気に入りのスターの活躍をご覧ください!

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

捜査官は、グループと容疑者が攻撃の前にお互いを知っていたかどうかを調べています

滑走路着陸

滑走路着陸

晩夏と秋はノスタルジックな季節。街灯は雨で濡れた通りに光を放ち、足元の葉 - 夕暮れの影の中で落ち着いた赤オレンジ - は過ぎ去った日々を思い出させます。

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

2021 年には、サービスを提供する顧客と顧客に伝えるストーリーについて知っていることをすべて再考することをお勧めします。あとずさりする。

マンモスロスは私の心を愛に開いた

マンモスロスは私の心を愛に開いた

フェリックス ザ キャットの 9 歳の誕生日の日に、大人になってからの最大の損失の 1 つである 2013 年のソフィーを思い出します。私はこのエッセイを書き、2013 年にこのプラットフォームで簡単に共有しました。

あなたがインターネットがあなたに望んでいる人になれないとき

あなたがインターネットがあなたに望んでいる人になれないとき

私は「列車事故」という言葉が嫌いです。人々は自分自身の道徳的羅針盤に安らぎを覚え、そうすることで自分自身が判断を下していることに気づきます。

Language