VPN server einrichten, um magelhafte Internetverbindung auszubessern

tronico

New Member
Hallo Leute.

Ich plane die Anmietung eines Servers für die Einrichtung eines VPN, um mir eine "Virtuelle, dedizierte Internetverbindung ohne Mängel" zu realisieren.


Es ist bei meinem Problem aber mehr, als "nur" einen Server anzumieten, und irgend eine 0815 Installation drauf zu knallen. Da hier viele Experten untnerwegs sind, wende ich mich an dieses Forum, obwohl da deutlich mehr als nur ein V-Server dahinter steckt.

Gegeben ist folgendes:
-Ein Internetanschluss (Kabel Deutschland Business 32 Mibt/s), geteilt mit bis zu 400 Teilnehmern
-An diesem hängt ein Caching Proxy und Content Filtering System
-Dahinter hängt eine Securepoint NAC (Network Access Controller)
-Intern wird dann per 100 Mbit/s Ethernet weiter verteilt.


Nun gibt es mehrere Punkte, die mich stören:
1.
Man muss für die Authentifizierung ständig ein Browserfenster (Mit aktiviertem Java Script) offen halten.
Es ist offiziell nicht vorgesehen, mehrere Geräte über einen Account mit Internet zu versorgen. Einen PPTP oder PPPOE basierten Zugang, damit man DSL Router verwenden kann, gibt es nicht. Oder ich weiß nichts davon.

Mit Tricksen gelang es mir, einen Linksys WRT54G mit alternativer Firmware so einzurichten, dass ich doch Routerbetrieb machen kann, und mehrere Rechner über einen Account laufen lassen kann.
Nachteil: Ich müsste 24/7 einen "Authentifizierungsrechner" mit modernem Browser (Also wirklich einen vollwertigen, geeigenten Browser mit Java Script wie z.B. Firefox) durchlaufen lassen, der nichts anderes macht, als die Webbasierte Authentifizierung oben zu halten (Und bei Disconnects wieder her stellt, die passenden Klicks und Eingaben werden Scriptgesteuert gemacht)
Deswegen muss ein System mit GUI und geeignetem Browser (z.B. Gnome+Firefox) eingerichtet werden, wodurch als "Router" nur ein vollwertiger PC in Frage kommt.
Eine andere Lösung sehe ich leider nicht. Oder gibts sonst noch Möglichkeiten, um die Authentifizierung am Securepoint NAC zu machen?
Andererseits kostet mich der Strom nichts, ein 24/7 Betrieb eines vollwertigen PC als Router kostet also nicht mein Geld.

2. Wenn man sich die Produktbeschreibung des Securepoint NAC ansieht, auf der Herstellerseite, ergibt sich folgendes Bild:
Es ist nicht nur für das "Accounting" zuständig.
Nein, es wird auch massivst geloggt, aus Haftungsgründen und anderem.
Alles was man im Netz macht, jede Webseite die man aufruft, alles wird aufgezeichnet.
Dies passt mir gar nicht.

3. Durch den vorgelagerten Proxy wird dann auch noch einiges zensiert


Deswegen würde ich gerne per VPN Tunnen "nach draußen" gehen, um das Logging, Portsperren und Zensur zu umgehen.
VPN ist hier im Netz übrigens nicht verboten.
Es ist sogar explizit erlaubt.
Der VPN Support steht im Klartext auf der Login Seite, womit das umgehen des Proxy/NAT (und damit aushebelung des Logging/Zensur) völlig legitim ist.


4. Der 32 Megabit Internetzugang ist mit ca 400 Leuten geteilt. Theoretisch gibt es 400 Teilnehmer. Aber nicht jeder Teilnehmer hat einen Internetaccount bezahlt, und von denen die bezahlt haben, werden ihn auch nicht alle zeitgleich nutzen, und schon gar nicht voll auslasten.
Dennoch kann von circa 100 Aktiven Teilnehmern zur Primetime ausgegangen wrden.
Damit sinkt der effektive Datendurchsatz auf deutlich weniger als 1 Mbit/s, die Pingzeiten gehen ebenfalls merklich hoch.

Aus diesem Grund würde ich zusätzlich gerne UMTS mit ins Boot holen, und diesen UMTS Zugang parallel benutzen. Nicht mit echter Kanalbündelung, sondern in Form von QOS und bedingtem Routing.



Als Lösung schwebt mir vor, einen vServer als VPN Endpunkt bei Hetzner anzumieten. Und auf Clientseite einen Linux (Oder sogar Windows) PC einzusetzen, der die browserbasierte Authentifizierung macht, die UMTS Verbindung herstellt und den VPN Endpunkt darstellt, und mir dann einen Internetzugang "ohne Mängel" bereit stellt, der "wie zuhause am DSL NAT Router" einfach "plug and Play" von mehreren Geräten benutzt werden kann.

Oder habt ihr bessere Vorschläge, wie ich die "Mangelhafte Internetverbinung" ausbessere?
UMTS Only, und den LAN Zugang nicht anzumieten, ist wegen "Volumenbegrenzung" (auch bei Flatrates) keine Option.

Der LAN Zugang hat keine Trafficbegrenzung, ist aber dafür in meinen Augen Mangelhaft.
Den "umsteckbetrieb", oder den Zweigerätebetrieb, den viele hier machen, mag ich auch nicht.
Viele hier gehen nur für Downloads ans LAN, ansonsten steckt der UMTS Stick im Rechner. Oder sie haben Laptop+Standard-PC, wobei sie dann mit einem LAN nutzen, mit dem andern UMTS.
 
Last edited by a moderator:
Danke, interessanter Artikel.

Könnte dieser Router auch die Anmeldung am Securepoint NAC machen?
Das ist ja ein Knackpunkt. Diese Anmeldung läuft ja über den Browser, der Java Script unterstützen muss, und die gesamte Sitzung über offen sein muss.

Oder unterstützt der Securepoint NAC auch andere Authentifizierungsmethoden, von denen ich nichts weiß?

"Volles" Loadbalancing brauche ich übrigens nicht, QOS basiert, bzw Port basiert würde mir schon reichen (Sachen die viel traffic machen, wie FTP, HTTP -> Über die billige, aber "mangelhafte" Lan Verbindung. (Aber per VPN+Verschlüsselt, wegen logging)
Rest über Mobilfunk. Da idealerweise auch per VPN, weil Mobilfunkanbieter auch gerne Ports sperren oder Zwangsproxys haben,
 
Ich kann mich dunkel erinnern dass ich bereits (hier?) einen Vorschlag gelesen hatte der HTTP-Proxy spielt und Dateien mit einer Content-Length ueber X KB ueber das Festnetz und den Rest ueber die andere Leitung jagt.

Aber zuerstmal zu deinem Problem mit Session, Authentifizierung und Co:
Das System ist in aller Regel ein Javascript das staendig "nach Hause telefoniert" und dabei eine Session-ID uebermittelt; sobald die Session-ID fuer X Sekunden/Minuten keinen 'Hallo' mehr geschickt hat wird die Verbindung fuer diesen Teilnehmer beendet. Das zu umgehen ist aber recht leicht indem du per Shell-Skript zB wget dazu bringst auf deinem Router (zB DD-WRT) sich ein zu loggen und in einer Endlosschleife alle X Sekunden deine Session-Informationen zu posten. Etwaige notwendige Inhalte kannst du mit awk, sed,cut aus der Antwort von wget leicht extrahieren.
Somit => dein kleiner Routerli kann sich sehr gut authentifizieren und dann ein vollwertiges LAN fuer alle angeschlossene Geraete anbieten.

Selbststaendig nach erfolgter Authentifizierung eine VPN-Verbindung auf deinen vServer aufbauen kann ein solcher DD-WRT Router auch durch entsprechende Skripte; somit waere er nicht nur eingeloggt sondern wuerde deinen gesamten Traffic auch voll-transparent fuer alle Geraete "nach draussen" befoerdern. (Hierfuer ist aber ein nicht "all zu schwacher" Router notwendig da seine kleine CPU sonst in die Knie geht bei der VPN-Verschluesslung. L2TP als Protokoll ist ebenfalls sehr zu empfehlen da recht schwach)

Port-basiert nach draussen haemmern kann ein solcher Router dank iptables natuerlich auch; einfach mittels NAT-Forward den Traffic auf den entsprechenden Port (3G oder Netzwerk) leiten.

Alle hier vorgeschlagenen Ideen gehen natuerlich auch mit einem (Low-Cost, zB Atom) Rechner und nicht nur einem DD-WRT Router.
Eine fertige Loesung ist mir nicht bekannt, ich denke du musst alle genannten Punkte "from scratch" aufbauen; fang also mit einem Teil an und bau dich langsam hoch; ich wuerde hier mit der automatischen Authentifizierung des Routers im Uni(?)-Netz anfangen.
 
Hi.

Also der Login ist auf HTTPS, und mit Java Script.

Wenn ich hin gehe, und mache die Anmeldung einmal mit dem Browser auf dem PC, und übernehme dann die Get Anforderung mit der Session ID, kann ich es mit WGET "Polling" aufrecht erhalten.
Aber nach einem Disconnect geht das nicht mehr.
Es ist aber nicht Sinn der Sache, jedes Mal den Get String im Router zu ändern.
Außerdem soll er immer automatisch connecten, wie zuhause am DSL.


Es handelt sich übrigens um ein Wohnheim Netz einer Bildungseinrichtung (Wenn auch keine Uni), wo dieser 32 Mbit/s Kabel Deutschland Anschluss auf 400 Wohneinheiten/Leute geshared wird. (Wobei nicht alle belegt sind und nicht jeder einen Anschluss anmietet)
Den LAN Anschluss (Und damit auch das Internet) muss man für 10 Euro im Monat anmieten. Userverwaltung geht per Securepoint NAC, der hinter dem Squid bzw Hauptrouter hängt.

Hat hier schonmal jemand mit dem Securepoint NAC gearbeitet?

Ganz unproblematisch ist der Proxy übrigens nicht, irgendwo ist da bisschen der Wurm drin. Ich habe bei Foren öfter Probleme mit der Aktualität oder dem Login.
 
Das Problem mit dem Login ist eher der Squid-Proxy welcher wohl uebereifrig cached um moeglichst viel Traffic lokal zu halten und so den Uplink entlasten will.

Wenn ich hin gehe, und mache die Anmeldung einmal mit dem Browser auf dem PC, und übernehme dann die Get Anforderung mit der Session ID, kann ich es mit WGET "Polling" aufrecht erhalten..
Nicht halbe Sachen machen. Auch die Authentifizierung muss mittels wget laufen wo dann die Session-ID in der Ausgabe extrahiert und in eine Variable geschrieben wird um durch Polling die Verbindung auf zu halten.
Idealerweise sollte er bei Verbindungsfehler und SessionID-Verweigerung aus der Polling-Schleife ausbrechen und wieder von vorne, also mit Auth, anfangen; somit wird die Verbindung wieder neu aufgebaut sobald der Server wieder erreichbar ist.

Wenn du die entsprechenden Request-Header sowie Response-Header und Response-Content lieferst koennen wir dir wahrscheinlich auch beim dazugehoerigen Bash-Vodoo helfen ;)
 
Für den VPN möchte ich einen V-Server mieten.
Ich wollte zu Hetzner gehen, weil dort VPN auf jeden Fall funktionieren soll. VPN auf V-Servern soll nicht bei jedem Anbieter gehen, da es auf die verwendete Virtualisierungslösung ankommen soll.
 
Das Problem mit dem Login ist eher der Squid-Proxy welcher wohl uebereifrig cached um moeglichst viel Traffic lokal zu halten und so den Uplink entlasten will.


Nicht halbe Sachen machen. Auch die Authentifizierung muss mittels wget laufen wo dann die Session-ID in der Ausgabe extrahiert und in eine Variable geschrieben wird um durch Polling die Verbindung auf zu halten.
Idealerweise sollte er bei Verbindungsfehler und SessionID-Verweigerung aus der Polling-Schleife ausbrechen und wieder von vorne, also mit Auth, anfangen; somit wird die Verbindung wieder neu aufgebaut sobald der Server wieder erreichbar ist.

Wenn du die entsprechenden Request-Header sowie Response-Header und Response-Content lieferst koennen wir dir wahrscheinlich auch beim dazugehoerigen Bash-Vodoo helfen ;)


Ich kann die Authentifizierungsseite gleich mal posten,
bei wget sagt er mir jedenfalls nur, dass kein JS aktiviert sei, und es deswegen nicht gehen würde.
Nur das "Pollen" geht so ohne weiteres.
 
Hier mal der HTML Code der Auth Seite.

Die URL sieht dann so aus: https://controller.mobile.lan/#N2UzNjEwYmYxZGMxOGZmNjAwYjExMDk4YzBlMWVhZWY1NGExYTdjYS0 .... und noch viele weitere, sich ändernde Zeichen

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
		<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
	<title>Portal</title>
	<script type='text/javascript'>
	var ucopiaControllerHost = '';
	function getUcopiaControllerName() {
		var searchString = document.location.search.substring(1);
		var nvPairs = searchString.split('&');
		var ucopiaHostFounded = false;
		for (i = 0; i < nvPairs.length; i++) {
			var nvPair = nvPairs[i].split('=');
			if (nvPair[0] == 'ucopiaHost') {
				ucopiaControllerHost = nvPair[1];
				ucopiaHostFounded = true;
				break;
			}
		}
		if (ucopiaHostFounded == false) {
			ucopiaControllerHost = window.location.host;
		}
	}
	function loadScript(url) {
		var e = document.createElement('script');
		e.src = url;
		e.type = 'text/javascript';
		document.getElementsByTagName('head')[0].appendChild(e);
	}
	function loadCss(url) {
		var e = document.createElement('link');
		e.href = url;
		e.rel = 'stylesheet';
		e.type = 'text/css';
		document.getElementsByTagName('head')[0].appendChild(e);
	}
	onload = function() {
		getUcopiaControllerName();
		loadScript('https://' + ucopiaControllerHost + '/javascript/boxover.js');
		loadScript('https://' + ucopiaControllerHost + '/javascript/api_extportal.js');
		loadScript('https://' + ucopiaControllerHost + '/javascript/portal_extportal.js');
		loadCss('https://' + ucopiaControllerHost + '/javascript/portal.css');
	}
	</script>
	<style type='text/css'>
	#logon td {
		color: #000000;

	}

	</style>
</HEAD>
<BODY style='background-image:url(/portals/portal/securepoint.gradient_slice.jpg);background-repeat:repeat-x;'>
	<center><div id='portalcontainer' style='position:relative;width:820px;height:600px;background-image:url(/portals/portal/bg.jpg);background-repeat:no-repeat;background-color:#FFFFFF;'>

	<!-- Logon Type Div -->
	<!-- DO NOT MODIFY INSIDE THIS DIV UNLESS YOU EXACTLY KNOW WHAT YOU ARE DOING -->
	<div id='logon' style='left:368px;top:200px;position:absolute;width:440px;height:350px;' align='center'>
		<table>
			<tr>
				<td>
					<noscript>
						JavaScript ist in Ihrem Browser deaktiviert. Es muss aktiviert werden, um Sie zu authentifizieren. Aktualisieren Sie die Seite nach dem Aktivieren von JavaScript
					</noscript>
				</td>

			</tr>
		</table>
		<table id='info'>
			<tr>
				<td>
					<span id='info_span' style='color:red'>&nbsp;</span>
					<br><br>
				</td>
			</tr>

		</table>
		<!-- Secure Portal Password (Visible status depends on configuration option) -->
		<form name='securePwd' action='javascript:portal_access();'>
		<table id='securepwdStep' style='display:none'>
			<tr>
				<td align='right' nowrap>
					<span id='secure_pwd_span'>Portal-Kennwort</span>&nbsp;:&nbsp;
				</td>

				<td>
					<input type='password' name='secure_pwd' style='width:100px'>
				</td>
			</tr>
			<tr align='center'>
				<td colspan='2'>
					<img id='access_button_wait' src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>
					&nbsp;&nbsp;<input type='submit' name='access_button' value='Zum Portal'>
					<img src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>

				</td>
			</tr>
		</table>
		</form>
		<form name='logon' action='javascript:portal_authenticate();'>
		<table id='logonStep' style='display:none'>
			<tr>
				<td align='right' nowrap>
					<span id='login_span'>&nbsp;ID</span>&nbsp;:&nbsp;

				</td>
				<td>
					<input type='text' name='login' autocomplete='on' style='width:100px'>
				</td>
			</tr>
			<tr>
				<td align='right' nowrap>
					<span id='password_span'>Kennwort</span>&nbsp;:&nbsp;

				</td>
				<td>
					<input type='password' name='password' autocomplete='on' style='width:100px'>
				</td>
			</tr>
			<!-- Check Box Confirm (Visible status depends on configuration option) -->
			<tr align='center' id='checkboxconfirm_tr' style='display:none'>
				<td colspan='2' nowrap>
					<input type='checkbox' name='check_box_confirm'>&nbsp;&nbsp;<span id='checkboxconfirm_span'></span>

				</td>
			</tr>
			<tr>
				<td colspan='2'>
					&nbsp;
				</td>
			</tr>
			<tr align='center'>
				<td colspan='2'>

					<img id='connect_button_wait' src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>
					&nbsp;&nbsp;<input type='submit' name='connect_button' value='Verbindung'>
					<img src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>
				</td>
			</tr>
		</table>
		</form>
		<!-- PMS Package Choice Step -->
		<form name='package' action=''>

		<table id='packageStep' style='display:none'>
			<tr>
				<td>
					<span id='select_package_info_span'>Wählen Sie ein Paket</span>
				</td>
			</tr>
			<tr>
			<tr>

				<td align='left'>
					<span id='packages_span'>&nbsp;</span>
				</td>
			</tr>
			<tr>
				<td align='center'>
					<img id='select_package_button_wait' src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>
					&nbsp;&nbsp;<input type='button' name='select_package_button' value='Bestätigen' onclick='javascript:portal_selectPackage();'>
					<img src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader'>

				</td>
			</tr>
		</table>
		</form>
		<!-- Feedback Step -->
		<form name='feedDisconnect' action=''>
		<table id='feedbackStep' style='display:none'>
			<!-- PMS (Shows only if user is pms subscribed) -->
			<tr align='center' id='user_info_package_customer_tr' style='display:none;'>

				<td colspan='2'>
					<b><span id='user_info_package_customer_span'>Willkommen</span>&nbsp;<span id='user_info_package_customer_value_span'>&nbsp;</span></b>
				</td>
			</tr>
			<!-- PMS (Shows only if user is pms subscribed) -->
			<tr align='center' id='user_info_package_message_tr' style='display:none;'>
				<td colspan='2'>
					<i><span id='user_info_package_message_value_span'>&nbsp;</span></i><br><br>

				</td>
			</tr>
			<tr align='center'>
				<td colspan='2'>
					<span id='close_window_alert_span' style='color:#FF0000;'>ACHTUNG: Durch Schließen dieses Fensters wird die Verbindung beendet.</span>
				</td>
			</tr>
			<tr align='center'>

				<td colspan='2'>
					<span id='requested_url_span' style='display:none;'></span>
				</td>
			</tr>
			<!-- User Id (Shows only if no PPS) -->
			<tr id='user_id_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_id_span'>ID</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_id_value_span'>&nbsp;</span>
				</td>
			</tr>
			<tr>
				<td nowrap align='right'>
					<span id='user_profile_span'>Profil</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_profile_value_span'>&nbsp;</span>
				</td>
			</tr>
			<!-- PMS Package (Shows only if user is pms subscribed) -->
			<tr id='user_info_package_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_package_span'>Paket</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_package_value_span'>&nbsp;</span>
				</td>
			</tr>
			<tr>
				<td nowrap align='right'>
					<span id='user_services_span'>Dienste</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_services_value_span'>&nbsp;</span>
				</td>
			</tr>
			<tr id='user_vlanin_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_vlanin_span'>Numéro de VLAN</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_vlanin_value_span'>&nbsp;</span>
				</td>
			</tr>
			<tr id='user_zonein_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_zonein_span'>Zone d'entrée</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_zonein_value_span'>&nbsp;</span>
				</td>
			</tr>
			<!-- User Validity (Shows only if user got one) -->
			<tr id='user_validity_package_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_validity_span'>Gültigkeit</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_validity_value_span'>&nbsp;</span>
				</td>
			</tr>
			<!-- User total timecredit (Shows only if PPS) -->
			<tr id='user_ct_total_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_ct_total_span'>Gesamtzeit</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_ct_total_value_span'>&nbsp;</span>
				</td>
			</tr>
			<!-- User total timecredit (Shows only if PPS) -->
			<tr id='user_ct_consumed_tr' style='display:none'>
				<td nowrap align='right'>
					<span id='user_ct_consumed_span'>Verbrauchte Zeit</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_ct_consumed_value_span'>&nbsp;</span>
				</td>
			</tr>
			<!-- User total timecredit (Shows only if no PPS) -->
			<tr id='user_time_credit_tr' style='display:none' valign='top'>
				<td nowrap align='right'>
					<span id='user_time_credit_span'>Zeitguthaben</span>&nbsp;:&nbsp;

				</td>
				<td align='left'>
					<span id='user_time_credit_value_span'>&nbsp;</span>
				</td>
			</tr>
			<tr>
				<td colspan='2'>
					&nbsp;
				</td>

			</tr>
			<tr>
				<td colspan='2' align='center'>
					<input type='button' name='disconnect_button' value='Verbindung beenden' onClick='javascript:portal_disconnect();'>
				</td>
			</tr>
			<!-- User Password Modification (Visible status depends on configuration option) -->
			<tr id='modify_pwd_link_tr' style='display:none'>
				<td colspan='2' align='center'>

					<a href='javascript:portal_modifyPwdLink();'><span id='modify_pwd_link_span'>Kennwort ändern</span></a>
				</td>
			</tr>
		</table>
		</form>
		<form name='modify_pwd' action=''>
		<table id='modifyPwdStep' style='display:none'>
			<tr>

				<td nowrap>
					<span id='modify_pwd_old_span'>Altes Kennwort</span>&nbsp;:&nbsp;
				</td>
				<td>
					<input type='password' name='old_pwd' autocomplete='off'>
				</td>
			</tr>
			<tr>

				<td nowrap>
					<span id='modify_pwd_new_span'>Neues Kennwort</span>&nbsp;:&nbsp;
				</td>
				<td>
					<input type='password' name='new_pwd' autocomplete='off'>
				</td>
			</tr>
			<tr>

				<td nowrap>
					<span id='modify_pwd_confirm_span'>Bestätigen Sie das Kennwort</span>&nbsp;:&nbsp;
				</td>
				<td>
					<input type='password' name='confirm_pwd' autocomplete='off'>
				</td>
			</tr>
			<tr>

				<td colspan='2' align='center'>
					<img id='modify_pwd_button_wait' src='/portals/loader.gif' border='0' style='visibility:hidden;vertical-align:middle;' height='17px' alt='loader' >&nbsp;&nbsp;<input type='button' name='modify_pwd_button' value='Kennwort ändern' onClick='portal_modifyPwd()'>
				</td>
			</tr>
		</table>
		</form>
	</div>
	<!-- Display Lang Div -->
	<div id='displaylang' style='left:564px;top:167px;position:absolute;' align='center'>

		<table>
			<tr>
				<td>
					<img id='display_lang_wait' src='/portals/loader.gif' border='0' style='visibility:hidden;' height='17px' alt='loader'>&nbsp;&nbsp;<span id='display_lang_span'></span>
				</td>
			</tr>
		</table>
	</div>
	<!-- Text Type Div -->

	<div id='banner' style='left:11px;top:94px;position:absolute;'>
		<span id='banner_span'><div align='left'><br /><br /><BR><br /><font size'3'>Beim Empfang können Sie sich Ihren Internetzugang <br>freischalten lassen.Unsere Preise können Sie dort erfragen.<br /><BR>Bitte beachten Sie die Nutzungsbedingungen.</font><div align='left'></div></span>
	</div>
	<!-- Text Type Div -->
	<div id='footer' style='left:321px;top:553px;position:absolute;'>
		<span id='footer_span'><font size='1'><i>&copy; Powered by Securepoint</i></font></span>

	</div>
	</div></center>
</BODY>
</HTML>
			<div id="choose_display_mode" style='display:block'>
						</div>



Viele Grüße
 
Hmm, mit dem ganzen JS-Gewusel waere es einfacher wenn du den Request-Header + Response-Header sowie Response-Content einer erfolgreichen und einer nicht erfolgreichen Anmeldung schicken wuerdest.
In Chrome kannst du es ueber die "Developer Console" und dort "Network" auslesen, in Firefox ueber die "Firebug"-Extension
 
So, habe jetzt mal aufgezeichnet und mal nur das wesentliche (das mit dem login) rauskopiert.
Den ganzen Content/Layout/CSS/Images Kram habe ich mal gelöscht.

Zugangsdaten habe ich auch rausgelöscht


Code:
Falscher Login



Anfrage-Header

GET /api_extportal.php?action=authenticate&login=foo&password=bar&secure_pwd=&time=Wed%20Nov%2016%202011%2023%3A21%3A14%20GMT%2B0100&check_box_confirm=FALSE&return_function=portal_authenticate_return HTTP/1.1
Host: controller.mobile.lan
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: */*
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: [url]https://controller.mobile.lan/[/url]
Cookie: portal=a5803c7aa5b323c4bd5a716f88b8b0b0




Antwort-Header

HTTP/1.1 200 OK
Date: Wed, 16 Nov 2011 22:21:15 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 154
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8





Antwort        
..
portal_authenticate_return({"step":"ERROR","error_code":"error_authenticate_bad-login-or-password","error_message":"Falsche ID oder falsches Kennwort"});
..




Richtiger Login


Anfrage-Header

GET /api_extportal.php?action=authenticate&login=XX_gelöscht_XX&password=XX_gelöscht_XX&secure_pwd=&time=Wed%20Nov%2016%202011%2023%3A26%3A46%20GMT%2B0100&check_box_confirm=FALSE&return_function=portal_authenticate_return HTTP/1.1
Host: controller.mobile.lan
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: */*
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: [url]https://controller.mobile.lan/[/url]
Cookie: portal=a5803c7aa5b323c4bd5a716f88b8b0b0


Antwort-Header

HTTP/1.1 200 OK
Date: Wed, 16 Nov 2011 22:26:46 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 854
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8



Antwort:
portal_authenticate_return({"feedback_url_infos":"xxx session id","step":"FEEDBACK","feedback_type":"CONNECT","feedback_login":"XX_loginname_gelöscht_XX","feedback_sha1_pwd":"XX_passwordhash_gelöscht_XX","feedback_ip":"172.16.xxx.xxx","feedback_vlan":"1","feedback_zone":"Defaut","feedback_profile":"XXX","feedback_services":"Instant_Messaging, Mail, Web, VPN, File_Transfer, Full_Access, Microsoft_Network, Printers, Remote_Access, SSH, Telnet, Watch_Mail","feedback_schedule":"","feedback_expiration_date":"2011-12-17T23:59:46+01:00","feedback_ct_remaining":null,"feedback_ct_reneweach":"0","feedback_universal_time":1321482406,"feedback_mod_user_pwd":"FALSE","feedback_requested_url":null,"feedback_autodisconnect":"FALSE","feedback_is_pms_user":"FALSE"});



mfg
 
Denkt ihr, es bringt was, wenn ich mal die Herstellerfirma des Network Authentification Controllers, die Firma Securepoint, anschreibe, und frage, ob die ein "Auth Script" für Router haben, bzw ob die mir die Doku vom Auth Vorgang schicken?
Oder werden die bei einem Endanwender ehr keinen Support geben und sagen, wenden sie sich an ihren Admin?


Sollte ich vielleicht auch mal die IT Abteilung fragen?
Oder besser nicht, weil sie Privatrouter im Netz nicht mögen? Sie wollen, dass die Clients direkt angeschlossen werden.

Früher war es ja mal auf PPPOE Basis. Das wurde eingestellt, und auf rein Webbasierte Authentifizierung umgestellt.

Früher konnte man jeden 0815 Billigrouter aus dem Mediamarkt verwenden. (Da wurde auch kräftig per WLAN geshared. einer zahlt 10 nutzen es oder so.
Jetzt muss man schon etwas KnowHow und bessere Technik mitbringen, um noch mit "Privatroutern" arbeiten zu können bzw das Internet mit jemandem zu teilen.
Gleichzeitig wird es für unbedarfte User "bei standardnutzung" einfacher, weil man nix einrichten muss, und sich einfach im Browser anmelden kann.

Mir gehts nicht ums sharen mit anderen, sondern ich will es mit mehreren Geräten (PC, Laptop, Smartphone usw) transparent nutzen, ohne das nerfige Auth Browserfenster irgendwo auf haben zu müssen.
Ich will mehr oder weniger einen standard internet zugang "basteln", Internet wie zuhause (So als hätte man "normales" DSL und nen 0815 NAT Router)
 
Der Login sieht ziemlich simpel aus, du musst nur eine wget-Anfrage schicken:
Code:
/api_extportal.php?action=authenticate&login=$USERNAME&password=$PASSWORD&secure_pwd=&time=$DATE&check_box_confirm=FALSE&return_function=portal_authenticate_return
Dann per Regex (sorry, jetzt zu muede ein Regex dafuer zu basteln...) kontrollieren ob der String "feedback_url_infos" in der Antwort enthalten ist und wenn ja die nachfolgende Session-ID extrahieren. (Ist ein one-liner)

Und dann noch eine wget-Endlosschleife welche die SessionID pollt.
Du muesstest nur kontrollieren wie eine abgelaufene/ungueltige Session-Polling Antwort aussieht um entsprechende Fehlerbehandlung ein zu bauen.

Oder besser nicht, weil sie Privatrouter im Netz nicht mögen? Sie wollen, dass die Clients direkt angeschlossen werden
Ist es nicht gern gesehen oder nicht erlaubt? Bitte klarstellen; bei einem "nicht erlaubt" kann ich nicht weiterhelfen.
 
Hi.

Danke für die Hinweise, werde mich nachher mal ein bisschen ran setzen, wenn ich mir ne Festplatte und eine NIC zum experimentieren besorgt habe (Die Live Festplatte im PC soll für experimente nicht genutzt werden, und ne zweite NIC zum Testen brauche ich ebenfalls.

Wenns unter "standard linux" dann läuft, kann ich es immer noch auf den WRT umsetzen.

Verboten ist Routerbetrieb nicht, es ist nur nicht gerne gesehen. (u.a wegen dem unkontrollierten Internetsharing, was vernünftiges Logging erschwert, und weniger Einnahmen bei mehr Nutzung bringt)

Das einzigste, was explizit nicht erlaubt ist, ist das Sharing an andere. Simutan-selbernutzung mit mehreren Geräten ist nicht verboten, es ist lediglich nicht vorgesehen (d.H. nicht supportet).
Supportet wird nur der Webbrowser Login.

Der ist für Laien ohnehin viel einfacher zu nutzen als PPPOE.
Und die Router sind ganz von selbst ohne nachzuhelfen, aus dem Netz verschwunden, weil viele lieber das immer offene Browserfenster akzeptieren und Wechselbetrieb akzeptieren, anstatt sich Arbeit zu machen um da irgendwas eigenes aufzusetzen.

Durch Abschaltung des PPPOE Zugangs umd Umstellung auf Webbasierten Auth hat man also mehrere Fliegen mit einer Klappe geschlagen

VPN ist ebenfalls nicht verboten, man sieht auf der Loginseite sogar, dass es explizit freigeschaltet ist. (Unter "Dienste"). Dafür wird halt nur kein aktiver Support gegeben. (Motto: "Das ist nicht unser Bier")
Bei VPN ist es so: Das Logging wird zwar umgangen, aber das Haftungsrisiko ist nicht beim hiesigen Netzbetreiber, sondern beim VPN Betreiber, so dass es geduldet wird.
Das starke Logging läuft offiziell ja nur aus Haftungsgründen, um z.B. bei Urheberrechtsverletzungen den Verursacher nennen zu können.
 
Back
Top