这完全是一次需求驱动的行为,而不是工作驱动或者兴趣驱动的行为。我准备完全放弃我那牛慢的台式机,完全使用MacBook,而且绝不安装Windows虚拟机。因此所有 Windows上有的软件在Mac上都要能找到对应物,当然也包括OpenVPN,因为我需要使用OpenVPN连入公司。
首先先安装了xcode,一个Mac上的开发环境,然后下载了openvpn-2.2.1的源码包,解压之,configure之,make之,最后编写配置文件,将我的pkcs12证书设置 进去。一切就绪后运行,发现一个错误,那就是虚拟网卡打开失败。
由于Mac OS的内核基础设施是基于UNIX的,因此其dev目录布局和Linux是一致的,在dev目录下没有发现tap,tun等节点信息。于是就想自己用mknod建立一个, 可是却苦于不知道Mac OS下虚拟网卡的主次设备号,这个是和内核驱动程序高度相关联的。最后还是求助于万能的google,找到了一个Mac OS上的虚拟网卡驱动,其下 载地址是:tuntaposx.sourceforge.net/
安装了这个驱动之后,再看dev目录,已经内建了很多tun/tap节点了:
sh-3.2# ls -l /dev/|grep tun
crw-rw---- 1 root wheel 35, 0 11 19 11:23 tun0
crw-rw---- 1 root wheel 35, 1 11 19 11:23 tun1
crw-rw---- 1 root wheel 35, 10 11 19 11:23 tun10
crw-rw---- 1 root wheel 35, 11 11 19 11:23 tun11
crw-rw---- 1 root wheel 35, 12 11 19 11:23 tun12
…
sh-3.2# ls -l /dev/|grep tap
crw-rw---- 1 root wheel 34, 0 11 19 11:23 tap0
crw-rw---- 1 root wheel 34, 1 11 19 11:23 tap1
crw-rw---- 1 root wheel 34, 10 11 19 11:23 tap10
crw-rw---- 1 root wheel 34, 11 11 19 11:23 tap11
crw-rw---- 1 root wheel 34, 12 11 19 11:23 tap12
…
复制代码
此时再次运行OpenVPN,即可成功和服务器建立隧道。