1. 網絡配置簡介
本文著重介紹如何通過配置文件配合命令行來修改網絡參數,以及如何通過程序來修改配置文件。若用戶僅想了解如何【通過桌面窗口】配置網絡,或者想知道【為什么】debian系統采用NetworkManager這種方式配置網絡,可以閱讀《Linux網絡配置方法介紹》。
NetworkManager對應的命令行工具是:nmcli和nmtui。由于這兩個工具功能過于強大和復雜,本文檔只會描述涉及到的使用方法以及參數。更全面的使用,還請用戶自行查閱NetworkManager官方相關文檔。
1.1 Connection
Connection:連接,是網絡配置的抽象表示。NetworkManager 允許用戶配置多個不同類型的Connection,每個Connection會與UUID進行唯一綁定。用戶根據需要切換或管理這些Connection。這使得在不同網絡環境下靈活地管理網絡連接成為可能,例如在家庭網絡、公司網絡、公共Wi-Fi熱點和VPN之間切換。
查看連接的命令如下所示。
nmcli connection show

查看連接,用戶會發現有2個系統默認的連接。這兩個連接屬于【動態生成的連接】,一開始通過查看連接參數配置目錄,會發現沒有其對應的配置文件。
ls /etc/NetworkManager/system-connections/

因為【動態生成的連接】是不會產生對應的【配置文件】。因此要配置這種【連接】的話,要么是通過桌面窗口,要么通過nmcli命令(nmcli connection modify
. )進行配置。這兩種方式對于應用程序來說,都不是很方便,因此我們選擇第三種方式進行管理:創建新的Connection。
1.2 創建Connection
創建新的連接,命令如下所示:
nmcli connection add type ethernet ifname end0 con-name "eth0-con"
查看新的連接以及其對應的配置文件:
nmcli connection show ls /etc/NetworkManager/system-connections/

1.3 激活Connection
命令方式激活:
nmcli connection up eth0-con
或者
nmcli connection up 41009a81-5d67-4a11-a6ec-fbf95ca3e41b
注意:如果出現下方提示:
說明板卡找不到路由器(DHCP服務),請調整【網絡拓撲結構】或者接著看下一小節怎么配置靜態IP
1.4 修改Connection
采用下方命令打開Connection所對應的配置文件
sudo vim /etc/NetworkManager/system-connections/eth0-con.nmconnection

比如要配置成靜態IP地址(特別是板卡與PC直連的情況),就要改成:
[ipv4] method=manual addresses=xxx.xxx.x.xxx/24
修改完畢后,請用下方重啟網絡服務,并激活網卡。
sudo systemctl restart NetworkManager nmcli connection up eth0-con
1.5 刪除Connection
刪除連接,命令如下所示:
nmcli connection delete 41009a81-5d67-4a11-a6ec-fbf95ca3e41b

2. 快速上手
2.1 例程源碼下載
到【百度網盤】上下載相關的單例程序:
鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234
提取碼: 1234
比如在windows環境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規定,用戶可自主選擇),如下圖所示。
然后把例程【復制粘貼】到nfs掛載目錄中。(不清楚目錄如何構建的,可以參考《入門指南/開發環境準備/nfs服務搭建與掛載》)
2.2 例程編譯&運行
通過adb shell進入開發板環境(不清楚如何通過adb進行調試,可以參考《入門指南/開發板調試方式介紹/adb調試》),執行下方命令定位到demo目錄,并且執行編譯操作。
cd /home/orin-nano/Desktop/nfs/01_network/ ./build.sh

編譯成功后,相關的demo會生成在Release目錄下。
執行下方命令以運行demo,如下所示。
sudo ./Release/test-ethernet
執行效果如下所示。
如果出現如下現象,則說明配置文件未被創建。可以回看本文第一章,了解一下如何創建Connection。
2.3 注意
程序運行完畢以后,只是修改了Connection的配置參數,參數也不會馬上生效。要使修改后的參數生效,還需要重啟NetworkManager,以及激活相關的Connection。兩個步驟的命令如下。
sudo systemctl restart NetworkManager nmcli connection up eth0-con
3. C語言使用案例
3.1 配置文件內容介紹
NetworkManager的配置文件位于系統的/etc/NetworkManager/system-connections/目錄下,采用了經典的ini組織格式。即section、key、value格式,如下所示:
[section] key = value
規則:section不能嵌套section;同一section下key不能重名。
3.2 配置文件操作介紹
網絡配置的C語言使用案例,代碼地址為01_network/test-ethernet/main.c,供用戶編碼參考。
以下代碼展示了對Connection的基本配置操作流程:
int main(int argc, char const *argv[]) { char configFile[512]={0}; sprintf(configFile,"%s%s", CONFIG_PATH, CFG_ETH0); // 讀取配置項 printf("type = %sn", ini_read_string(configFile, "connection", "type")); printf("name = %sn", ini_read_string(configFile, "connection", "interface-name")); printf("method = %sn", ini_read_string(configFile, "ipv4", "method")); printf("DNS = %sn", ini_read_string(configFile, "ipv4", "dns")); // 寫入配置 ini_write_string(configFile, "ipv4", "dns", "8.8.8.8"); printf("n======================= modify DNS =======================n"); printf("DNS = %sn", ini_read_string(configFile, "ipv4", "dns")); return 0; }
其中 ini_read_string()函數和ini_write_string()函數是對libini的這個第三方庫一些接口的簡單封裝,具體實現于01_network/common_api/ini_wrapper.c。
若用戶需要如demo一樣地引用這個第三方庫,需要注意以下兩點。
* 需要包含頭文件:#include 。
* 編譯時,需要加上-lini作為編譯參數。
若用戶對這個第三方庫的源碼感興趣,可以訪問:
* https://sourceforge.net/projects/libini/files/libini/libini-1.1.10/
審核編輯 黃宇
-
網絡通信
+關注
關注
4文章
824瀏覽量
30745 -
開發板
+關注
關注
25文章
5525瀏覽量
102322 -
rk3576
+關注
關注
1文章
145瀏覽量
562
發布評論請先 登錄
基于RK3576開發板的MIPI-DSI使用

【米爾RK3576開發板評測】+項目名稱值得購買的米爾RK3576開發板
ArmSoM RK3588/RK3576核心板,開發板網絡設置

評論