簡體   English   中英

在兩個NIC Linux系統中的特定NIC上執行連接

[英]Perform Connect on specific NIC in a two NIC Linux system

商業案例:

這是2015年,我正在使用Linux內核3.17。 我的ARM Linux有兩個NIC,eth0和eth1。 eth0用於本地配置,供其旁邊的人使用,eth1用於遠程配置。 因此它們基本上是相同的功能,除了eth0在現場有人插電纜。

本地PC ------ [eth0我的ARM Linux計算機eth1] ------遠程PC

使用eth0,PC軟件可以配置eth1 IP地址和端口以進行配置。 為此,我的eth0具有一個預設的IP地址(192.168.1.2),因此PC軟件可以輕松找到它。 ARM Linux(3.17)應用程序需要偵聽eth0端口A和eth1端口B(如果已配置),並且一旦連接便會響應,但永遠不會啟動任何活動(甚至無法ping)。

本地PC和遠程PC之間沒有連接。 它們不應該被橋接或聯網。

問題1:

如果eth1配置了與eth0相同的IP,我的應用程序是否仍然能夠在兩個NIC端口上偵聽並正確響應? 我將有兩個獨立的線程(也許功能相同,但參數不同)來監聽兩個NIC端口。

這就是為什么我問是否可以在連接時指定NIC並作出響應的原因,因為現在您可以看到它們可能具有相同的IP地址。 理想情況下,OS知道連接請求的來源,因此即使兩個NIC具有相同的IP(只要它們具有不同的以太網地址),它也應該知道答復的方式。 但是,當我偵聽和回復時,C ++ 11或Berkeley模型是否允許我指定eth0或eth1?

現在,本地PC和遠程PC也可以具有相同的IP地址(但與ARM Linux不同)。 但是,假設我有兩台ARM Linux計算機,則此配置完全可以。 但是不幸的是,我只有一個嵌入式系統和一個帶有eth0和eth1的操作系統。

問題2:

如果對問題1的回答為“否”,那么它們可以具有相同的子網掩碼嗎? 另外,本地PC和遠程PC可以具有相同的IP地址嗎?

假設條件

如果可行,設置路由表是一種解決方案。 我想知道這是否可行,以及是否建議不要這樣做。

另外,這是Linux。 很久以前,對於Windows,有人問過類似的問題,而Windows XP說(否),我使用的是Linux 3.17,並且我具有相同的IP地址,因此與類似的問題有所不同。

在系統級別,您可以在中介框上配置網橋。 它在網橋的兩端可以具有相同的IP地址,並且可以使用iptables鎖定它以僅響應特定的TCP / UDP端口。

您不能在網橋的兩側使用相同IP地址的系統(即,本地PC和遠程PC不能具有相同的IP地址)。 您可以使用ebtables將網橋任一側的訪問限制為網橋本身的IP地址,這意味着本地pc只能與中介框對話,而遠程pc只能與中介框對話。

這是基於從未期望本地計算機和遠程計算機互相通信。

不過,它主要是一個系統管理員的解決方案,實際上並沒有一個API可以用作開發人員來完成相同的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM