[sisyphus] systemd-network

Alexey Shabalin a.shabalin на gmail.com
Пт Фев 20 20:16:43 MSK 2015


8 августа 2014 г., 4:16 пользователь Вадим Илларионов
<gbimobou на gmail.com> написал:
> В письме от 7 августа 2014 16:32:03 пользователь Денис Смирнов написал:
>> systemd-networkd
>
> Вдогонку.
>
> Невзирая на нетривиальную конфигурацию (а может, как раз благодаря ей),
> хотелось бы таки попробовать обойтись без etcnet'а.
>
> Аплинк - 8-портовый киско-рутер, хоть и одомашненный, но умеющий вланы, лацп и
> прочие плюшки.
> Шлюз на обычной офисной материнке, но с 2-портовой igb-шкой (тут LACP).
> Вафельная точка доступа воткнута во встроенную сетевуху.
> Снаружи 3 тегированных влана - корпоративный, абонентский и одного юрика,
> нашего клиента.
> Вниз смотрит мост home, соединяющий вафлю с проводным бондом.
> Под етснетом всё работает.
> Соорудив же вот такую конфигурацию, сносить етснет и ребутиться боюсь:
>
> for f in /etc/systemd/network/*; do echo -e "\n`basename $f`\n--------"; grep
> -v ^# $f; done
>
> 00.enp2s0.network
> --------
> [Match]
> Name=enp2s0
>
> [Network]
> Description=RealTek GigaBit Card
> Bridge=home
>
> 00.enp5s0f.network
> --------
> [Match]
> Bond=bond
> Name=enp5s0f*
>
> [Network]
> Description=Intel Dual GigaBit Card
>
> 10.bond.netdev
> --------
> [NetDev]
> Description=Dual IGB LACP Link
> Kind=bond
> Name=bond
>
> [Bond]
> Mode=802.3ad
>
> 10.bond.network
> --------
> [Match]
> Name=bond
>
> [Network]
> Bridge=home
>
> 20.home.netdev
> --------
> [NetDev]
> Description=Bridge between Dual IGB & RealTek GigaBit cards
> Kind=bridge
> Name=home
>
> 20.home.network
> --------
> [Match]
> Name=home
>
> [Network]
> Address=192.168.6.254/24
> Gateway=192.168.6.254
> DNS=192.168.6.254
>
> 30.abon.netdev
> --------
> [NetDev]
> Description=Abonent VLAN
> Kind=vlan
> Name=abon
>
> [VLAN]
> Id=51
>
> 30.abon.network
> --------
> [Match]
> Name=abon
>
> [Network]
> DHCP=yes
>
> 40.corp.netdev
> --------
> [NetDev]
> Description=Corporate VLAN
> Kind=vlan
> Name=corp
>
> [VLAN]
> Id=4094
>
> 40.corp.network
> --------
> [Match]
> Name=corp
>
> [Network]
> DHCP=yes
>
> 50.nf.netdev
> --------
> [NetDev]
> Description=Voronkin VLAN
> Kind=vlan
> Name=nf
>
> [VLAN]
> Id=701
>
> 50.nf.network
> --------
> [Match]
> Name=nf
>
> [Network]
> DHCP=yes
>
> Денис, глянь, пожалуйста, всё ль в порядке?



Я приведу свой вариант успешной настройки не совсем тривиальной
конфигурации. Простые варианты, типа DHCP или статической настройки
одного интерфейса, рассмотрены в документации systemd-networkd.
Имеется несколько сетевых плат, их надо объединить в port-channel, со
стороны свича подаётся транк, из него надо взять vlan140 для
виртуалок, и на нём же назначить адрес хостовой машины для доступа:

все настройки в /etc/systemd/network/

1) создаём bond0 интерфейс на физических интерфейсах enp4s0 и  enp6s0:
10-create-bond0.network:
[Match]
Name=enp*

[Network]
Bond=bond0
----------------
20-setup-bond0.netdev:
[NetDev]
Name=bond0
Kind=bond

[Bond]
Mode=802.3ad
TransmitHashPolicy=encap3+4
LACPTransmitRate=slow
MIIMonitorSec=1s
UpDelaySec=2s
DownDelaySec=4s
----------------------
на всякий случай добавляю в
 /etc/modprobe.d/bonding.conf:
options bonding mode=4
options bonding lacp_rate=0
options bonding ad_select=1
options bonding xmit_hash_policy=1
options bonding miimon=1000
options bonding updelay=2000
options bonding downdelay=4000

2) создаем интерфейс vlan140 на bond0:

30-create-vlan141.network:
[Match]
Name=bond0

[Network]
VLAN=vlan140
----------------------
40-setup-vlan140.netdev:
[NetDev]
Name=vlan140
Kind=vlan

[VLAN]
Id=140

3) создаем бридж br140 в который включён vlan140
50-create-br140.network:
[Match]
Name=vlan140

[Network]
Bridge=br140
--------------
60-setup-br140.netdev:
[NetDev]
Name=br140
Kind=bridge

4) заключительным этапом создаём интерфейс для доступа к хосту:
90-management.network:
[Match]
Name=br140

[Network]
Address=1.1.1.100/24
Gateway=1.1.1.1
DNS=1.1.1.4
DNS=1.1.1.3
Domains=example.com
NTP=1.1.1.1

в зависимости от задачи, можно поменять схему, т.е. сначала делать
бридж на бондинг-интерфейсе, а потом уже выдергивать нужный vlan.
Может пригодиться если ваши виртуалки сами настраивают свой vlan.
Но надо следить за тем, что бы не создать петлю. Как включить STP в
этих конфигах, я не нашел.


-- 
Alexey Shabalin


Подробная информация о списке рассылки Sisyphus