Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Kabel Deutschland + PFSense + neue IP nach Neustart oder "Renew"

    Scheduled Pinned Locked Moved Deutsch
    4 Posts 2 Posters 5.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      ren22
      last edited by

      Hey liebes forum

      also ich war auf der Suche wie ich bei Kabel Deutschland meine IP Adresse wechseln kann ohne dass ich das Modem immer über Nacht vom Strom nehmen musste damit ich eine neue IP bekahm, hier meine Lösung dank eines genialen Tip's http://forum.pfsense.org/index.php/topic,21523.0.html aus dem PFSense Forum.

      mein Equitment sieht wie folgt aus:

      Thompson THG540K Kabel Modem
      LaptopRouter Pfsense v. 1.2.3  1xLAN 1xWAN 1xWLAN
      Komputer + DAU der eine neue IP möchte

      los gehts:

      erstmal gehen wir im Menu von der Sense auf DIAGNOSTICS->EDIT FILE

      bei Save/Load from path:

      /etc/inc/interfaces.inc

      einfügen  und auf "LOAD" klicken

      jetzt suchen wir die stelle wo das LAN Interface behandelt wird:

      
      /* MAC spoofing? */
         if ($lancfg['spoofmac']) {
            mwexec("/sbin/ifconfig " . escapeshellarg($lancfg['if']) .
               " link " . escapeshellarg($lancfg['spoofmac']));
         } else {
            $mac = get_interface_mac_address($lancfg['if']);
            if($mac == "ff:ff:ff:ff:ff:ff") {
               /*   this is not a valid mac address.  generate a
                *   temporary mac address so the machine can get online.
                */
               echo "Generating new MAC address.";
               $random_mac = generate_random_mac_address();
               mwexec("/sbin/ifconfig " . escapeshellarg($lancfg['if']) .
                  " link " . escapeshellarg($random_mac));
               $lancfg['spoofmac'] = $random_mac;
               write_config();
               file_notice("MAC Address altered", "The INVALID MAC address (ff:ff:ff:ff:ff:ff) on interface {$lancfg['if']} has been automatically replaced with {$random_mac}", "Interfaces");
            }
         }
      
      

      dort wo die MAC adresse des LAN interfaces eingetragen ist wie in diesem Beispiel, also:
      ff:ff:ff:ff:ff:ff durch die MAC ersetzten:

      if($mac == "00:2a:e8:aa:11:5b") {
      

      und

      file_notice("MAC Address altered", "The INVALID MAC address (00:2a:e8:aa:11:5b) on interface {$lancfg['if']} has been automatically replaced with
      

      und schreiben dort die MAC des LAN Interfaces rein , (die MAC bekommt man über STATUS->INTERFACES des sensen menu's)

      so damit hätten wir schon mal das LAN Interface ready was nun bei jedem Neustart der Sense eine neue zufällige MAC Adresse bekommt.
      Das gleiche wollen wir auch mit dem WAN Interface machen also weiter gehts mit dem WAN Interface :D

      nun suchen wir weiter unten im Script nach:

      	/* wireless configuration? */
      	if (is_array($wancfg['wireless']))
      		interfaces_wireless_configure($wancfg['if'], $wancfg['wireless']);
      
      	if ($wancfg['spoofmac']) {
      		mwexec("/sbin/ifconfig " . escapeshellarg($wancfg['if']) .
      			" link " . escapeshellarg($wancfg['spoofmac']));
      	}  else {
      		$mac = get_interface_mac_address($wancfg['if']);
      		if($mac == "ff:ff:ff:ff:ff:ff") {
      			/*   this is not a valid mac address.  generate a
      			 *   temporary mac address so the machine can get online.
      			 */
      			echo "Generating new MAC address.";
      			$random_mac = generate_random_mac_address();
      			mwexec("/sbin/ifconfig " . escapeshellarg($wancfg['if']) .
      				" link " . escapeshellarg($random_mac));
      			$wancfg['spoofmac'] = $random_mac;
      			write_config();
      			file_notice("MAC Address altered", "The INVALID MAC address (ff:ff:ff:ff:ff:ff) on interface {$wancfg['if']} has been automatically replaced with {$random_mac}", "Interfaces");
      		}
      	}
      
      

      und ersetzen dort die beiden MAC Adressen ff:ff:ff:ff:ff:ff mit der MAC Adresse des WAN Interfaces

      if($mac == "01:1c:b6:ea:14:9c") {
      

      und

      file_notice("MAC Address altered", "The INVALID MAC address (01:1c:b6:ea:14:9c) on interface {$wancfg['if']} has been automatically
      

      danach speichern wir das ganz mit einem Klick auf 
      Save/Load from path: /etc/inc/interfaces.inc "SAVE"

      Das wär erstmal soweit der erste Schritt, damit das LAN und WAN Interface bei jedem Neustart der Sense eine neue MAC bekommt. …wunderbar :D

      Blöder Weise bekomme ich keine IP Adresse mehr am WAN Interface zugewiesen, nach dem neustart der Sense ..hhm, erst wenn ich das Modem neustarte scheint es zu gehen... also brauchen wir noch eine kleine Lösung das die Sense auch das Modem neustartet wenn ich die Sense neustarte.
      Denke das sollte curl erledigen für uns, dafür müssen wir aber noch die /usr/local/www/reboot.php modifizieren

      wir gehen wieder ins Webinterface der Sense, klicken auf DIAGNOSTICS->EDIT FILE

      geben bei
      Save/Load from path: /usr/local/www/reboot.php
      ein und klicken auf "LOAD" , suchen uns fast am ende der Datei folgende stelle:

      $rebootmsg = "The system is rebooting now. This may take one minute.";
      

      und schreiben darunter unter dieser zeile:

      $output = shell_exec('curl -b cookies.txt -c cookies.txt -m 10 -d "mCmInfoDsFreq1=xx&mCmInfoUsId1=xx" "http://192.168.100.1/goform/InitialScan"');
      

      was dann fertig so aussehen sollte:

      
      if ($_POST) {
      	if ($_POST['Submit'] == " Yes ") {
      		echo "";
      		system_reboot();
      		$rebootmsg = "The system is rebooting now. This may take one minute.";
                      $output = shell_exec('route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.1');
                      $output = shell_exec('curl -b cookies.txt -c cookies.txt -m 10 -d "mCmInfoDsFreq1=xx&mCmInfoUsId1=xx" "http://192.168.100.1/goform/InitialScan"');
      
      	} else {
      		exit;
      	}
      }
      ?>
      
      

      Bloss zu doof das standarmaßig gar kein curl verfügbar ist :( also müssen wir es noch schnell nachinstallieren freu

      im Webinterface klicken auf DIAGNOSTICS->COMMAND
      dann geben wir folgendes ein unter:

      Execute Shell command
          Command:  pkg_add -r curl

      und klicken auf "EXECUTE" , einmal tief Luft hohlen und curl sollte dann installiert sein :D

      Wenn wir jetzt auf DIAGNOSTICS->REBOOT SYSTEM klicken und dann noch auf YES sollte sich das Modem neustarten und die Sense auch, danach sollte man eine neue IP-Adresse haben

      vielleich ist ja jemand so gut/hat das wissen ein kleines package zu basteln :D

      gruss ren22

      1 Reply Last reply Reply Quote 0
      • R
        ren22
        last edited by

        PART II

        mir war das rebooten immer zu lästig und wollte am besten ne neue IP bekommen wenn ich unter STATUS>INTERFACES [Release]  button klicke, also hab ich mir gedacht ich probiert das mal anders und beiraus kahm nun folgende Konstallation:

        ich gehe davon aus das alles wie bereits oben beschrieben sich vorfindet.

        wir gehen wieder ins Webinterface der Sense, klicken auf DIAGNOSTICS->EDIT FILE
        udn geben bei
        Save/Load from path: /usr/local/www/status_interfaces.php
        ein und klicken auf "LOAD" , suchen uns folgende stelle:

        und navigieren zu zeile 39:

        und ersetzen folgengen code mit dem alten von zeile 39 bis 73

        if ($_POST) {
        	$interface = $_POST['interface'];
        	$ifcfg = &$config['interfaces'][$interface];
        	if ($_POST['submit'] == "Disconnect" || $_POST['submit'] == "Release") {
        $output = shell_exec('curl -b cookies.txt -c cookies.txt -m 10 -d "mCmInfoDsFreq1=xx&mCmInfoUsId1=xx" "http://192.168.100.1/goform/InitialScan"');		
        function warten(){
        echo "  Bitte warten ";
        $text = ".";
        for ($i=0; $i<120; $i++) {
             echo $text."\n";
             usleep(500000);
            }
        }
        if ($ifcfg['ipaddr'] == "dhcp")
        			interfaces_dhcp_down($interface);
        		if ($ifcfg['ipaddr'] == "dhcp")
                    warten();
        		else if ($ifcfg['ipaddr'] == "pppoe")
        			interfaces_wan_pppoe_down(); // FIXME: when we support multi-pppoe
        		else if ($ifcfg['ipaddr'] == "pptp")
        			interfaces_wan_pptp_down(); // FIXME: when we support multi-pptp
        	} else if ($_POST['submit'] == "Connect" || $_POST['submit'] == "Renew") {
        		if ($ifcfg['ipaddr'] == "dhcp")
                    interfaces_wan_configure();
                else if ($ifcfg['ipaddr'] == "dhcp")
        			interfaces_dhcp_up($interface);
        		else if ($ifcfg['ipaddr'] == "pppoe")
        			interfaces_wan_pppoe_up(); // FIXME: when we support multi-pppoe
        		else if ($ifcfg['ipaddr'] == "pptp")
        			interfaces_wan_pptp_up(); // FIXME: when we support multi-pptp
        	} else {
        		header("Location: index.php");
        		exit;
        	}
        }
        
        

        dann speichern nicht vergessen.

        damit hätten wir erstmal, dass wenn wir auf den button [Release] unter STATUS>INTERFACES klicken das sich das
        (1)modem neustartet
        (2)das WAN Interface …

        ... "down" , also wir schalten hier WAN ab
        ... "warten"  wir warten ca 45 sekunden bis die "Web-Interface" Seite neugeladen wird, da ungefähr auch solange das Modem braucht bis es fertig ist.

        wenn wir dann auf [Renew] klicken bekommen wir:
        … "configure", wir konfigurieren das interface neu durch die funktion interfaces_wan_configure()  was in der datei /etc/inc/interfaces.inc definiert wird

        so nun weiter mit dem editieren der datei /etc/inc/interfaces.inc

        also wieder unter:
        wir gehen wieder ins Webinterface der Sense, klicken auf DIAGNOSTICS->EDIT FILE
        udn geben bei
        Save/Load from path: /etc/inc/interfaces.inc
        ein und klicken auf "LOAD" , suchen uns fast am ende der Datei folgende stelle:

        und gehn zu zeile  bei mir ist es 813

        vor zeile 813 wird die MAC des WAN interfaces ermittelt
        $mac = get_interface_mac_address($wancfg['if']);

        und ersetzen die zeile mit

        if($mac == $mac) {
        

        sollte fertig so ausssehn

        	if ($wancfg['spoofmac']) {
        		mwexec("/sbin/ifconfig " . escapeshellarg($wancfg['if']) .
        			" link " . escapeshellarg($wancfg['spoofmac']));
        	}  else {
        
                        $mac = get_interface_mac_address($wancfg['if']);
        		if($mac == $mac) {
        			/*   this is not a valid mac address.  generate a
        			 *   temporary mac address so the machine can get online.
        			 */
        			echo "Generating new MAC address.";
        			$random_mac = generate_random_mac_address();
        			mwexec("/sbin/ifconfig " . escapeshellarg($wancfg['if']) .
        				" link " . escapeshellarg($random_mac));
        			$wancfg['spoofmac'] = $random_mac;
        			write_config();
        			file_notice("MAC Address altered", "The INVALID MAC address (33:22:11:cc:bb:aa) on interface {$wancfg['if']} has been automatically replaced with {$random_mac}", "Interfaces");
        		}
        	}
        

        ebenfalls speichern nicht vergessen.

        so fertig!
        das hat mich jetzt den ganzen nachmittag gekostet :P

        gruss ren22

        1 Reply Last reply Reply Quote 0
        • H
          hanz0
          last edited by

          Vielen Dank  :D hast mir viel Mühe erspart  ;)

          1 Reply Last reply Reply Quote 0
          • R
            ren22
            last edited by

            so da ich immer zu faul bin alles von hand zu machen nachdem ich mal wieder die sense neu aufgesetzt habe, habe ich mir ein script gebastelt was die arbeit für mich erledigt ,

            ihr müsste lediglich eure echte MAC des WAN interfaces in dem script eintragen unter zeile 19
            und ausführen.

            #!/bin/sh
            ## ren22 08.07.11  ..NO WARRANTY OF USAGE!!! USAGE AT YOUR OWN RISK!!! 
            ## die original MAC des WAN Interfaces eintragen bei Zeile 19 !!!
            ##getested unter pfSense 2.0-RC3 1g nanobsd "embebbed"
            ##2.0-RC3 (i386) 
            ##built on Tue Jun 21 18:21:10 EDT 2011 
            ##nanobsd (1g) 
            ##
            ##erstelle WAN MAC patch datei
            /bin/echo 'erstelle WAN MAC patch datei'
            #
            echo '--- /etc/inc/interfaces.inc	2011-07-06 20:52:28.000000000 +0000'> /tmp/wanif.patch
            echo '+++ /etc/inc/interfaces.inc.gepatched	2011-07-06 19:54:25.000000000 +0000'>> /tmp/wanif.patch
            echo '@@ -2596,7 +2596,7 @@'>> /tmp/wanif.patch
            echo '                 }'>> /tmp/wanif.patch
            echo ' 	}  else {'>> /tmp/wanif.patch
            echo ' 		$mac = get_interface_mac($realhwif);'>> /tmp/wanif.patch
            echo '-		if ($mac == "ff:ff:ff:ff:ff:ff") {'>> /tmp/wanif.patch
            echo '+		if ($mac == "nn:hh:tt:xx:yy:zz") {'>> /tmp/wanif.patch
            echo ' 			/*   this is not a valid mac address.  generate a'>> /tmp/wanif.patch
            echo ' 			 *   temporary mac address so the machine can get online.'>> /tmp/wanif.patch
            echo ' 			 */'>> /tmp/wanif.patch
            echo "patche interfaces.inc"
            patch < /tmp/wanif.patch /etc/inc/interfaces.inc
            ##
            ##erstelle phpreboot patch datei
            /bin/echo 'erstelle REBOOT PHP patch datei'
            echo '--- /usr/local/www/reboot.php	2011-07-06 19:51:50.000000000 +0000'> /tmp/rebootphp.patch
            echo '+++ /usr/local/www/reboot.php.gepatched	2011-07-06 19:53:39.000000000 +0000'>> /tmp/rebootphp.patch
            echo '@@ -67,6 +67,9 @@'>> /tmp/rebootphp.patch
            echo ' 		echo "";'>> /tmp/rebootphp.patch
            echo ' 		system_reboot();'>> /tmp/rebootphp.patch
            echo ' 		$rebootmsg = gettext("The system is rebooting now. This may take one minute.");'>> /tmp/rebootphp.patch
            echo '+                $output = shell_exec('\'route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.1\'');'>> /tmp/rebootphp.patch
            echo '+                $output = shell_exec('\'curl -b cookies.txt -c cookies.txt -m 10 -d \"mCmInfoDsFreq1=xx\&mCmInfoUsId1=xx\" \"http\:\/\/192.168.100.1/goform/InitialScan\"\'');'>> /tmp/rebootphp.patch
            echo '+'>> /tmp/rebootphp.patch
            echo ' 	} else {'>> /tmp/rebootphp.patch
            echo ' 		exit;'>> /tmp/rebootphp.patch
            echo ' 	}'>> /tmp/rebootphp.patch
            echo "patche reboot.php"
            patch < /tmp/rebootphp.patch /usr/local/www/reboot.php
            #echo "Fertig."
            
            if [ -z "`pkg_info | grep '^curl'`" ]; then
                echo "    installing curl"
                pkg_add -r curl
            else
                echo "curl bereits installiert!"
            fi
            
            echo "Fertig! :)"
            

            das ganze pack ihr in eine .sh "shell" datei und geht im web interface menu auf "DIAGNOSTICS->COMMAND PROMPT" ,
            dort unter "UPLOAD" das script uploaden, was nach /tmp geuploaded wird.
            jetzt führen wir was ganze aus unter "EXECUTE SHELL COMMAND" , dor tippen wir ein:

            sh /tmp/meindatei.sh

            und dann auf "EXECUTE" klicken…

            warten wir ein wenig falls curl nicht installiert ist bis wir eine rückmeldung bekommen "Fertig :)"  sollte wenn alles orgnungsgemäß ablief erscheinen.
            nun können wir wie oben beschrieben unter reboot das modem neustarten und die sense im eine neue ip bei dem kabel deutschland provider zubekommen.

            grüsse ren22

            rndwan.sh.txt

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.