官方不支援 CompactRIO 控制器的一個網路介面上的多個 IP。
然而,對於在 NI Linux 上運行的所有 CompactRIO 控制器(例如 cRIO-9038),都有一個解決方案。以下是實施步驟。 cRIO-9038 有兩個網路介面 (NIC)。在此範例中, eth0 將用作配置接口, eth1 作為連接到客戶端的公共接口。一般來說,此設定也適用於單一 NIC。
- 使用 NIMeasurement & Automation Explorer (MAX) 將eth0配置為具有靜態 IP或使用DHCP 。
- 使用 MAX 將eth1配置為靜態並設定在此網路卡上使用的第一個 IP(例如 10.0.0.99)
- 使用 MAX 驗證 SSH 是否已啟用(啟用 Secure Shell Server (sshd)處的複選標記)。
- 驗證是否存在具有設定密碼的使用者。
- 透過SSH 存取cRIO(例如使用putty)。
- 編輯 /etc/natinst/networking/ifplugd.script 以定義其他 IP。您可以使用 NI Linux 上提供的編輯器 vi 來執行此操作:
- 使用指令 vi /etc/natinst/networking/ifplugd.script 啟動編輯器
- 按 i 切換到編輯模式
- 將此部分直接插入 update_interface_info $INTERFACE 行之前:
if [ "$INTERFACE"=="eth1" ]; then
ip addr add 10.0.0.100/8 dev eth1;
ip addr add 10.0.0.101/8 dev eth1;
ip addr add 10.0.0.102/8 dev eth1;
fi
注意:將 eth1 變更為您正在使用的介面,例如 eth0 。根據需要新增更多 IP 線路。不要意外地重複使用您在 MAX 中設定的「第一個 IP」。
- 按 Esc 鍵退出編輯模式。
- 輸入:wq 並按 Enter 鍵儲存並退出( :q! + Enter 鍵退出而不儲存)。
- 將網路線插入 eth1 以將網路連接埠連接到某物(例如交換器),或如果之前連接過,請將其拔出並重新插入。現在 NIC 應該擁有您定義的所有 IP。
- 使用 ip add list eth1 進行檢查。
現在您應該能夠使用所有不同的 IP 位址連接到 CompactRIO。例如,多個 MMS 伺服器可以同時運行,每個伺服器具有不同的 IP。
附加資訊
-
在變更 cRIO 網路設定時務必小心,因為任何錯誤都可能導致受影響的網路介面(NIC)中斷所有網路流量,包括 SSH 連線。這是一般的設定限制,並非 cRIO 或 NI Linux 的限制。
-
類似 ip addr add 10.0.0.100/8 dev eth1 的指令可直接在 shell(Linux 指令列)中使用,臨時變更 NIC 的設定。但此變更會在網路線被拔除、連線被重置(例如另一端交換器重新啟動)、或 cRIO 重新開機時被重置。
-
MAX 不會顯示額外設定的 IP 位址。
-
使用 MAX 變更「第一個 IP」的設定時,不會刪除額外設定的 IP 位址。
-
/etc/issue 不會顯示額外設定的 IP 位址。
-
本方法已在 NI cRIO-9065 測試過。
#admin@cRIO-9065-ik: cat /proc/version
Linux version 4.6.7-rt14-ni-5.0.0f0 (lvbuild@2017RTLin.amer.corp.natinst.com) (gcc version 4.7.2 (GCC) ) #1 SMP PREEMPT RT Fri Mar 10 02:40:15 CST 2017
- 當在單一 NIC 上使用來自多個子網的 IP 位址時,外部網路硬體必須能夠將多個子網路導向同一個網路介面。在這種情況下,使用 VLAN 可能會更方便。