Php

PHP/Ruby 強制門戶第一個域似乎已記憶體

  • September 29, 2014

我用 iptables 創建了一個強制門戶

我使用許多人似乎使用的:使用者可以請求 DNS,數據包標記為 99。99 表示沒有網際網路,否則使用者可以訪問。

當使用者訪問頁面時訪問例如堆棧溢出。使用者獲得免責聲明。他/她點擊確定。發生的事情是伺服器執行以下規則:

`sudo /sbin/iptables -t mangle -I captivePortal 1 -m mac --mac-source {$mac} -j RETURN`;
   `sudo /sbin/iptables -t mangle -I captivePortal 1 -s {$_SERVER['REMOTE_ADDR']} -j RETURN`;

我試過的:

用過的sinatra 單用瘦。使用 erb 渲染模板。當使用者在驗證後重新載入時,他們會在訪問初始域時獲得免責聲明。當訪問另一個他們沒有得到免責聲明頁面。

用php設置apache2,全部用php重寫。添加了元標記以防止在瀏覽器中記憶體但結果相同。原始域總是重定向到免責聲明,但其他站點還可以。

我想要達到的目標

使用者需要在免責聲明中點擊接受才能使用WIFI。

重新載入 apache2 或重新啟動 Sinatra 確實可以解決此問題,但這在低端 alix 板上不是正確的解決方案。

發現將mac地址插入iptables後,我需要使用conntrack。

/usr/sbin/conntrack -L \
|grep $1 \
|grep ESTAB \
|grep 'dport=80' \
|awk \
   "{ system(\"conntrack -D --orig-src $1 --orig-dst \" \
       substr(\$6,5) \" -p tcp --orig-port-src \" substr(\$7,7) \" \
       --orig-port-dst 80\"); }"

http://aryo.info/labs/captive-portal-using-php-and-iptables.html

引用自:https://serverfault.com/questions/632113