![家庭網路僅接受來自 LAN 的某些 MAC 位址](https://rvso.com/image/1267885/%E5%AE%B6%E5%BA%AD%E7%B6%B2%E8%B7%AF%E5%83%85%E6%8E%A5%E5%8F%97%E4%BE%86%E8%87%AA%20LAN%20%E7%9A%84%E6%9F%90%E4%BA%9B%20MAC%20%E4%BD%8D%E5%9D%80.png)
我有 Ubuntu 10 作為具有 WAN(eth0) 和 LAN(eth1) 的路由器。如何限制 eth1 只接受來自某些 MAC 位址的封包並丟棄其餘封包?我還準備為某些 MAC 位址設定 DHCP,但是任何人都可以手動設定 IP 位址。我自己有 4-6 台可以使用網路的設備。
答案1
正如我在評論中提到的,我不認為這會給你帶來任何真正的安全性,甚至比基於 IP 的阻止更安全,但這樣的事情應該可以做到:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
當然,假設您的預設策略是 DROP。
答案2
這是您的開始:
iptables -P FORWARD DROP
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT
iptables -P INPUT DROP
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT
XX:XX:XX:XX:XX:XX
除和之外的所有 MAC 位址XX:XX:XX:XX:XX:BB
都將無法存取您的路由器或網際網路。
答案3
( 我是用戶63709;不知何故,我的 Google OpenID 登入名稱和 MyOpenID 登入名稱被分開了,而在 Stack Overflow 中實際上是相同的)
arptables
有自己的政策。做不是請將其與iptables
的政策混淆。
既然你想「限制[原文如此] eth1 僅接受來自某些 MAC 位址的封包並丟棄其餘的”,您將想預設的 DROP 策略。
(順便說一句,我在上面的 arptables 規則中犯了一個小錯誤。它們應該是:)
arptables -P IN DROP
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
... and so on ...
(再次注意,IN
是一個內建鏈具體來說僅在 arptable 中找到。讀arptables 的手冊頁了解更多)。
答案4
Michael,您不能為每個規則指定多個 mac 來源,因此您將需要一組如下所示的規則(如果您要使用 iptables)
#Rules for allowing your mac addresses
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A FORWARD -i eth1 -j DROP
請注意,這些位於 FORWARD 鏈中且不是輸入鏈。將這些規則放在 FORWARD 鏈中,您的 Linux 路由器將不允許除允許的 Mac 之外的任何 Mac 透過路由器發送或接收任何流量。他們仍然能夠與與自己位於同一子網路上的電腦進行通訊(因為這不需要它們通過路由器)。
您也可以透過複製輸入鏈的上述規則來控制誰可以連接到您的路由器。
#Rules for allowing your mac addresses
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A INPUT -i eth1 -j DROP
閱讀您對有關 FORWARD 和 INPUT 適用情況的其他簡短答案之一的評論,這裡有一個簡短的解釋。
向前僅適用於資料包透過您的路由器到其他子網路或外部世界(透過 WAN)介面。輸入適用於注定要在路由器本身上終止的封包(例如,到路由器/linux 盒子本身的 SSH 連線)。