
Примечание



Примечание
Примечание
Примечание


$ ip -br a
enp0s10 UP fd47:d11e:43c1:0:a00:27ff:fe80:2977/64 fe80::a00:27ff:fe80:2977/64
dummy0 DOWN
dummy_of1 UNKNOWN 10.255.0.2/32 fe80::54b9:eeff:fe6b:b2b8/64
В файле /etc/network/interfaces.d/sdn появляются записи вида:
auto dummy_of1
iface dummy_of1 inet static
address 10.255.0.3/32
link-type dummy
ip-forward 1
auto enp0s10
iface enp0s10
ip-forward 1
Примечание
vtysh. Соседей и маршруты OpenFabric можно увидеть с помощью следующих команд:
# vtysh -c "show openfabric neighbor"
# vtysh -c "show openfabric route"
#pvesh create /cluster/sdn/fabrics/fabric\ --id of2 --protocol openfabric --ip_prefix 10.250.0.0/24 #pvesh get /cluster/sdn/fabrics/fabric/of2 --output-format yaml--- digest: 0d9872991acab57cf6afeca9dbf93d0a333fe2d2ef650b21aaedbd30d5b73ecd id: of2 ip_prefix: 10.250.0.0/24 protocol: openfabric
#pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve01 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.1 #pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve02 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.2 #pvesh create /cluster/sdn/fabrics/node/of2\ --node_id pve03 --protocol openfabric --interfaces name=enp0s10 --ip 10.250.0.3 #pvesh get /cluster/sdn/fabrics/node/of2 --output-format yaml--- - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.1 node_id: pve01 protocol: openfabric - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.2 node_id: pve02 protocol: openfabric --- - digest: ba89eae03508e4728939e243bcfdb4452515dfb39eda21692996efaf10b23e54 fabric_id: of2 interfaces: - name=enp0s10 ip: 10.250.0.3 node_id: pve03 protocol: openfabric
# pvesh set /cluster/sdn




Примечание


$ ip -br a
enp0s9 UP 10.16.0.2/32 fe80::a00:27ff:fe9e:5ea4/64
dummy0 DOWN
dummy_ospf UNKNOWN 10.16.0.2/32 fe80::cc9f:9bff:fe0c:16bd/64
В файле /etc/network/interfaces.d/sdn появляются записи вида:
auto dummy_ospf
iface dummy_ospf inet static
address 10.16.0.2/32
link-type dummy
ip-forward 1
auto enp0s9
iface enp0s9 inet static
address 10.16.0.2/32
ip-forward 1
Примечание
# vtysh -c "show ip ospf neighbor"
Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL
10.16.0.1 1 Loading/- 0.661s 31.334s 10.16.0.1 enp0s9:10.16.0.2 0 1 0
10.16.0.3 1 Exchange/- 0.663s 34.242s 10.16.0.3 enp0s9:10.16.0.2 1 0 0
# vtysh -c "show ip route ospf"
O 10.16.0.2/32 [110/10] via 0.0.0.0, dummy_ospf onlink, rmapsrc 10.16.0.2, weight 1, 00:08:02
#pvesh create /cluster/sdn/fabrics/fabric\ --id ospf --protocol ospf --ip_prefix 10.16.0.0/24 --area 0 #pvesh get /cluster/sdn/fabrics/fabric/ospf --output-format yaml--- area: '0' digest: b42b0d474b59609522255008351b21dd2badf03e43f7289a80e2feba97815aa5 id: ospf ip_prefix: 10.16.0.0/24 protocol: ospf
#pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve01 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.1 #pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve02 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.2 #pvesh create /cluster/sdn/fabrics/node/ospf\ --node_id pve03 --protocol ospf --interfaces name=enp0s9 --ip 10.16.0.3 #pvesh get /cluster/sdn/fabrics/node/ospf --output-format yaml--- - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.1 node_id: pve01 protocol: ospf - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.2 node_id: pve02 protocol: ospf - digest: a75048ab2d62fe6e7f3c0e2ff26c2b78565b827b87376e63130c5fe5ed4d7312 fabric_id: ospf interfaces: - name=enp0s9 ip: 10.16.0.3 node_id: pve03 protocol: ospf
# pvesh set /cluster/sdn
/etc/pve/sdn/fabrics.cfg:
ospf_fabric: ospf
area 0
ip_prefix 10.16.0.0/24
ospf_node: ospf_pve01
interfaces name=enp0s9
ip 10.16.0.1
ospf_node: ospf_pve02
interfaces name=enp0s9
ip 10.16.0.2
ospf_node: ospf_pve03
interfaces name=enp0s9
ip 10.16.0.3
Примечание
# apt-get install wireguard-tools


IP:PORT;
AllowedIPs в конфигурации WireGuard и одновременно как фильтр и маршрут назначения;

Примечание


$ ip -br a
enp0s9 UP 10.16.0.2/32 fe80::a00:27ff:fe9e:5ea4/64
wg0 UNKNOWN 198.51.100.1/24
В таблице маршрутизации появляются маршруты для удалённых пиров:
$ ip route
198.51.100.0/24 dev wg0 proto kernel scope link src 198.51.100.1
198.51.100.2 dev wg0 scope link
198.51.100.3 dev wg0 scope link
wg show:
# wg show wg0
interface: wg0
public key: 54GHc/L8zfRM0XJnR7syhVv1Abl4A4l3JoWa9joIlWM=
private key: (hidden)
listening port: 51820
peer: +Vv7sh/mBXcGIVj30P/09guL3G4Ky566AwywL0kXDzU=
endpoint: 192.168.0.70:51820
allowed ips: 198.51.100.3/32
latest handshake: 16 seconds ago
transfer: 180 B received, 420 B sent
persistent keepalive: every 25 seconds
peer: VxcuW+7KMQN4knBfC8TA9fC3coPoUNvivU22Tk35bgo=
endpoint: 192.168.0.90:51820
allowed ips: 198.51.100.2/32
latest handshake: 20 seconds ago
transfer: 180 B received, 272 B sent
persistent keepalive: every 25 seconds
/etc/pve/priv/wg-keys.cfg при сохранении интерфейса. Соответствующий публичный ключ сохраняется вместе с конфигурацией интерфейса в фабрике WireGuard и используется для отображения в веб-интерфейс при редактировании узла. При удалении интерфейса соответствующий приватный ключ также удаляется из wg-keys.cfg в рамках того же API-вызова.
#pvesh create /cluster/sdn/fabrics/fabric\ --id wg \ --protocol wireguard \ --persistent_keepalive 25 #pvesh get /cluster/sdn/fabrics/fabric/wg --output-format yaml--- digest: 2c28ab53ac729ad29189e4f2a52a548d942e25415488ab4c30d1d676dc707005 id: wg persistent_keepalive: 25 protocol: wireguard id: wg
#pvesh create /cluster/sdn/fabrics/node/wg\ --node_id pve01 --protocol wireguard --role internal \ --interfaces name=wg2,ip=150.50.0.1/32,listen_port=51821 \ --endpoint 192.168.0.186 #pvesh create /cluster/sdn/fabrics/node/wg\ --node_id pve02 --protocol wireguard --role internal \ --interfaces name=wg2,ip=150.50.0.2/32,listen_port=51821 \ --endpoint 192.168.0.90 #pvesh create /cluster/sdn/fabrics/node/wg\ --node_id pve03 --protocol wireguard --role internal \ --interfaces name=wg2,ip=150.50.0.3/32,listen_port=51821 \ --endpoint 192.168.0.70
#pvesh set /cluster/sdn/fabrics/node/wg/pve01 --protocol wireguard\ --peers iface=wg2,node=pve02,type=internal,node_iface=wg2 \ --peers iface=wg2,node=pve03,type=internal,node_iface=wg2 \ --interfaces name=wg2,ip=150.50.0.1/32,listen_port=51821 #pvesh set /cluster/sdn/fabrics/node/wg/pve02 --protocol wireguard\ --peers iface=wg2,node=pve03,type=internal,node_iface=wg2 \ --peers iface=wg2,node=pve01,type=internal,node_iface=wg2 \ --interfaces name=wg2,ip=150.50.0.2/32,listen_port=51821 #pvesh set /cluster/sdn/fabrics/node/wg/pve03 --protocol wireguard\ --peers iface=wg2,node=pve01,type=internal,node_iface=wg2 \ --peers iface=wg2,node=pve02,type=internal,node_iface=wg2 \ --interfaces name=wg2,ip=150.50.0.3/32,listen_port=51821
# pvesh get /cluster/sdn/fabrics/node/wg --output-format yaml
---
- digest: a38ab69cd7a07ed73f23a070b446eaa1dc663516734169280432234b5d212b6f
endpoint: 192.168.0.186
fabric_id: wg
interfaces:
- name=wg2,listen_port=51821,public_key=lz/I7U9p8//g+JH4jk5E2TQZO9lJfOUOX5MgMCGBaUc=,ip=150.50.0.1/32
node_id: pve01
peers:
- type=internal,node=pve02,node_iface=wg2,iface=wg2
- type=internal,node=pve03,node_iface=wg2,iface=wg2
protocol: wireguard
role: internal
- digest: a38ab69cd7a07ed73f23a070b446eaa1dc663516734169280432234b5d212b6f
endpoint: 192.168.0.90
fabric_id: wg
interfaces:
- name=wg2,listen_port=51821,public_key=/kMeSUnr76FE+iPu39NMZcvYqMM8ovjClNJ+BJ76cRA=,ip=150.50.0.2/32
node_id: pve02
peers:
- type=internal,node=pve03,node_iface=wg2,iface=wg2
- type=internal,node=pve01,node_iface=wg2,iface=wg2
protocol: wireguard
role: internal
- digest: a38ab69cd7a07ed73f23a070b446eaa1dc663516734169280432234b5d212b6f
endpoint: 192.168.0.70
fabric_id: wg
interfaces:
- name=wg2,listen_port=51821,public_key=zH6M9GsD1i41cjW7luP3z1i8dXl9L1q9pT4ZYpPQmCE=,ip=150.50.0.3/32
node_id: pve03
peers:
- type=internal,node=pve01,node_iface=wg2,iface=wg2
- type=internal,node=pve02,node_iface=wg2,iface=wg2
protocol: wireguard
role: internal
# pvesh set /cluster/sdn
/etc/pve/sdn/fabrics.cfg:
wireguard_fabric: wg wireguard_node: wg_pve01 endpoint 192.168.0.186 interfaces name=wg2,listen_port=51821,public_key=lz/I7U9p8//g+JH4jk5E2TQZO9lJfOUOX5MgMCGBaUc=,ip=150.50.0.1/32 peers type=internal,node=pve02,node_iface=wg2,iface=wg2 peers type=internal,node=pve03,node_iface=wg2,iface=wg2 role internal wireguard_node: wg_pve02 endpoint 192.168.0.90 interfaces name=wg2,listen_port=51821,public_key=/kMeSUnr76FE+iPu39NMZcvYqMM8ovjClNJ+BJ76cRA=,ip=150.50.0.2/32 peers type=internal,node=pve03,node_iface=wg2,iface=wg2 peers type=internal,node=pve01,node_iface=wg2,iface=wg2 role internal wireguard_node: wg_pve03 endpoint 192.168.0.70 interfaces name=wg2,listen_port=51821,public_key=zH6M9GsD1i41cjW7luP3z1i8dXl9L1q9pT4ZYpPQmCE=,ip=150.50.0.3/32 peers type=internal,node=pve01,node_iface=wg2,iface=wg2 peers type=internal,node=pve02,node_iface=wg2,iface=wg2 role internal


Примечание

Примечание
Примечание

$ ip -br a | grep dummy_
dummy_bgp-mesh UNKNOWN 10.10.0.1/32 fe80::44cd:10ff:fe70:6081/64
Примечание
vtysh. Соседей и маршруты BGP можно увидеть с помощью следующих команд:
# vtysh -c "show openfabric neighbor"
# vtysh -c "show openfabric route"
Примечание