用OS X Server当网关

需求

有一台能通过有线连接上Internet的mac mini server。 用这台server做DHCP服务器,搭建一个内网192.168.0.1/22。 同时用这台server做DNS,可以配置一些内网的域名IP映射关系。

软硬件配置

  • mac mini server, 4GB 内存, 2TB 硬盘
  • Thunderbolt转网线的转接头1个
  • OS X 10.9.5
  • OS X Server 3.2.2

配置步骤

做网关,必须有两个network interface。 用mac mini server自带的网卡做出口,接外网,用Thunderbolt口转网口,做内网。

  1. 安装 OS X Server 3.2.2
  2. 在网络设置里,将 Thunderbolt ethernet 设置为 Manually 配置。
  3. 配置 DHCP

    1. 在Server的Services中,启用DHCP服务
    2. 在DHCP Settings页面,Networks里添加网络配置:
      • Name: internal
      • Lease Duration: 1 hour
      • Network Interface: Thunderbolt ethernet
      • Starting IP address: 192.168.1.1
      • Ending IP address: 192.168.3.254
      • Subnet Mask: 255.255.252.0
      • Router: 192.168.0.1
      • DNS server: 192.168.0.1, 223.5.5.5, 223.6.6.6
    3. 这里,DHCP没有分配 192.168.0.x 的IP,这些IP留给服务器,在 DHCP Clients页面,可以根据服务器的mac地址配置静态IP。
  4. 如果有交换机,那么现在就可以将 mac mini server 用Thunderbolt口转网线连上交换机,为交换机上的其他设备动态分配IP了。

  5. 我没有用交换机,用了Airport Time Capsule。它的配置如下:

    1. 将mac mini server 用Thunderbolt口转网线连上Time Capsule。
    2. 打开Airport Utility。
    3. Internet 选项:
      1. Connect Using: Static
      2. IPv4 address: 192.168.0.2
      3. Subnet Mask: 255.255.252.0
      4. Router Address: 192.168.0.1
      5. DNS Server: 192.168.0.1
    4. Network选项:
      1. Router Mode: Off(Bridge Mode)
    5. Wireless选项:
      1. Network Mode: create a wireless network
      2. 设置无线名称和密码
      3. Wireless Options里将 5GHz 网络设置打开。

    这样,就可以通过无线设备,连接 Time Capsule 的 无线网络,自动分配IP了。

  6. 配置DNS

    1. 在Server的Services中,启用DNS服务
    2. 在DNS服务设置页面,选择“Perform lookups for only some clients”,然后在Edit界面,勾选“Clients on the following networks:”,填入“192.168.0.1/22”
    3. 在Host Names里,可以添加内网的域名配置,比如 svn.internal.com -> 192.168.0.1
  7. 启用端口转发

    在上面的配置做完之后,设备可以通过mac mini server 自动分配到 192.168.1.1 ~ 192.168.3.254 段内的IP了。

    在内网设备上,应该可以ping

     ping 192.168.0.1
    

    应该可以通过下面的命令进行域名解析

     dig @192.168.0.1 baidu.com
    

    但是,无法ping外网IP

     ping baidu.com
    

    内网机器要访问外网,接下来还需要配置端口转发。在命令行中执行下面的命令:

     sudo sysctl -w net.inet.ip.forwarding=1
     sudo sysctl -w net.inet.ip.fw.enable=1
    
     sudo natd -interface en1
     sudo ipfw add divert natd ip from any to any via en1
    

    上面的示例中,是在使用mac mini server的有线网口连接Internet,所以参数中interface使用的是en1,如果用mac mini server的无线网卡连Internet,那么最后两个命令中的interface应该用en0:

     sudo natd -interface en0
     sudo ipfw add divert natd ip from any to any via en0
    

    这样配置之后,在内网其他机器上,应该就可以正常访问Internet了。

参考链接

陌陌运维主管:我们是如何搞定600+设备的初创公司办公室网络环境的

Enabling IP forwarding and NAT from console for Mac OS X (Mavericks)

OSX Yosemite IP Forwarding not working

FreeBSD连载(78):设置和使用ipfw/natd

Comments