|
Elite Member
|
回覆: 回覆: 【求助】有誰知道怎麼做到像seednet的『帳號未開通時的連線畫面』?看不懂嗎....直接近來看看�
引用:
Originally posted by 8:5
要強迫瀏覽任何網頁都轉到特定網頁, 有兩種方式:
1. 用 policy based routing (PBR):
在 router 上, 只放行登錄過的 (source) IP addresses.
尚未登錄的將 (destination) port 80 轉到登錄的網站, 非 port 80 的一律 deny. (domain, bootp, ... 除外)
網頁程式在使用者登錄後, 則連到 router 將他的 (source) IP addr. 放行.
(因為需要依據 source IP addr. 來做 routing, 所以需要啟動 PBR)
|
不過router似乎不適合做這類苦工(一般ASIC只能處理單純的packet forwarding,access list/policy routing得由CPU處理,但一般router的CPU都不是很高檔,再加上要動態update其config,後果如何要試了才知道  ),在學術網路等traffic大的網路上恐怕跑起來會很吃力  ....
引用:
2. 用 DNS 來控制.
在 router 上, 將 (destination) port 53 轉到一台特定的 DNS server.
尚未登錄的 IP addr. 查任何 domain時, 都會解成登錄的網站的 IP addr.,
網頁程式在使用者登錄後, 則連到 router (及 DNS server)將他的 IP addr. 放行.
(router 上不需啟動 PBR, 以 DNS server 依據 client端的不同來做類似的工作....)
|
應該是把unknown client的DNS request redirect到另一部只提供fake answer的DNS server即可(以不變動一般DNS server的實作為原則,不過router要如何分辨unknown client恐怕還是得動到policy routing,問題還是跟前面一樣  )....BTW,遇到user直接打ip address恐怕就破功了(default得drop unknown traffic  )...
引用:
外面有公司在寫這種系統, 包含您提到的後續的 (即時) 監控管制的自動化.
如果只是要讓使用者每次上網前一定要先登錄.
個人曾架過 linux router/bridge,
以 iptables + apache + php + radtest(radius client) 寫過...
程式還滿短的...
|
弟在pczone也是建議原發文者試試transparent mode firewall配合類似TP的方式(對其現有網路架構的impact最小  )....BTW,這類方式說穿了只是以mac address(頂多再加上ip address)來判斷放行與否,因為只知user上網的時點,而不知其何時offline好把ACCEPT rule拿掉,再加上在LAN中要偽造ip/mac address也不是難事,並不是很可靠,另外雖說在LAN上也能跑PPPoE,但這實在不是個好主意  ....
__________________
士大夫之無恥,是謂國恥   ....
|