[英]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之間沒有連接。 它們不應該被橋接或聯網。
如果eth1配置了與eth0相同的IP,我的應用程序是否仍然能夠在兩個NIC端口上偵聽並正確響應? 我將有兩個獨立的線程(也許功能相同,但參數不同)來監聽兩個NIC端口。
這就是為什么我問是否可以在連接時指定NIC並作出響應的原因,因為現在您可以看到它們可能具有相同的IP地址。 理想情況下,OS知道連接請求的來源,因此即使兩個NIC具有相同的IP(只要它們具有不同的以太網地址),它也應該知道答復的方式。 但是,當我偵聽和回復時,C ++ 11或Berkeley模型是否允許我指定eth0或eth1?
現在,本地PC和遠程PC也可以具有相同的IP地址(但與ARM Linux不同)。 但是,假設我有兩台ARM Linux計算機,則此配置完全可以。 但是不幸的是,我只有一個嵌入式系統和一個帶有eth0和eth1的操作系統。
如果對問題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.