Xen
SSPN(單伺服器專用網路)上的 Xen 自動 dom0 IP 分配
我目前正在使用 XCP-ng 7.6.3,並且想要增加一點安全性並利用流量整形,我決定 PCI 直通 NIC。為了能夠訪問 dom0,我創建了一個僅在 dom0 和位於 domU 中的防火牆之間共享的 SSPN。啟動 domU 會生成一個
vif<X>.<Y>
附加的虛擬介面xapi<Z>
,通過手動為後者分配 IP,我可以在管理中進行遠端管理。到目前為止,一切都很好,一切都按預期工作。問題是我發現沒有辦法讓 dom0 在啟動虛擬介面時自動為自己分配 IP。我一直在查看 XCP、Xen 和 XenServer 文件很長時間,但只能找到自動為另一端的 domU 分配 IP 的方法,而不是 dom0。是否可以自動執行此操作?
如果不是通過 xapi/XCP 配置,是否有辦法(甚至腳本化)以程式方式將靜態 IP 附加到生成的介面,即使介面以不同的名稱生成?
任何指針表示讚賞。
經過幾天的修補,我得出結論,這是可能的。我在 dom0 中存在的 XenAPI python 模組的幫助下用 python 製作了一個服務。儲存庫在這裡,資訊和手冊參考在這裡。
簡而言之,如下所示的片段:
with xenapi_session() as x: vms = x.VM.get_all_records() # Get a list of VMs for multiple uses # Find the ObscureRef of the target VM vmref = [k for k in vms.keys() if vms[k]['name_label'] == VMNAME][0] # Non-blocking listen for VM events token = '' # Initial token while bEndless: output = x.event_from(['VM'], token, EVT_TIMEOUT) token = output['token'] # Current token for event in output['events']: # Check the IP assigned to the VIFs of the target VM, if it's running if (('add' == event['operation']) or ('mod' == event['operation'])) and \ (vmref == event['ref']) and \ ('Running' == x.VM.get_power_state(vmref)): if 'snapshot' not in event: continue vifs = event['snapshot']['VIFs'] # Virtual interfaces list for vif in vifs: net = x.VIF.get_network(vif) # Network ref netrec = x.network.get_record(net) # Network record if SSPNNAME != netrec['name_label']: continue # netrec['bridge'] holds the xapiN identifier that can # be used with "ip addr add" rebind_ip_address(netrec['bridge'])
(幾乎)是您製作一項符合我最初要求的服務所需的一切。最後,我在我的伺服器中添加了一些更有用的功能,例如自動 NFS/CIFS SR 重新掛載,但我不會在這裡跑題,因為它會跑題。