55

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

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

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

4

12 に答える 12

63

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

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

ifconfig lo0-alias172.16.123.1はそれを削除します

于 2009-03-09T01:03:29.047 に答える
27

特に返信先:

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

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

  • UUID
  • ユーザー定義名
  • IPv4 設定を行い、インターフェイスを tun または tap デバイス (つまり、tun0 または tap0) に設定します。
  • 必要に応じて DNS サーバー。

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

ファイルを変更したらpreferences.plist、再起動するだけで、NetworkService が SystemPreferences->Network で利用できるようになります。イーサネット デバイスを模倣しているため、ネットワークの 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;
}
于 2011-06-16T16:27:41.803 に答える
12

@bmasterswizzle素晴らしい回答に関して、より具体的@DanRamosには、新しいインターフェースのリンク状態を強制的に「アップ」にする方法についての質問..私はこのスクリプトを使用します。@bmasterswizzles 答えの「モナリザ」 )...

#!/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

しかし、何でも。できます。リンクライト:✅. 大好きです。

ここに画像の説明を入力

于 2015-07-07T04:15:02.107 に答える
9

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

$ 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
于 2015-04-24T22:49:42.370 に答える
6

TUN/TAP デバイスを使用することができます。 http://tuntaposx.sourceforge.net/

于 2009-11-19T15:29:45.543 に答える
1

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

于 2010-09-24T01:32:24.700 に答える
1

どういう意味

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

?

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

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

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

于 2008-09-17T20:58:51.860 に答える
0

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

ネットワーク アダプタのリストの下部にある+アイコンをクリックします。

arp する既存のインターフェイス (イーサネット 1 など) を選択し、新しいポート (イーサネット 1.1 など) に必要なサービス名を指定してから、作成を押します。

これで、GUI に新しい仮想インターフェイスが作成され、通常の方法で IP アドレスなどを管理できるようになりました。

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

マックです。戦わないで、簡単な方法でやってください。

于 2011-01-05T14:25:35.240 に答える
0

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

なぜ?OS X Server は静的 IP なしではとてもおかしくなるからです…</p>

そのため、DAYS が NAT と DHCP とファイアウォールとを作成するために苦労した後、…</p>

私はこれが類似していることを試みています…</p>

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

于 2010-06-08T17:49:31.687 に答える
-1

ifconfig interfacename create は仮想インターフェイスを作成します。

于 2008-09-17T21:01:43.880 に答える
-1

ここに良いガイドがあります: https://web.archive.org/web/20160301104014/http://gerrydevstory.com/2012/08/20/how-to-create-virtual-network-interface-on-mac-os -バツ/

基本的には、システム設定の [ネットワーク] ペインでネットワーク アダプタを選択し、歯車をクリックして [サービスを複製] します。サービスが複製された後、プライベート アドレス範囲の 1 つで IP を手動で割り当てます。次に、確認するためにpingを実行します;)

于 2013-10-22T14:46:49.703 に答える