Captive portal da farklı dns kullanan bilgisayarlarda login gelmemesi (çözüldü)
-
Teşekkürler,
:)
ama işte merak. diğer hotspot cihazlarda pfsense deki bu durum nasıl? ne kullanıyorlarda hallediyorlar farklı dns kullanma işini?
herkese kolay gele,
Barış.Diğerleri nasıl hallediyor konusuna vakıf değilim ancak pfSense de nasıl işlediğini anlatabilirim… pfSense captiveportal "layer 3" (detaylar için OSI Referans modeline bakınız) seviyesinde, yani tcp/ip seviyesinde işlem yapıyor ve başlamış olan TCP/IP oturumunun (detaylar için RFC793'ü okuyabilirsiniz) arasına giriyor. Bu nedenle bir istemcinin karşılama ekranı görebilmesi için öncelikle bir tcp/ip oturumu başlatması gerekiyor. Bunun içinde öncelikle IP adresi, ağ geçidi, DNS sunucusu almış olması ve DNS sunucuna ulaşabiliyor olması gerekiyor...
Siz web tarayıcınıza web adresi yazdığınızda, TCP/IP oturumunun başlaması için öncelikle yazdığınız alan adının IP adresine çevilirlmesi (detaylar için RFC1034) gerekiyor. Yazdığınız alan adı IP adresine çevirildikten sonra bilgisayarınız ilgili IP adresine bağlantı kurmaya çalşır. Eğer bu noktada ağ geçidiniz captiveportal çalıştıran bir pfSense ise karşınıza meşhur karşılama ekranımız gelir ve kimlik doğrulama yapmanızı ister... Kullanıcı adı ve parolanızı doğru yazdığınızda sizin IP/MAC adresiniz için TCP/IP seviyesindeki her şey yasak kuralını kaldırır ve siz internete erşim kazanırsınız...
Şimdi bu senaryoda biraz geriye gidelim... Web tarayıcısına adresi yazdığımızda eğer DNS sorgusuna cevap alıp yazdığımız adresin IP karşılığınu bulamazsak TCP/IP oturumu başlatılmaz. TCP/IP oturumu başlamadığı için pfSense'in araya girebileceği bir durum ortaya çıkmaz. Çünkü web tarayıcınız ben adresi çözemedim der ve olduğu yerde kalır. Hiç bir yere gitmeye çalışmaz.. Hiç bir yere gitmeyen bir tarayıcıyı farklı bir yere yönlendiremezsiniz... :)
DNS yanlış yada erişilemez olduğunda karşınıza çıkan sorunun nedeni budur. Bu yüzden karşılama ekranı gösterebilmek için DNS erişilebilri olmalıdır ve pfSense gateway konumunda bulunmalıdır... Bu yüzden siz kullanıcının girdiği DNS
@MuratRaci:
Mikrotikte mantık nasıl işliyor bilmiyorum ama
bağlanan cihazın(bilgisayarın) ip adresi, ağ maskesi, ağ geçidi ve dns adresi ne olursa olsun login ekranı geliyor ve login olunca internete girişi sağlıyor.
Ama nasıl olduğunu anlamış edilim. Sonuçta mikrotik 'in içindeki yazılım da bir çeşit *nix türevi.
Saygılar,
Mikrotik nasıl çalışıyor bende bilmiyorum. Eğer dediğiniz gibi ise DNS protokolü kafadan izinli geliyor olabilir veya şu an bilmediğim başka bir yöntem kullanıyor olabilirler. IP adresi, ağ maskesi ne olursa olsun dediğinize göre büyük olasılıkla "Layer 2" seviyesinde işlem yapıyor olabilir varsayımını çıkartıyorum… Uygun bir cihaz ve yeterli zamanı bulursak biraz kurcalar ne yaptığını anlamaya çalışabiliriz...
Aklınıza gelen tüm ağ cihazlarının (router, modem ya da her neyse işte) , android, blackberry ve iphone gibi telefonların, ipod, ipad, mac gibi cihazların, akıllı resim çerçevelerinin ve hatta kısmen de olsa windows işletim sisteminin içinde de Unix türevleri çalışıyor :) Özetle "Bize Her Yer Unix" :)
Saygılarımla...
-
port 53 tunnel acigini kapatmak icin soyle bir yontem deneyebilirsiniz.
1- herhangi bir interface istediginiz bir vlan olusturun.
2- bu vlan icin static ip tanimlamasi yapin.
3- ardindan nat -> port forward yardimi ile dns yonlendirmesi yapmak her interface icin bir kural olusturacagiz.
a- interface secin (orn. LAN)
b- source icin networf girin veya secin.(orn. LAN subet)
c- destination any secin
d- port olarak DNS (53) secin
e- redirect ip icin ayarlamis oldugunuz vlan in static ipsini yazin
f- redirect port icin DNS (53) secin ve kaydedin
dns yonlendirmesi yapmak istediginiz her interface icin tekrarlayin redirect ip ve port ayni olacak sekilde.yardimci olmasi icin resimleri ekliyorum.
butun diger alanlari oldugu gibi birakin.
bunlari yaptiktan sonra captive portal da 53 portuna surekli izin verebilirsiniz. artik sadece sizin general setup da ayarladiginiz dnslere sorgu yapilacak. isterseniz dns forwarder dan domain engelleme dahi yapabilirsiniz.
![vlan add.png](/public/imported_attachments/1/vlan add.png)
![vlan add.png_thumb](/public/imported_attachments/1/vlan add.png_thumb)
![vlan assign.png](/public/imported_attachments/1/vlan assign.png)
![vlan assign.png_thumb](/public/imported_attachments/1/vlan assign.png_thumb)
![interface assign.png](/public/imported_attachments/1/interface assign.png)
![interface assign.png_thumb](/public/imported_attachments/1/interface assign.png_thumb)
![nat 1.png](/public/imported_attachments/1/nat 1.png)
![nat 1.png_thumb](/public/imported_attachments/1/nat 1.png_thumb)
![nat 2.png](/public/imported_attachments/1/nat 2.png)
![nat 2.png_thumb](/public/imported_attachments/1/nat 2.png_thumb)
![nat list.png](/public/imported_attachments/1/nat list.png)
![nat list.png_thumb](/public/imported_attachments/1/nat list.png_thumb) -
selam asbirim.
bu yazdıkların 53 nolu portu dışarıya direk açmadan yapılıyor değil mi? birde denediğini ve herhangi bir sorunla karşılaşmadığınıı varsayıyorum.
port 53 tunnel acigini kapatmak icin soyle bir yontem deneyebilirsiniz.
1- herhangi bir interface istediginiz bir vlan olusturun.
2- bu vlan icin static ip tanimlamasi yapin.
3- ardindan nat -> port forward yardimi ile dns yonlendirmesi yapmak her interface icin bir kural olusturacagiz.
a- interface secin (orn. LAN)
b- source icin networf girin veya secin.(orn. LAN subet)
c- destination any secin
d- port olarak DNS (53) secin
e- redirect ip icin ayarlamis oldugunuz vlan in static ipsini yazin
f- redirect port icin DNS (53) secin ve kaydedin
dns yonlendirmesi yapmak istediginiz her interface icin tekrarlayin redirect ip ve port ayni olacak sekilde.yardimci olmasi icin resimleri ekliyorum.
butun diger alanlari oldugu gibi birakin.
bunlari yaptiktan sonra captive portal da 53 portuna surekli izin verebilirsiniz. artik sadece sizin general setup da ayarladiginiz dnslere sorgu yapilacak. isterseniz dns forwarder dan domain engelleme dahi yapabilirsiniz.
-
hayır daha once bahsettigim yontemdeki gibi 53 portunu ipfw den actiginizi varsayıiyorum. ama 53 portunu natladigimizdan aslinda disariya degil sizin acmis oldugunuz sanal interface e yonleniyor ve pfsense cevap veriyor. bu durumda port tunnel gibi bir acik soz konusu olmuyor. test amacli denedigim tum sistemlerde nslookup sonuclarindan ve states tablosundan calistigini gozlemledim. ornek olarak dns forwarder da bir entry girip nat yonlendirmesini yaptiktan sonra
nslookup - 8.8.8.8 veya baska bir dns e girdiginiz entry sorguladiginizda pfsense de ki entry nin ip gelecektir. bu da demektir ki 53 portu aslina verilen ip e degil nat yontemi ile sorguyu gene pfsense e yapmaktadir.selam asbirim.
bu yazdıkların 53 nolu portu dışarıya direk açmadan yapılıyor değil mi? birde denediğini ve herhangi bir sorunla karşılaşmadığınıı varsayıyorum.
-
Ellerine sağlık kardeş.
hayır daha once bahsettigim yontemdeki gibi 53 portunu ipfw den actiginizi varsayıiyorum. ama 53 portunu natladigimizdan aslinda disariya degil sizin acmis oldugunuz sanal interface e yonleniyor ve pfsense cevap veriyor. bu durumda port tunnel gibi bir acik soz konusu olmuyor. test amacli denedigim tum sistemlerde nslookup sonuclarindan ve states tablosundan calistigini gozlemledim. ornek olarak dns forwarder da bir entry girip nat yonlendirmesini yaptiktan sonra
nslookup - 8.8.8.8 veya baska bir dns e girdiginiz entry sorguladiginizda pfsense de ki entry nin ip gelecektir. bu da demektir ki 53 portu aslina verilen ip e degil nat yontemi ile sorguyu gene pfsense e yapmaktadir. -
arkadaşlar bunu nasıl çözdünüz?
ben sizin yukarıda vermiş olduğunuz ve benimde aşağıda adres yazdığım yere winscp ile girdim sonra oradaki 559.ncu satırda bulunanları sizin yukarıda verdiklerinizle notepad++ ile değiştirdim amma velakin elle dns verilmiş olan makinaları yine cp karşılamadı.
adres:
/etc/inc/captiveportal.inc
yazdıklarım
#dns pass
add 65529 allow udp from any to any dst-port 53 keep-state
add 65530 allow tcp from any to any dst-port 53 keep-stateredirect non-authenticated clients to captive portal
add 65531 set 1 fwd 127.0.0.1,8000 tcp from any to any in
let the responses from the captive portal web server back out
add 65532 set 1 pass tcp from any to any out
block everything else
add 65533 set 1 deny all from any to any
pass everything else on layer2
add 65534 set 1 pass all from any to any layer2
çözüm olarak ne yapmamız lazım? pfsense 2.1 kullanıyorum.teşekkürler.
reboot edince düzeldi :)
-
port 53 tunnel acigini kapatmak icin soyle bir yontem deneyebilirsiniz.
1- herhangi bir interface istediginiz bir vlan olusturun.
2- bu vlan icin static ip tanimlamasi yapin.
3- ardindan nat -> port forward yardimi ile dns yonlendirmesi yapmak her interface icin bir kural olusturacagiz.
a- interface secin (orn. LAN)
b- source icin networf girin veya secin.(orn. LAN subet)
c- destination any secin
d- port olarak DNS (53) secin
e- redirect ip icin ayarlamis oldugunuz vlan in static ipsini yazin
f- redirect port icin DNS (53) secin ve kaydedin
dns yonlendirmesi yapmak istediginiz her interface icin tekrarlayin redirect ip ve port ayni olacak sekilde.yardimci olmasi icin resimleri ekliyorum.
butun diger alanlari oldugu gibi birakin.
bunlari yaptiktan sonra captive portal da 53 portuna surekli izin verebilirsiniz. artik sadece sizin general setup da ayarladiginiz dnslere sorgu yapilacak. isterseniz dns forwarder dan domain engelleme dahi yapabilirsiniz.
Bu çözüm aynı bizim abonelerimize güvenli internet verirken kullanıdğımız forwarding mode çözümü. mantık doğru. teşekkürler @asbirim
-
Kusura bakmazsanız bir sey sorucam captive portal altında allowed ip adrese girdigimizde
ip adres -description -bandwit up down diye yerler var dns adreslerini burda nereye girmemiz lazım tek tek
-
Yeni sürümde çalışıyor mu bu paylaşılan yöntem? Deneyen var mı?
-
standart bir yönlendirme kuralı olduğundan, çalışması lazım.
-
standart bir yönlendirme kuralı olduğundan, çalışması lazım.
Peki ben niye yapamıyorum? Şu an bunu yeni sürümde deneyip çalıştırabilen var mı?
-
bu uda hortlatayım bari. 2.4.5 de /etc/inc/captiveportal.inc dosyası baya değişmiş. bu yeni yapıda nasıl eklenir bu kurallar şimdi?
-
ihtiyacı olana yeni sürümde eklenmesi gekeren kod parçası:
$cprules .= "# Rules to allow DNS queries to external servers from unauthenticated users\n"; $cprules .= captiveportal_create_ipfw_rule("add", $rulenum, "allow udp from any to any 53 out"); $cprules .= captiveportal_create_ipfw_rule("add", $rulenum, "allow tcp from any to any 53 out"); $cprules .= captiveportal_create_ipfw_rule("add", $rulenum, "allow udp from any to any 53 in keep-state"); $cprules .= captiveportal_create_ipfw_rule("add", $rulenum, "allow tcp from any to any 53 in keep-state");
peki nereye eklenecek? tabiiki aşağıdaki kodun hemen üstüne:
$cprules .= "# redirect non-authenticated clients to captive portal\n"; $cprules .= captiveportal_create_ipfw_rule("add", $rulenum, "fwd 127.0.0.1,{$listenporthttp} tcp from any to any dst-port 80 in");
herkese iyi eğlenceler...