您可以使用ARP poisoning
http://zh.wikipedia.org/wiki/ARP%E6%AC%BA%E9%A8%99
網路上有工具可以實現您所想要的架構
但是後續需要技術及資源
可以建議您詢問有關資安專家
或白帽駭客
另外~為什麼要過濾內網封包...
如果您是要實現監聽內網封包
您可以使用WireShark,將網卡開成混合模式..
即可監聽
還是要確認您的需求,才能實際解決你的問題
funforever提到:
您可以使用ARP poisoning
一般ARP poisoning只會用在攔截對gateway的traffic,拿來攔截LAN中的所有traffic恐怕不太實際,假設有30個node好了,那FW就得對其他29個node都發出28筆偽造的ARP response,以Linux的ARP cache只會保留一分鐘為例,那FW每分鐘就得送出812次偽造的ARP response了,不論是對其CPU或NIC的loading貢獻度都不小,而且還無法保證一定work就是了....
cmwang提到:
一般ARP poisoning
是的..
cmwang大有深入了解這一塊
所以才會想說..版主真正需求是什麼
才能給真正有效能低成本的解法...
您可能要先去瞭解一下IP在Ethernet上決定怎麼走的方式,如果是同一個subnet的話(i.e.一般說的內網),就會透過ARP request取得destination的MAC address,然後把IP包在destination欄位是上一個步驟取得的MAC address的Ethernet封包中直接傳送過去,所以不會經過gateway才是正常的(如果每個封包都得過gateway,gateway光應付這堆雞毛蒜皮的小事就夠了),先不管為何要過濾內網的封包,一定要讓其過gateway的方式鵝想得出來的大概有下列幾種....
1:要過濾的node不算太多的話,多切幾個subnet就是了....
2:架proxy(或是SOCKS server),不過遇到不支援的protocol就不work了,而且要是user自己把proxy設定取消掉也沒輒....
3:架PPPoE server,強迫所有node都得跑PPPoE才能連上(i.e.取得IP),就算每個node知道別人的IP還是得透過PPPoE server forwarding才能互連(i.e. IP不是直接跑在Ethernet上的),不過如此一來gateway就變成bottle neck了(而且有single point of failure的風險),另外對嚴重依賴broadcast的protocol而言(主要是指網芳),也有可能會不work....
以上您參考參考吧.....
切網段吧..把 linux 那台 fw 切個網段...pc1 接 linux fw 的 lan1 pc2 接 linux fw 的 lan2 ...這樣不管哪台進出都會經過 fw ..
一般的防火牆是做不到的, Squid也只能處理http, https, ftp, 等對外, 您需要的是Network Access Control, NAC, 一般上是設定Gateway發出 SNMP trap(弱斷, 設陷)給NAC設備, 由NAC來管控內網網路存取.
如果你監聽封包
人數不多的狀況下
你在firewall 和 switch 中間串一台hub
就可以監聽了
所以hub還是很好用的,我都有留一台起來用。
我覺得下面方法應該可行,不過需配合特殊硬體
方法就是使用routerboard裡的bridge功能,將實體port綁成一個bridge
再啟用 ip firewall 過濾 bridge 裡的流量
....
要看 client 的流量,那就買套 client-server 的系統直接灑到每台 client 上
接受統計每個網卡的流量資訊不就結了 -_-
不然弄個有 snmp 的 switch 開 snmp 直接吃交換器吐出來的 port flow 不也行...