web-dev-qa-db-ja.com

Mac OS Xの仮想ネットワークインターフェイス

Windowsで仮想ネットワークインターフェイスを作成できることを知っています( here を参照)。Linuxでもip-aliasesを使用すると非常に簡単ですが、Mac OS Xでも同様のものがありますか。ループバックアダプタ、仮想インターフェイスを探していましたが、良い解決策が見つかりませんでした。

既存のインターフェイスに基づいて、ネットワーキングパネルで新しいインターフェイスを作成できますが、実際の完全に機能するインターフェイスとしては機能しません(元のインターフェイスが非アクティブの場合、派生したインターフェイスも非アクティブになります)。

このシナリオは、完全に切断された状況で作業する場合に必要です。それでも、VMWareインストールでサーバーを実行する場合は、ネットワーク機能を使用するのが理にかなっています。それらの仮想マシンの1つでDNSサーバーを実行していても、それらの仮想マシンにはIPアドレスでアクセスできますが、DNS名ではアクセスできません。仮想DNSサーバーを使用するようにインターフェイスを構成することで、いくつかのDNSシナリオをテストできると思いました。残念ながら、いずれもアクティブでないDNS名を解決するインターフェースはありません...

44
Hans Doggen

ループバックアダプタは常に稼働しています。

ifconfig lo0 alias 172.16.123.1は、ループバックアダプターにエイリアスIP 172.16.123.1を追加します

ifconfig lo0 -alias 172.16.123.1削除します

55
Dave Whitla

特に返信する:

既存のインターフェイスに基づいて、ネットワーキングパネルで新しいインターフェイスを作成できますが、実際の完全に機能するインターフェイスとしては機能しません(元のインターフェイスが非アクティブの場合、派生したインターフェイスも非アクティブになります)。

これは、psv141で提案されているTun/Tapデバイスを使用して達成でき、/Library/Preferences/SystemConfiguration/preferences.plistファイルを操作して、tunまたはtapインターフェースに基づいてNetworkServiceを追加します。 Mac OS Xでは、仮想ネットワークインターフェイスに基づくNetworkServiceの作成は許可されませんが、preferences.plistファイルを直接操作してNetworkServiceを手動で追加できます。基本的には、Xcodeでpreferences.plistファイルを開き(またはXMLを直接編集しますが、Xcodeの方が簡単です)、既存のイーサネットインターフェイスから構成をコピーします。新しいNetworkServiceを作成する場所は「NetworkServices」の下にあり、お使いのMacにイーサネットデバイスがある場合、NetworkServiceプロファイルもこのプロパティエントリの下にあります。イーサネットエントリはほとんどそのままコピーできます。実際に変更するフィールドは次のとおりです。

  • UUID
  • UserDefinedName
  • IPv4の構成と、tunまたはtapデバイス(つまり、tun0またはtap0)へのインターフェースの設定。
  • 必要に応じてDNSサーバー。

次に、このNetworkServiceの対象となる特定の場所を操作します(Mac OS Xは「場所」に依存するすべてのネットワークインターフェイスを構成できることに注意してください)。デフォルトのロケーションUUIDは、キー「CurrentSet」としてPropertyListのルートで取得できます。目的の場所(またはセット)を特定したら、Setプロパティを展開し、新しいNetworkServiceのUUIDを使用してGlobal/IPv4/ServiceOrderの下にエントリを追加します。また、Setプロパティの下で、Serviceプロパティを展開し、キー__LINK__とvalueをUUIDとして持つ1つのStringエントリを持つ辞書としてここにUUIDを追加する必要があります(他のインターフェイスを例として使用します)。

preferences.plistファイルを変更したら、再起動するだけで、SystemPreferences-> NetworkでNetworkServiceが利用可能になります。イーサネットデバイスを模倣しているため、Mac OS Xネットワーキング層では「ケーブルが接続されていない」ことに注意し、GUIを介してインターフェイスをアクティブにできないことに注意してください。ただし、基になるデバイスはtun/tapデバイスであり、IPアドレスを持っているため、インターフェイスがアクティブになり、適切なルーティングがBSDレベルで追加されます。

参照として、これは特別なルーティングマジックを行うために使用されます。

ここまで来て問題が発生した場合は、/ dev /の下にあるデバイスの1つを開いてtun/tapデバイスを作成する必要があります。任意のプログラムを使用してこれを行うことができますが、私は昔ながらのCのファンです:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
   int fd = open("/dev/tun0", O_RDONLY);
   if (fd < 0)
   {
      printf("Failed to open tun/tap device. Are you root? Are the drivers installed?\n");
      return -1;
   }
   while (1)
   {
      sleep(100000);
   }
   return 0;
}
22
bmasterswizzle

に関してで @bmasterswizzle 's ブリリアントアンサー -より具体的に-@DanRamos '新しいインターフェイスのリンク状態を「アップ」に強制する方法についての質問。私はこのスクリプトを使用しますが、その起源は思い出せませんが、途方もなく動作します( @bmasterswizzlesの「Mona Lisa」と連携して) )...

#!/bin/zsh

[[ "$UID" -ne "0" ]] && echo "You must be root. Goodbye..." && exit 1
echo "starting"
exec 4<>/dev/tap0
ifconfig tap0 10.10.10.1 10.10.10.255
ifconfig tap0 up
ping -c1 10.10.10.1
echo "ending"
export PS1="tap interface>"
dd of=/dev/null <&4 & # continuously reads from buffer and dumps to null

最後にプロンプ​​トの変更を理解しているか、または.

dd of=/dev/null <&4 & # continuously reads from buffer and dumps to null

しかし、何でも。できます。リンクライト????:green✅。 それを愛している????.

enter image description here

8
Alex Gray

TUN/TAPデバイスを使用することは可能です。 http://tuntaposx.sourceforge.net/

5
psv141

他のいくつかはこれをほのめかしているように見えましたが、以下ではifconfigを使用してvlanを作成し、OS X 10.9.5で仮想インターフェイスでDNSをテストします( minidns を使用)。

$ sw_vers -productVersion
10.9.5
$ Sudo ifconfig vlan169 create && echo vlan169 created
vlan169 created
$ Sudo ifconfig vlan169 inet 169.254.169.254 netmask 255.255.255.255 && echo vlan169 configured
vlan169 configured
$ Sudo ./minidns.py 169.254.169.254 &
[1] 35125
$ miniDNS :: * 60 IN A 169.254.169.254


$ Dig @169.254.169.254 +short test.Host
Request: test.Host. -> 169.254.169.254
Request: test.Host. -> 169.254.169.254
169.254.169.254
$ Sudo kill 35125
$ 
[1]+  Exit 143                Sudo ./minidns.py 169.254.169.254
$ Sudo ifconfig vlan169 destroy && echo vlan169 destroyed
vlan169 destroyed
5
web-online

どういう意味

「しかし、実際の完全に機能するインターフェースとしては機能しません(元のインターフェースが非アクティブである場合、派生したインターフェースも非アクティブです)」

新しいインターフェイスを作成し、既存のインターフェイスに基づいて、既存のインターフェイスを無効にしても、新しいインターフェイスは機能します。ただし、2番目のインターフェイスを作成しても実際のインターフェイスは作成されません(ifconfigで確認した場合)、既存のIPに2番目のIPが割り当てられます(ただし、このIPはDHCPで、最初のIPはたとえばハードコードされています)。

それで、私はあなたが正しいと理解しましたか、あなたは本当のインターフェースに縛られずにインターフェースを作成したいのですか?このインターフェイスはどのように使用されますか?例えば。すべてのWLANを切断し、すべてのネットワークケーブルを引っ張ると、トラフィックを送信する場合、このインターフェイスはどこにトラフィックを送信しますか?たぶんあなたの質問は少し不明瞭で、言い換えれば大いに役立つかもしれないので、この「仮想インターフェース」を手に入れたら実際に何をしようとしているのかは明らかです。

質問で「エイリアスIP」と言ったように、これはエイリアスインターフェイスを意味します。ただし、エイリアスインターフェイスは常に実際のインターフェイスにバインドされます。 Linuxでの違いは、そのようなインターフェースは本当に[〜#〜] is [〜#〜]インターフェース(例えば、eth0のエイリアスインターフェースはeth1かもしれません)に対して、Macではnorealインターフェイスが作成され、代わりに仮想インターフェイスが作成され、独立して構成および使用できますが、物理的には同じインターフェイスであるため、新しい名前付きインターフェイスは生成されません(実際にはen0である2つのインターフェイスのみがありますが、両方を有効/無効にし、個別に構成できます)。

1
Mecki

このチュートリアルをご覧ください。FreeBSD向けですが、OS Xにも適用されます。 http://people.freebsd.org/~arved/vlan/vlan_en.html

1
Ariel Monaco

この目標を達成するために、BSDベースのルーター/ファイアウォールであるPFSenseを実行することに頼りました。

どうして? OS X Serverは静的IPなしで非常に不安定になるため…

したがって、DAYSでそれと格闘してNATおよびDHCPとファイアウォールを作成し、…

私はこれが平行してしようとしている...

それがどうなるかを教えてくれます...

0
Alex Gray

開発環境にいて、localhost /ホストマシンで既に実行されているサービスにアクセスする場合。 mac用のdockerには別のオプションがあります。dockerコンテナーのlocalhostの代わりにdocker.for.mac.localhostを使用します。 Docker Community Edition 17.12.0-ce-mac46 2018-01-09のdocker.for.mac.localhostの代わりにdocker.for.mac.Host.internalを使用する必要があります。これにより、Macで実行されているサービスにdockerコンテナー内から接続できます。以下のリンクを参照してください

docker.for.mac.localhostの動作を理解する

リリースノート

0
arvin_v_s

ネットワーク設定に移動します。

ネットワークアダプタのリストの下部で、+アイコンをクリックします

Arpする既存のインターフェース(たとえば、Ethernet 1)を選択し、新しいポートに使用するサービス名(たとえば、Ethernet 1.1)を指定して、[作成]を押します。

これで、GUIに新しい仮想インターフェイスが追加され、IPアドレスなどを通常の方法で管理できます。

ifconfig -aは、インターフェイス上に複数のIPがあることを確認しますが、再起動してもこれらは引き続き存在します。

そのMac。戦わないで、簡単にやってください。

0
Henry 3 Dogg