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

查看連接,用戶會(huì)發(fā)現(xiàn)有2個(gè)系統(tǒng)默認(rèn)的連接。這兩個(gè)連接屬于【動(dòng)態(tài)生成的連接】,一開(kāi)始通過(guò)查看連接參數(shù)配置目錄,會(huì)發(fā)現(xiàn)沒(méi)有其對(duì)應(yīng)的配置文件。
ls /etc/NetworkManager/system-connections/

因?yàn)椤緞?dòng)態(tài)生成的連接】是不會(huì)產(chǎn)生對(duì)應(yīng)的【配置文件】。因此要配置這種【連接】的話,要么是通過(guò)桌面窗口,要么通過(guò)nmcli命令(nmcli connection modify
. )進(jìn)行配置。這兩種方式對(duì)于應(yīng)用程序來(lái)說(shuō),都不是很方便,因此我們選擇第三種方式進(jìn)行管理:創(chuàng)建新的Connection。
1.2 創(chuàng)建Connection
創(chuàng)建新的連接,命令如下所示:
nmcli connection add type ethernet ifname end0 con-name "eth0-con"
查看新的連接以及其對(duì)應(yīng)的配置文件:
nmcli connection show ls /etc/NetworkManager/system-connections/

1.3 激活Connection
命令方式激活:
nmcli connection up eth0-con
或者
nmcli connection up 41009a81-5d67-4a11-a6ec-fbf95ca3e41b
注意:如果出現(xiàn)下方提示:

說(shuō)明板卡找不到路由器(DHCP服務(wù)),請(qǐng)調(diào)整【網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)】或者接著看下一小節(jié)怎么配置靜態(tài)IP
1.4 修改Connection
采用下方命令打開(kāi)Connection所對(duì)應(yīng)的配置文件
sudo vim /etc/NetworkManager/system-connections/eth0-con.nmconnection

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

2. 快速上手
2.1 例程源碼下載
到【百度網(wǎng)盤(pán)】上下載相關(guān)的單例程序:
鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234
提取碼: 1234
比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無(wú)規(guī)定,用戶可自主選擇),如下圖所示。

然后把例程【復(fù)制粘貼】到nfs掛載目錄中。(不清楚目錄如何構(gòu)建的,可以參考《入門(mén)指南/開(kāi)發(fā)環(huán)境準(zhǔn)備/nfs服務(wù)搭建與掛載》)

2.2 例程編譯&運(yùn)行
通過(guò)adb shell進(jìn)入開(kāi)發(fā)板環(huán)境(不清楚如何通過(guò)adb進(jìn)行調(diào)試,可以參考《入門(mén)指南/開(kāi)發(fā)板調(diào)試方式介紹/adb調(diào)試》),執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。
cd /home/orin-nano/Desktop/nfs/01_network/ ./build.sh

編譯成功后,相關(guān)的demo會(huì)生成在Release目錄下。
執(zhí)行下方命令以運(yùn)行demo,如下所示。
sudo ./Release/test-ethernet
執(zhí)行效果如下所示。

如果出現(xiàn)如下現(xiàn)象,則說(shuō)明配置文件未被創(chuàng)建??梢?strong>回看本文第一章,了解一下如何創(chuàng)建Connection。

2.3 注意
程序運(yùn)行完畢以后,只是修改了Connection的配置參數(shù),參數(shù)也不會(huì)馬上生效。要使修改后的參數(shù)生效,還需要重啟NetworkManager,以及激活相關(guān)的Connection。兩個(gè)步驟的命令如下。
sudo systemctl restart NetworkManager nmcli connection up eth0-con
3. C語(yǔ)言使用案例
3.1 配置文件內(nèi)容介紹
NetworkManager的配置文件位于系統(tǒng)的/etc/NetworkManager/system-connections/目錄下,采用了經(jīng)典的ini組織格式。即section、key、value格式,如下所示:
[section] key = value
規(guī)則:section不能嵌套section;同一section下key不能重名。
3.2 配置文件操作介紹
網(wǎng)絡(luò)配置的C語(yǔ)言使用案例,代碼地址為01_network/test-ethernet/main.c,供用戶編碼參考。
以下代碼展示了對(duì)Connection的基本配置操作流程:
int main(int argc, char const *argv[])
{
char configFile[512]={0};
sprintf(configFile,"%s%s", CONFIG_PATH, CFG_ETH0);
// 讀取配置項(xiàng)
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"));
// 寫(xiě)入配置
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()函數(shù)和ini_write_string()函數(shù)是對(duì)libini的這個(gè)第三方庫(kù)一些接口的簡(jiǎn)單封裝,具體實(shí)現(xiàn)于01_network/common_api/ini_wrapper.c。
若用戶需要如demo一樣地引用這個(gè)第三方庫(kù),需要注意以下兩點(diǎn)。
* 需要包含頭文件:#include 。
* 編譯時(shí),需要加上-lini作為編譯參數(shù)。
若用戶對(duì)這個(gè)第三方庫(kù)的源碼感興趣,可以訪問(wèn):
* https://sourceforge.net/projects/libini/files/libini/libini-1.1.10/
審核編輯 黃宇
-
網(wǎng)絡(luò)通信
+關(guān)注
關(guān)注
4文章
830瀏覽量
32398 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
6122瀏覽量
113295 -
rk3576
+關(guān)注
關(guān)注
1文章
228瀏覽量
1370
發(fā)布評(píng)論請(qǐng)先 登錄
【作品合集】米爾RK3576開(kāi)發(fā)板測(cè)評(píng)
基于RK3576開(kāi)發(fā)板的MIPI-DSI使用
【米爾RK3576開(kāi)發(fā)板評(píng)測(cè)】+項(xiàng)目名稱值得購(gòu)買(mǎi)的米爾RK3576開(kāi)發(fā)板
ArmSoM RK3588/RK3576核心板,開(kāi)發(fā)板網(wǎng)絡(luò)設(shè)置

基于RK3576開(kāi)發(fā)板的以太網(wǎng)口網(wǎng)絡(luò)通信
評(píng)論