Я управляю кластером Proxmox из 4 узлов. Узлы расположены в двух разных дата-центрах и соединены через публичную сеть. До появления SDN не было общей L2-сети между приватными (то есть только для хоста) сетями узлов. Используя SDN (например, зоны vxlan), можно развернуть связанные мосты, что даёт целый ряд действительно классных возможностей. Проблема в том, что vxlan на данный момент не поддерживает никакое шифрование. Очевидно, что использовать публичную сеть без шифрования — это не вариант. Spirit сказал, что MACsec скоро появится (возможно, ещё в этом году), но сейчас, думаю, самый простой способ — использовать ipsec для соединений vxlan. Настройка очень простая. Допустим, у вас кластер из 3 узлов, первым делом нужно установить strongswan на каждый Proxmox-бокс:
Код:
root@node1 /etc # apt install strongswan
Хотя это не обязательно, я советую добавить адреса узлов в файл hosts. Вот пример:
Код:
root@node1 / # cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
173.x.y.z node1
167.x.y.z node2
80.x.y.z node3
# Следующие строки рекомендуются для хостов с поддержкой IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Далее нужно настроить ipsec-туннели. Отредактируйте /etc/ipsec.conf (так быстрее, но можно использовать и файлы в /etc/ipsec.d/ — это даже лучше):
Код:
root@node1 / # cat /etc/ipsec.conf
conn common
authby=secret
auto=start
ike=aes256-sha1-modp1024! # на моих тестах эти шифры показали себя самыми быстрыми (но при этом достаточно безопасными) на современном оборудовании
esp=aes256-sha1!
leftfirewall=yes # нужно, если применяются правила файрвола Proxmox
left=node1
leftsubnet=node1[udp/4789] # шифруем только vxlan-трафик
conn node1-to-node2 # идея — сделать полносвязную сеть между узлами
also=common
right=node2
rightsubnet=node2[udp/4789]
conn node1-to-node3
also=common
right=node3
rightsubnet=node3[udp/4789]
Добавьте предварительно расшаренные ключи, отредактировав /etc/ipsec.secrets:
Код:
root@node1 / # cat /etc/ipsec.secrets
node1 node2 : PSK "superstrongpassword"
node1 node3 : PSK "superstrongpassword"
Естественно, ipsec.conf и ipsec.secrets нужно правильно отредактировать на каждом узле. В конце запускаем strongswan на каждом узле:
Код:
root@node1 / # ipsec restart
И проверяем, что всё работает нормально:
Код:
root@node1 / # ipsec statusall
Чтобы шифрование запускалось при загрузке:
Код:
root@node1 / # systemctl enable ipsec
Вот такие мои два цента. Всем успехов! Массимо
Код:
root@node1 /etc # apt install strongswan
Хотя это не обязательно, я советую добавить адреса узлов в файл hosts. Вот пример:
Код:
root@node1 / # cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
173.x.y.z node1
167.x.y.z node2
80.x.y.z node3
# Следующие строки рекомендуются для хостов с поддержкой IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Далее нужно настроить ipsec-туннели. Отредактируйте /etc/ipsec.conf (так быстрее, но можно использовать и файлы в /etc/ipsec.d/ — это даже лучше):
Код:
root@node1 / # cat /etc/ipsec.conf
conn common
authby=secret
auto=start
ike=aes256-sha1-modp1024! # на моих тестах эти шифры показали себя самыми быстрыми (но при этом достаточно безопасными) на современном оборудовании
esp=aes256-sha1!
leftfirewall=yes # нужно, если применяются правила файрвола Proxmox
left=node1
leftsubnet=node1[udp/4789] # шифруем только vxlan-трафик
conn node1-to-node2 # идея — сделать полносвязную сеть между узлами
also=common
right=node2
rightsubnet=node2[udp/4789]
conn node1-to-node3
also=common
right=node3
rightsubnet=node3[udp/4789]
Добавьте предварительно расшаренные ключи, отредактировав /etc/ipsec.secrets:
Код:
root@node1 / # cat /etc/ipsec.secrets
node1 node2 : PSK "superstrongpassword"
node1 node3 : PSK "superstrongpassword"
Естественно, ipsec.conf и ipsec.secrets нужно правильно отредактировать на каждом узле. В конце запускаем strongswan на каждом узле:
Код:
root@node1 / # ipsec restart
И проверяем, что всё работает нормально:
Код:
root@node1 / # ipsec statusall
Чтобы шифрование запускалось при загрузке:
Код:
root@node1 / # systemctl enable ipsec
Вот такие мои два цента. Всем успехов! Массимо
