Windowsで仮想ネットワークインターフェイスを作成できることを知っています( here を参照)。Linuxでもip-aliasesを使用すると非常に簡単ですが、Mac OS Xでも同様のものがありますか。ループバックアダプタ、仮想インターフェイスを探していましたが、良い解決策が見つかりませんでした。
既存のインターフェイスに基づいて、ネットワーキングパネルで新しいインターフェイスを作成できますが、実際の完全に機能するインターフェイスとしては機能しません(元のインターフェイスが非アクティブの場合、派生したインターフェイスも非アクティブになります)。
このシナリオは、完全に切断された状況で作業する場合に必要です。それでも、VMWareインストールでサーバーを実行する場合は、ネットワーク機能を使用するのが理にかなっています。それらの仮想マシンの1つでDNSサーバーを実行していても、それらの仮想マシンにはIPアドレスでアクセスできますが、DNS名ではアクセスできません。仮想DNSサーバーを使用するようにインターフェイスを構成することで、いくつかのDNSシナリオをテストできると思いました。残念ながら、いずれもアクティブでないDNS名を解決するインターフェースはありません...
ループバックアダプタは常に稼働しています。
ifconfig lo0 alias 172.16.123.1は、ループバックアダプターにエイリアスIP 172.16.123.1を追加します
ifconfig lo0 -alias 172.16.123.1削除します
特に返信する:
既存のインターフェイスに基づいて、ネットワーキングパネルで新しいインターフェイスを作成できますが、実際の完全に機能するインターフェイスとしては機能しません(元のインターフェイスが非アクティブの場合、派生したインターフェイスも非アクティブになります)。
これは、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プロファイルもこのプロパティエントリの下にあります。イーサネットエントリはほとんどそのままコピーできます。実際に変更するフィールドは次のとおりです。
次に、この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;
}
に関してで @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✅。 それを愛している????.
TUN/TAPデバイスを使用することは可能です。 http://tuntaposx.sourceforge.net/
他のいくつかはこれをほのめかしているように見えましたが、以下では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
どういう意味
「しかし、実際の完全に機能するインターフェースとしては機能しません(元のインターフェースが非アクティブである場合、派生したインターフェースも非アクティブです)」
?
新しいインターフェイスを作成し、既存のインターフェイスに基づいて、既存のインターフェイスを無効にしても、新しいインターフェイスは機能します。ただし、2番目のインターフェイスを作成しても実際のインターフェイスは作成されません(ifconfigで確認した場合)、既存のIPに2番目のIPが割り当てられます(ただし、このIPはDHCPで、最初のIPはたとえばハードコードされています)。
それで、私はあなたが正しいと理解しましたか、あなたは本当のインターフェースに縛られずにインターフェースを作成したいのですか?このインターフェイスはどのように使用されますか?例えば。すべてのWLANを切断し、すべてのネットワークケーブルを引っ張ると、トラフィックを送信する場合、このインターフェイスはどこにトラフィックを送信しますか?たぶんあなたの質問は少し不明瞭で、言い換えれば大いに役立つかもしれないので、この「仮想インターフェース」を手に入れたら実際に何をしようとしているのかは明らかです。
質問で「エイリアスIP」と言ったように、これはエイリアスインターフェイスを意味します。ただし、エイリアスインターフェイスは常に実際のインターフェイスにバインドされます。 Linuxでの違いは、そのようなインターフェースは本当に[〜#〜] is [〜#〜]インターフェース(例えば、eth0のエイリアスインターフェースはeth1かもしれません)に対して、Macではnorealインターフェイスが作成され、代わりに仮想インターフェイスが作成され、独立して構成および使用できますが、物理的には同じインターフェイスであるため、新しい名前付きインターフェイスは生成されません(実際にはen0である2つのインターフェイスのみがありますが、両方を有効/無効にし、個別に構成できます)。
このチュートリアルをご覧ください。FreeBSD向けですが、OS Xにも適用されます。 http://people.freebsd.org/~arved/vlan/vlan_en.html
この目標を達成するために、BSDベースのルーター/ファイアウォールであるPFSenseを実行することに頼りました。
どうして? OS X Serverは静的IPなしで非常に不安定になるため…
したがって、DAYSでそれと格闘してNATおよびDHCPとファイアウォールを作成し、…
私はこれが平行してしようとしている...
それがどうなるかを教えてくれます...
開発環境にいて、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コンテナー内から接続できます。以下のリンクを参照してください
ネットワーク設定に移動します。
ネットワークアダプタのリストの下部で、+アイコンをクリックします
Arpする既存のインターフェース(たとえば、Ethernet 1)を選択し、新しいポートに使用するサービス名(たとえば、Ethernet 1.1)を指定して、[作成]を押します。
これで、GUIに新しい仮想インターフェイスが追加され、IPアドレスなどを通常の方法で管理できます。
ifconfig -aは、インターフェイス上に複数のIPがあることを確認しますが、再起動してもこれらは引き続き存在します。
そのMac。戦わないで、簡単にやってください。