我們正在嘗試將一個帶有雙 LAN 卡(比方說外部和內部)的盒子放在一起,其中內部 LAN 卡應該充當其所連接的網路上的預設閘道。
這個盒子運行的是 Ubuntu。該框的基本目的是獲取內部網路上產生的訊息,對它們進行一些處理,然後將它們從外部 LAN 卡轉發到伺服器。內部網路完全隔離,只需一個常規交換器將內部 LAN 卡與其他兩個盒子連接起來。
這些其他盒子要么拋出多播訊息(內部 LAN 卡正在偵聽),要么發送針對不在該內部網路上的伺服器的單播訊息。因此,我們需要內網卡作為預設網關,然後將這些單播訊息傳送到該網關,然後雙網卡盒上的程式碼可以攔截這些訊息並將其轉發到伺服器。
問題: 1. 如何將網路卡設定為預設閘道(Ubuntu 上是否需要進行一些設定)? 2. 一旦我們完成了這個設置,監聽介面來攔截傳入的訊息是不是很簡單?
任何幫助(正確方向的指示)將不勝感激。
謝謝。
答案1
您無需在 NIC 上進行任何特殊配置即可將其設為預設網關。您只需將內部 LAN 中的機器配置為使用此 NIC IP 作為預設閘道即可。
若要在兩個子網路之間路由封包,您需要使用下列命令啟用 IPv4 轉送:
# echo 1 > /proc/sys/net/ipv4/ip_forward (as root)
若要使其永久生效,請編輯該文件/etc/sysctl.conf
並取消註解該行:
net.ipv4.ip_forward=1
對於封包攔截,可以用C/C++編寫程式。您可以使用 libpcap 取得到達內部 NIC 的流量並執行您需要執行的任何處理。我無法提供更多詳細信息,因為我不知道您想要執行的處理類型。