2008-09-17 207 views
37

我知道您可以在Windows中創建虛擬網絡接口(請參閱here),並且在Linux中使用ip-aliases也很容易,但Mac OS X中是否存在類似的東西?我一直在尋找環回適配器,虛擬接口,並找不到一個好的解決方案。Mac OS X中的虛擬網絡接口

您可以在網絡面板中基於現有接口創建新接口,但它不會充當真正的全功能接口(如果原始接口處於非活動狀態,則派生的接口也處於非活動狀態)。

在完全斷開連接的情況下工作時,需要此方案。即便如此,在VMWare安裝中運行服務器時,具有網絡功能也是有意義的。這些虛擬機可以通過它們的IP地址到達,但不能通過它們的DNS名稱到達,即使我在其中一個虛擬機中運行了DNS服務器。通過配置一個接口來使用虛擬DNS服務器,我想我可以測試一些DNS方案。不幸的是,沒有界面解析DNS名稱,如果沒有一個是不活動的...

+0

您的同一主題,或多或少http://compileyouidontevenknowyou.blogspot.com/2009/03/virtual-networking-with-virtualbox-on.html – 2009-03-27 01:56:22

+0

「我知道,你可以做一個Windows中的虛擬網絡接口(請參見此處),而在Linux中,使用ip-aliases也很容易「 - WUT?使用ip-aliases創建接口?事實上,你不知道這件事。 – poige 2016-10-20 14:52:11

回答

1

你是什麼意思由

"but it will not act as a real fully functional interface (if the original interface is inactive, then the derived one is also inactive"

做?

我可以創建一個新的接口,將其建立在一個已經存在的接口上,然後禁用現有接口並且新接口仍然可以工作。然而,製作第二個界面不會創建真實的界面(當您檢查ifconfig時),它只會爲已有的界面分配第二個IP(但是,這個界面可以是DHCP,而第一個界面是硬編碼的)。

所以我理解你是對的,你想創建一個接口,而不是綁定到任何真實的接口?這個接口如何被使用?例如。如果斷開所有無線局域網的連接並拔出所有網線,則此接口將流量發送至哪裏,如果您向其發送流量?也許你的問題有點不清楚,如果改用它,它可能會有很大的幫助,所以一旦你擁有它,你很清楚你實際上想要用這個「虛擬接口」來做什麼。

正如你在你的問題中提到「別名IP」,這將意味着一個別名界面。但別名界面總是綁定到真實的界面。不同的是,在Linux中,這樣的接口實際上是一個接口(例如,eth0的別名接口可以是eth1),而在Mac上,不是實際的接口被創建,而是創建了虛擬接口,可以配置和使用但它在物理上仍然是相同的接口,因此不會生成新的命名接口(您只有兩個接口,實際上都是en0,但都可以啓用/禁用並獨立配置)。

-1

使用ifconfig interfacename都創建將創建一個虛擬接口,

+0

你能提供一個例子嗎?如果我嘗試這樣做,它不起作用,並且據我所知從未工作過。 – Mecki 2008-09-17 21:21:17

+2

我可以證實,它不會工作 – 2008-09-17 21:25:16

+0

ifconfig vlan0創建如ifconfig手冊頁中所述創建 「create創建指定的網絡僞設備。如果接口沒有給出單元號,嘗試創建一個新的設備任意單位編號「。 – 2008-09-18 14:48:06

46

環回適配器是始終。

使用ifconfig lo0的別名172.16.123.1將別名IP 172.16.123.1添加到環回適配器

使用ifconfig lo0的-alias 172.16.123.1將其刪除

0

爲了實現這個目標,我使用了PFSense,一個基於BSD的路由器/防火牆。

爲什麼?因爲OS X Server獲取沒有靜態IP,從而FREAKY ...

所以用它摔跤日內作出NAT和DHCP和防火牆,並...

我想這是相似之處......之後

會讓你知道是怎麼回事......

0

轉到網絡偏好設置。

在網絡適配器列表的底部,點擊+圖標

選擇您想要的arp現有的接口(比如以太網1),並給予服務名稱要用於新端口(比如以太網1.1),然後按創建。

現在你在gui中有了新的虛擬接口,並且可以以正常的方式管理IP地址等等。

ifconfig -a將確認您在接口上有多個IP,並且在重新啓動時這些IP仍然存在。

它是一臺Mac。不要反抗,簡單的做法。

20

特別答覆:

You can create a new interface in the networking panel, based on an existing interface, but it will not act as a real fully functional interface (if the original interface is inactive, then the derived one is also inactive).

這可以使用TUN/TAP設備通過psv141所建議,並操縱/Library/Preferences/SystemConfiguration/preferences.plist文件添加基於任一個桶或抽頭接口一個網絡服務來實現。 Mac OS X將不允許基於虛擬網絡接口創建NetworkService,但可以直接操作preferences.plist文件以手動添加NetworkService。基本上你會打開Xcode中的preferences.plist文件(或直接編輯XML,但Xcode可能更加傻瓜式),並從現有的以太網接口複製配置。創建新NetworkService的地方位於「NetworkServices」下,如果您的Mac具有以太網設備,則NetworkService配置文件也將位於此屬性條目下。以太網進入可複製幾乎一字不差,你實際上可以改變的唯一領域是:

  • UUID
  • UserDefinedName
  • IPv4配置和接口設置爲您屯或自來水設備(即TUN0或tap0中)。
  • DNS服務器,如果需要。

然後你也可以操縱你想要的這個NetworkService的特定位置(記住Mac OS X可以配置所有依賴於你的「位置」的網絡接口)。默認位置UUID可以在PropertyList的根目錄中作爲關鍵字「CurrentSet」獲取。在確定了所需的位置(或集合)後,展開Set屬性,然後在Global/IPv4/ServiceOrder下添加新NetworkService的UUID條目。同樣在Set屬性下,您需要展開Service屬性,並將UUID作爲字典添加到字典中,其中一個字符串條目使用鍵__LINK__,值爲UUID(使用其他接口作爲示例)。

修改preferences.plist文件後,只需重新啓動,NetworkService將在SystemPreferences-> Network下可用。請注意,我們模擬了以太網設備,因此Mac OS X網絡層將會注意到「電纜被拔出」,並且不會讓您通過GUI激活接口。但是,由於底層設備是tun/tap設備並且具有IP地址,因此該接口將變爲活動狀態,並且將在BSD級別添加正確的路由。

作爲參考,這是用來做特殊的路由魔術。

如果你有這麼多並且遇到麻煩,你必須通過打開/ dev /下的其中一個設備來創建tun/tap設備。您可以使用任何程序來做到這一點,但我的好老式下的風扇自己:

#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; 
} 
5

幾個人似乎在這暗示,但使用ifconfig來創建OS X 10.9.5(使用minidns)的虛擬接口上的VLAN和測試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 
8

在問候@bmasterswizzleBRILLIANT answer - 更具體地說 - 到@DanRamos「關於如何使新接口的鏈路狀態爲「向上」的問題..我使用這個腳本,其原產地的我不記得,但(與@bmasterswizzles "Mona Lisa" of answers協調)...

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

但不管。有用。鏈接燈:綠色✅。 很喜歡它

enter image description here