macosx中的虚拟网络接口

macosx中的虚拟网络接口,macos,networking,Macos,Networking,我知道可以在Windows中创建虚拟网络接口(请参阅),在Linux中使用ip别名也很容易,但Mac OS X是否存在类似的功能?我一直在寻找环回适配器、虚拟接口,但找不到好的解决方案 您可以在“网络”面板中基于现有接口创建新接口,但它不会充当真正的全功能接口(如果原始接口处于非活动状态,则派生接口也处于非活动状态) 在完全断开连接的情况下工作时需要此场景。即使如此,在VMWare安装中运行服务器时,拥有联网功能也是有意义的。这些虚拟机可以通过其IP地址访问,但不能通过其DNS名称访问,即使我在

我知道可以在Windows中创建虚拟网络接口(请参阅),在Linux中使用ip别名也很容易,但Mac OS X是否存在类似的功能?我一直在寻找环回适配器、虚拟接口,但找不到好的解决方案

您可以在“网络”面板中基于现有接口创建新接口,但它不会充当真正的全功能接口(如果原始接口处于非活动状态,则派生接口也处于非活动状态)

在完全断开连接的情况下工作时需要此场景。即使如此,在VMWare安装中运行服务器时,拥有联网功能也是有意义的。这些虚拟机可以通过其IP地址访问,但不能通过其DNS名称访问,即使我在其中一个虚拟机中运行DNS服务器。通过配置一个使用虚拟DNS服务器的接口,我想我可以测试一些DNS场景。不幸的是,如果没有一个DNS名称处于非活动状态,则没有接口正在解析DNS名称…

您的意思是什么

但它不会充当真正的全功能接口(如果原始接口处于非活动状态,则派生接口也处于非活动状态)

?

我可以创建一个新接口,基于已经存在的接口,然后禁用现有接口,新接口仍然有效。但是创建第二个接口并不会创建真正的接口(当您使用ifconfig检查时),它只会为已经存在的接口分配第二个IP(但是,这一个可以是DHCP,而第一个可以是硬编码的)

那么我是否正确理解您,您希望创建一个接口,而不是绑定到任何真实接口?该接口将如何使用?例如,如果您断开所有WLAN并拔出所有网络电缆,该接口将向何处发送流量,如果您向其发送流量?可能您的问题有点不清楚,如果重新措辞,可能会有很大帮助,所以,一旦你拥有了这个“虚拟界面”,你就可以清楚地知道你到底在用它做什么


正如您在问题中提到的“别名IP”,这意味着别名接口。但别名接口总是绑定到真实接口。区别在于,在Linux中,这样的接口实际上是一个接口(例如,eth0的别名接口可以是eth1),而在Mac上,没有创建真实接口,而是创建了一个虚拟接口,可以独立配置和使用,但它在物理上仍然是同一个接口,因此不会生成新的命名接口(您只有两个接口,它们实际上都是en0,但都可以单独启用/禁用和配置).ifconfig interfacename create将创建一个虚拟接口,

环回适配器始终处于启动状态

ifconfig lo0 alias 172.16.123.1将向环回适配器添加别名IP 172.16.123.1


ifconfig lo0-别名172.16.123.1将删除它

可以使用TUN/TAP设备。

为了实现这一目标,我求助于运行基于BSD的路由器/防火墙PFSense

为什么?因为OSX服务器在没有静态IP的情况下变得异常

因此,在与之搏斗了几天之后,我们制作了NAT、DHCP、防火墙和

我正在尝试这是平行线


将让您知道它是如何运行的。

看看本教程,它适用于FreeBSD,但也适用于OS X。

转到网络首选项

在网络适配器列表的底部,单击+图标

选择要arp的现有接口(如Ethernet 1),并为新端口提供所需的服务名称(如Ethernet 1.1),然后按create

现在,您在gui中有了新的虚拟界面,可以以正常方式管理IP地址等

ifconfig-a将确认界面上有多个IP,并且在重新启动时这些IP仍然存在


这是一台Mac电脑。不要与之抗争,用简单的方法操作。

特别回复:

您可以在“网络”面板中基于现有接口创建新接口,但它不会充当真正的全功能接口(如果原始接口处于非活动状态,则派生接口也处于非活动状态)

这可以通过使用psv141建议的Tun/Tap设备,并操纵
/Library/Preferences/SystemConfiguration/Preferences.plist
文件来添加基于Tun或Tap接口的网络服务来实现。Mac OS X不允许基于虚拟网络接口创建网络服务,但可以直接创建操作
preferences.plist
文件以手动添加NetworkService。基本上,您可以在Xcode中打开
preferences.plist
文件(或者直接编辑XML,但Xcode可能更容易),然后从现有以太网接口复制配置。创建新NetworkService的位置在“NetworkServices”,如果您的Mac电脑有以太网设备,则NetworkService配置文件也将位于此属性项下。以太网项可以几乎一字不差地复制,您实际要更改的字段只有:

  • UUID
  • 用户定义名称
  • IPv4配置,并将接口设置为tun或tap设备(即tun0或tap0)
  • DNS服务器(如果需要)
然后,您还可以操作您希望此网络服务用于的特定位置(请记住,Mac OS X可以根据您的“位置”配置所有网络接口)。默认位置UUID可以在PropertyList的根目录中作为键“CurrentSet”获取。在计算出哪个位置(或集合)后如果需要,请展开Set属性,并在Global/IPv4/ServiceOrder下添加具有新NetworkService的UUID的条目。此外,在Set属性下,您还需要展开Service属性,并将UUID添加为一个字典,其中包含一个字符串条目,该条目的键为u_链接u_u_u和
#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;
}
$ 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
#!/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