我知道你可以在Windows中创建一个虚拟网络接口(见这里),在Linux中使用ip-aliases也很容易,但Mac OS X有类似的东西吗?我一直在寻找环回适配器,虚拟接口,但找不到一个好的解决方案.
您可以在网络面板中基于现有接口创建新接口,但它不会充当真正的全功能接口(如果原始接口处于非活动状态,则派生的接口也处于非活动状态).
在完全断开连接的情况下工作时需要此方案.即便如此,在VMWare安装中运行服务器时具有网络功能也是有意义的.这些虚拟机可以通过其IP地址访问,但不能通过其DNS名称访问,即使我在其中一个虚拟机中运行DNS服务器也是如此.通过配置接口以使用虚拟DNS服务器,我想我可以测试一些DNS场景.不幸的是,如果DNS名称都不是非活动的,那么没有接口可以解析DNS名称......
环回适配器始终处于启用状态.
ifconfig lo0别名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.基本上你会preferences.plist
在Xcode中打开文件(或直接编辑XML,但Xcode可能更加万无一失),并从现有的以太网接口复制配置.创建新NetworkService的位置在"NetworkServices"下,如果您的Mac具有以太网设备,则NetworkService配置文件也将位于此属性条目下.以太网条目可以逐字复制,您实际要改变的唯一字段是:
UUID
UserDefinedName
IPv4配置并设置接口到tun或tap设备(即tun0或tap0).
DNS服务器,如果需要.
然后,您还将操作您想要此NetworkService的特定位置(请记住,Mac OS X可以根据您的"位置"配置所有网络接口).可以在PropertyList的根中获取默认位置UUID作为键"CurrentSet".确定所需的位置(或集合)后,展开Set属性,并使用新NetworkService的UUID在Global/IPv4/ServiceOrder下添加条目.同样在Set属性下,您需要展开Service属性并在此处将UUID作为字典添加,其中一个字符串条目带有键__LINK__,值为UUID(以其他接口为例).
修改preferences.plist
完文件后,只需重新启动,NetworkService将在SystemPreferences-> Network下可用.请注意,我们已经模仿了以太网设备,因此Mac OS X网络层会注意到"电缆已拔下"并且不允许您通过GUI激活接口.但是,由于底层设备是tun/tap设备并且它具有IP地址,因此接口将变为活动状态,并且将在BSD级别添加正确的路由.
作为参考,这用于做特殊的路由魔术.
如果你到目前为止遇到麻烦,你必须通过打开/ dev /下的一个设备来创建tun/tap设备.你可以使用任何程序来做到这一点,但我自己也是老式C的粉丝:
#include#include #include 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
' BRILLIANT的答案 - 更具体地说 - @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
但是无所谓.有用.链接灯:绿色 ✅. 喜欢它.
可以使用TUN/TAP设备. http://tuntaposx.sourceforge.net/
其他一些人似乎暗示了这一点,但下面演示了在OS X 10.9.5上使用ifconfig创建vlan并在虚拟接口上测试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