CentOS 7: VLAN

Сделаю заметку, чтобы не искать потом по сети. Авось кому и пригодится.

Подготовим сетевой интерфейс. В моем случае это /etc/sysconfig/network-scripts/ifcfg-eno1:

DEVICE=eno1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes

Создадим VLAN интерфейс с тегом 100 /etc/sysconfig/network-scripts/ifcfg-eno1.100:

VLAN=YES
PHYSDEV=eno1
DEVICE=eno1.100
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.8
PREFIX=24
NETWORK=192.168.0.0
DEFROUTE=no

Создадим VLAN интерфейс с тегом 600, через который будем ходить в интернет /etc/sysconfig/network-scripts/ifcfg-eno1.600:

VLAN=YES
PHYSDEV=eno1
DEVICE=eno1.600
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.6.8
PREFIX=24
NETWORK=192.168.6.0
DEFROUTE=yes
GATEWAY=192.168.6.1
DNS1=8.8.8.8
DNS2=8.8.4.4

Перезапускаем сетевые интерфейсы «systemctl restart network».

И все вроде бы хорошо. Все интерфейсы работают и нормально пинаются в локалке…до тех пор пока дело не дойдет до более сложной маршрутизации например между разными сетями или через VPN. Тут уже начинаются игры с default gateway на каждом интерфейсе и установкой метрики. Сложно. Или нет? Недавно наткнулся на следующий документ и это работает. Если бы не дудос, то вообще бы все изначально работало. Итак, добавляем в /etc/sysctl.conf:

net.ipv4.conf.default.rp_filter = 2

Применяем настройки sysctl -p и все интерфейсы начинают нормально работать без default gateway на каждом интерфейсе. Теперь сервер отвечает клиенту по тому интерфейсу, с которого и поступил запрос.