Налаштування роботи тегованого VLAN в CentOS, блог
Блог про технології, технократію та методики боротьби з граблями
Налаштування роботи VLAN у CentOS
Взяв тут собі потішити дід, та й прикупив на нього пул IP. Все начебто налаштував – не пінгується. Перевірив ще раз 100 разів, пишу в саппорт, так мовляв і так, начебто аліаси піднялися, а нічого не пінгується. Тож давайте терміново коректні шлюзи та маски.
На що отримую чудову відповідь, що треба підключати VLAN тегований. Дякую звичайно, що повідомили через кілька діб після підключення. Переходимо до налаштувань.
Власне, тому що сітки у мене дві, скажімо 10.10.1.0 та 10.10.2.0, то дізнаємося для них номери VLAN'ів, скажімо 10.10.1.0 буде VLAN101, о 10.10.2.0 – VLAN102.
За підтримку VLAN в Linux відповідає модуль ядра 8021q. Теоретично його треба встановлювати додатково, але так як у мене стоїть CentOS, то він вже є, тобто можемо перевірити його наявність, вантажавши його руками:
# modprobe 8021q доставимо в систему конфігурилку для VLAN і подивимося, чи буде працювати:# yum -y install vconfig# vconfig add eth0 101# vconfig add eth0 102# cat /proc/net/vlan/config VLAN Dev name VLAN ID Name- Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD eth0.101 101 eth0 eth0.102 102 eth0
Начебто оре, т.ч переходимо до налаштування стійкого до перезавантажень. Як і всі інші налаштування мережі через initscripts в CentOS, налаштування VLAN живуть в папці /etc/sysconfig/network-scripts/ , де для налаштування можна піти двома різними шляхами, для чого створити один із файлів:
1. ifcfg-vlanNNN, де NNN – номер VLAN (ідентифікатор VID); 2. ifcfg-INTERFACE-NAME.NNN, де INTERFACE-NAME – ім'я інтерфейсу, а NNN – номер VLAN (ідентифікатор VID).
Спробував налаштувати обидваваріанти, але у мене вони не заробили, тому що додаткові IP не пінгувалися. Як потім виявилося - проблема була в налаштуваннях ядра, тому що за підсумком я зупинився на другому варіанті зі стандартними налаштуваннями.
Треба зауважити, що в теорії після створення файлів все само починає коректно шарудити, їх запуск ініціює підвантаження модуля 8021q і всім приходить щастя, але в мене, за наведеними нижче причини, все трохи не задалося. Власне варіант файлів наступний:
1. Налаштування через файли віланів
# cat ifcfg-vlan101 VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan101 PHYSDEV=eth0 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR=10.10.1.101# cat ifcfg-vlan102 VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan102 PHYSD 8>BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR=10.10.2.101
2.Налаштування через інтерфейси
# cat ifcfg-eth0.101 VLAN=yes DEVICE=eth0.101 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR= 10.10.1.101 NETMASK=255.255.255.0# cat ifcfg-eth0.102 VLAN=yes DEVICE=eth0.102 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet IPADDR=10.10.2.101 NETMASK=255.255.255.0
Після перезавантаження мережевої служби або системи, вілани піднімаються, про що свідчать показання системи:# cat /proc/net/vlan/config VLAN Dev name VLAN ID Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD eth0.101 101 eth0 eth0.102 102 eth0# ip l ls 1: lo: mtu 65536 qdisc noqueue sta :00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:15:174:77 :05 brd ff:ff:ff:ff:ff:ff 6: eth0.101@eth0: mtu 1500 qdiscnoqueue state UP link/ether 00:15:174:77:05 brd ff:ff:ff:ff:ff:ff 7: eth0.102@eth0: mtu 1500 qdisc noqueue state UP link/ether 00:15:174:77:05 brd ff:ff:ff:ff:ff:ff
Але пінг не ходив, тому довелося ламати голову про причини. Після тривалих перетрубацій та змін файлів налаштувань VLAN, дійшов висновку, що проблема в модулі, звідки дістався ядра та фільтра зворотного тракту, який і рубає по дефолту асиметричну маршрутизацію:# sysctl net.ipv4.conf grep rp_filter net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.all.arp_filter = 0 net.ipv4.conf.default.rp_filter = 1 net. ipv4.conf.default.arp_filter = 0 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.lo.arp_filter = 0 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.eth0.arp_filter = 0 net.ipv4.conf.eth0/101.rp_filter = 1 net.ipv4.conf.eth0/101.arp_filter = 0 net.ipv4.conf.eth0/102.rp_filter = 1 net.ipv4.conf.eth0/102.arp_filter = 0
так що у файлі /etc/sysctl.conf відключив фільтрацію rp_filter, додаванням рядків для VLAN та змінивши значення дефолтного: net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.eth0/101. rp_filter = 0 net.ipv4.conf.eth0/102.rp_filter = 0 після чого все добре запрацювало.
Нуль відключає фільтрацію, що дозволяє ходити асиметрично розподіляються пакети. Але тут треба розуміти, що відключення перевірки джерела робить машину вразливою для фішингу IP при DDoS-атаці, т.ч по манах для використання асимітричної маршрутизації рекомендується використовувати нестрогий режим, тобто значення параметрів виставляти в два.