MacOS系统网络配置

IP地址配置

手动指定IP

以下3个命令都可以完成IP地址的配置:

  • ifconfig interface [address_family] [address [netmask]]
  • ipconfig set interface-name (MANUAL | INFORM) ip-address subnet-mask
  • networksetup -setmanual

手动指定IP举例:

1
2
3
sudo ifconfig en0 inet 192.168.1.10 netmask 255.255.255.0
sudo ipconfig set en0 MANUAL 192.168.1.10 255.255.255.0
sudo networksetup -setmanual Wi-Fi 192.168.1.10 255.255.255.0 192.168.1.1

注意ifconfig和ipconfig都是指定网口设备名称,而networksetup要求使用MacOS为网口设置的别名(所谓“network service”)来指定网口。

使用DHCP配置IP

可以使用以下2个命令来重新获取DHCP配置:

  • ipconfig set interface-name (DHCP | BOOTP)
  • networksetup -setdhcp

使用DHCP动态获取IP地址举例:

1
2
ipconfig set en0 DHCP
networksetup -setdhcp Wi-Fi

注意ifconfig和ipconfig都是指定网口设备名称,而networksetup要求使用MacOS为网口设置的别名(所谓“network service”)来指定网口。

配置默认网关

可以使用以下命令配置默认网关:

  • networksetup -setmanual
  • route [add | change ] default
  • route [add | change ] -net 0.0.0.0

默认网关配置举例:

1
sudo networksetup -setmanual Wi-Fi 192.168.1.10 255.255.255.0 192.168.1.1

以下两条命令等价:

1
2
sudo route add default 192.168.1.1
sudo route add -net 0.0.0.0 192.168.1.1

如果已存在默认路由,你可能需要先删除现有默认路由,然后再添加默认路由:

1
2
sudo route delete default
sudo route add default 192.168.1.1

或者你也可以替换现有默认路由:

sudo route change default 192.168.1.1

添加静态路由

可以使用以下命令添加路由:

sudo route [-n] [add | delete | change] [-net | -host] [-ifscope boundif] destination gateway [netmask]

首先查看当前路由表:

1
2
3
4
5
6
7
8
9
10
macbook$ netstat -nr
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 21 5 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 1699 lo0
169.254 link#4 UCS 0 0 en0
...

方法一:

1
2
3
macbook$ sudo route add -net 10.1.1.1/32 192.168.1.1
Password:
add net 10.1.1.1: gateway 192.168.1.1

查看当前路由表:

1
2
3
4
5
6
7
8
9
10
macbook$ netstat -nr
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 23 5 en0
10.1.1.1/32 192.168.1.1 UGSc 0 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 1699 lo0
...

方法二:

1
2
macbook$ sudo route add -net 10.1.1.2 -netmask 255.255.255.255 192.168.1.1
add net 10.1.1.2: gateway 192.168.1.1

设置DNS

指定DNS服务器

配置命令:

networksetup -setdnsservers <networkservice> <dns1> [dns2] [...]

示例:

sudo networksetup -setdnsservers Wi-Fi 114.114.114.114 114.114.114.115

不指定DNS地址参数时,清空配置DNS服务器:

sudo networksetup -setdnsservers Wi-Fi

查看当前配置的DNS服务器
方法一:查看手动指定的DNS服务器地址
命令:

networksetup -getdnsservers <networkservice>

注意:此命令只能查看手动指定的DNS服务器地址,无法查看到由DHCP获得的DNS地址!

示例:

sudo networksetup -getdnsservers Wi-Fi

方法二: 查看由DHCP配置的DNS地址
命令:

ipconfig getpacket interface-name

此命令用以查看从DHCP获得的相关网络配置信息,同时也包含DNS配置信息!

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sudo ipconfig getpacket en0
Password:
op = BOOTREPLY
htype = 1
flags = 0
hlen = 6
hops = 0
xid = 0x1da0b2e6
secs = 0
ciaddr = 0.0.0.0
yiaddr = 192.168.1.101
siaddr = 0.0.0.0
giaddr = 0.0.0.0
chaddr = 48:d7:5:cb:7d:bd
sname =
file =
options:
Options count is 7
dhcp_message_type (uint8): ACK 0x5
server_identifier (ip): 192.168.1.1
lease_time (uint32): 0xffffffff
subnet_mask (ip): 255.255.255.0
router (ip_mult): {192.168.1.1}
domain_name_server (ip_mult): {114.114.114.114, 114.114.115.115}
end (none):

清除DNS缓存

OS X 10.9 (Mavericks):

macbook$ dscacheutil -flushcache; sudo killall -HUP mDNSResponder

OS X 10.10 (Yosemite):

macbook$ sudo discoveryutil udnsflushcaches

Versions 10.10.4+:

macbook$ sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder

OS X 10.11 (El Capitan) and OS X 10.12 (Sierra):

macbook$ sudo killall -HUP mDNSResponder

OS X 10.12.4:

macbook$ sudo killall -HUP mDNSResponder; sudo killall mDNSResponderHelper; sudo dscacheutil -flushcache;


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!