Mac OS X Server Mountain Lion 10.8下配置VPN并开启数据转发

好吧,其实这个早就应该解决了的才对,不过直到最近重新尝试才发现之前没做成功是因为完全没按照文档操作,所以当然会失败!
现在根据我的经验重新写一下做法,比原文好的是关于私有IP部分。至于图的话直接看原文就好了,不再进行转贴。
原文地址:http://www.macminicolo.net/mountainlionvpn

OS X Server自带的VPN原本是提供外网接入内网访问的,并不提供数据转发。如果不需要走数据的直接设置就行了,不需要看本教程。而如果想要拿来挂代理要走数据的话怎么办呢?
继续看下去吧~

首先先确认iCloud的Back to my Mac已关闭,根据官方说明:“在 NAT 模式下配置 AirPort 基站或 Time Capsule 上的“回到我的 Mac”会妨碍与 NAT 模式下的 OS X Server VPN 服务的连接“。所以必须关掉Back to my Mac以防止对VPN进行干扰。

然后建立一个VLAN,设置其为手动设置IPv4。
IP地址和路由为你的本机IP,子网掩码255.255.255.0。比如咱的服务器被路由器分配的IP是192.168.0.100的话,那么VLAN里填写的IP和路由都应该为192.168.0.100。
原文中博主是使用10.0.0.1是因为他本机的IP就为这个。而至于10.0.0.0/24则是CIDR,具体可以查看wiki关于CIDR。如果子网掩码不是255.255.255.0的话需要自己去重新计算喔。

设置好VLAN之后就去设置Server.app里的DNS,添加几个常用的就好,比如8.8.8.8之类的,然后开启DNS服务(默认都应该开启的)。

然后是开启NAT就是转发功能,需要修改到系统文件。先说明咱使用的都是vim,如果连最简单的操作都不熟悉的话自己去学,连这个都不会别想去管服务器了。

开终端,然后按照咱说的做:
输入sudo vim /etc/pf.anchors/com.apple
在文件里找到:scrub-anchor "100.InternetSharing/*"
然后在它的前面加上个#号,也就是注释掉。
接着找到文件最末尾。将最后一行改成:(倒数第二行不要动)
load anchor "400.AdaptiveFirewall" from "/Applications/Server.app/Contents/ServerRoot/private/etc/pf.anchors/400.AdaptiveFirewall"
其实也就是开头的load anchor “400.AdaptiveFirewall/”多了个”/”,是10.8.2的bug。需要手动清除。
最后在文件里添加三行东西:

nat-anchor "100.customNATRules/*"
rdr-anchor "100.customNATRules/*"
load anchor "100.customNATRules" from "/etc/pf.anchors/customNATRules"

保存退出。
接着运行:sudo touch /etc/pf.anchors/customNATRules
然后运行:sudo vim /etc/pf.anchors/customNATRules
接着添加以下两行:

nat on en0 from 192.168.0.0/24 to any -> (en0)
pass from {lo0, 192.168.0.0/24} to any keep state

注意和上面说的一样,原文10.0.0.0/24代表10.0.0.1~254,而我们的网络如果是192.168.0.1~254的话,则需要修改成192.168.0.0/24。
保存并退出,继续输入以下命令:(都是一行)
sudo /usr/libexec/PlistBuddy -c 'add :ProgramArguments:3 string -e' /System/Library/LaunchDaemons/com.apple.pfctl.plist

echo 'net.inet.ip.forwarding=1' | sudo tee -a /etc/sysctl.conf
当返回是:net.inet.ip.forwarding=1的时候说明配置成功了。这时候需要重启一下电脑让这些改动生效。

重启之后接着就是去设置VPN了,填写好域名和共享密匙之后在DNS设置里将原有的DNS全部清空,输入192.168.0.100也就是本机的IP地址。
然后到客户端地址,设置起始IP为192.168.0.150(只要是IP段内就好)。正确的话在点OK之后是不会弹出IP地址段错误的提示的。
最后开启VPN服务,理论上应该就能走数据了。

客户端的配置就不多说了。网上教程到处都是,而且这么简单的设置不用教程应该都能配置好的。
不过经过咱的测试,PPTP似乎是无法连接,L2TP倒是一切正常,所以目前全部切换到L2TP了。