Что-то мне надоело настраивать систему мышью. Мысли о DevOps покоя не дают. Вот и решил при возможности использовать консоль для настройки свежеустановленной системы. Покажу, как настроить сеть.

Интерфейс en0 подключен в коммутатор Cisco RV180w. Интернет доводится через untagged VLAN port, адрес выдаётся по DHCP. Его настраивать не нужно, система сама прекрасно его подхватывает.

В этом же интерфейсе идут три VLAN’а как tagged. Вот их я и настрою через командную строку.

Список интерфейсов, поддерживающих VLAN’ы:

$ networksetup -listdevicesthatsupportVLAN

en0 (Ethernet)

Создаю VLAN’ы (последний параметр - тег):

# Usage: networksetup -createVLAN <VLAN name> <device name> <tag>
# Create a VLAN with name <VLAN name> over device <device name> with unique tag <tag>. A default network service will be created over the VLAN.

$ sudo networksetup -createVLAN VLAN1 en0 10
$ sudo networksetup -createVLAN VLAN2 en0 15
$ sudo networksetup -createVLAN VLAN3 en0 30

Проверяю

$ networksetup -listVLANs

VLAN User Defined Name: VLAN1
Parent Device: en0
Device ("Hardware" Port): vlan0
Tag: 10

VLAN User Defined Name: VLAN2
Parent Device: en0
Device ("Hardware" Port): vlan1
Tag: 15

VLAN User Defined Name: VLAN3
Parent Device: en0
Device ("Hardware" Port): vlan2
Tag: 30

Смотрю названия интерфейсов:

$ networksetup -listallnetworkservices
VLAN1 Configuration
VLAN2 Configuration
VLAN3 Configuration

Настраиваю адреса:

# Usage: networksetup -setmanual <networkservice> <ip> <subnet> <router>
# Set the <networkservice> TCP/IP configuration to manual with IP address set to ip,
# Subnet Mask set to subnet, and Router address set to router.

$ sudo networksetup -setmanual "VLAN1 Configuration" 10.1.1.4 255.255.255.0
$ sudo networksetup -setmanual "VLAN2 Configuration" 10.1.2.4 255.255.255.0
$ sudo networksetup -setmanual "VLAN3 Configuration" 10.1.3.4 255.255.255.0

Эта конфигурация не потеряется при перезагрузке, как было бы при настройке в ifconfig.

К сожалению, статические маршруты прописать так же просто нельзя, я для этого написал скрипт для StartupItems.