vafk18
Goto Top

Zwei Standorte in Deutschland und EU mit pfSense und FritzBox 7490 für VoIP verbinden

article-picture

back-to-topEinleitung


Ausschlaggebend für dieses Projekt war das Hochwasser in der Eifel am 14. Juli 2021, durch das u.a. große Teile der Infrastruktur zerstört wurden. Wir mußten kurzfristig mit unserer Firma in einen temporären Standort ausweichen und da dieses im Ausland lag und wir weiterhin unter unserer Geschäftnummer erreichbar sein wollten, wogen wir die Möglichkeit der Telefonweiterleitung und der Einrichtung eines VPN's für VoIP ab, über das die Telefone im zweiten Standort als Nebenstelle der am Hauptsitz laufenden FritzBox VoIP laufen würden. Eine Rufumleitung wäre die technisch einfachere Lösung. Dadurch wären jedoch weitere Kosten entstanden, durch den zweiten Festnetzanschluß (mit Wartezeit) und den Weiterleitungsgebühren. Da zudem bereits am zweiten Ort ein Internetanschluß (Funkmodem mit fester IP-Adresse) lag, haben wir uns für die Einrichtung des VPN entschieden.

Mit ausführlicher Unterstützung von @aqui ist mein erstes Tutorial entstanden. @aqui gilt mein besonderer Dank für seine unermüdliche Geduld, die er mir hat zukommen lassen, als mich langwierige Fehlersuche gequält hat.


back-to-topBenötigte Hardware


In der Eifel war die Internetanbindung mit einem Modem VMG3006-D70A (VDSL-Anschluß der Deutschen Telekom) eingerichtet, dahinter pfSense (Firewall) und FritzBox 7490 (VoIP). Am entfernten Standort wurde die gleiche pfSense eingerichtet. Wir haben uns für FritzBox 7490 entschieden, da es sie mit einem defekten Modem für 50 Euro gibt. Das Modem wird nicht benötigt und aufgrund des günstigen Preises erledigen mehrere FritzBoxen 7490 an beiden Standorten das WLAN (Mesh). Für das Telefonieren werden Cisco-IP-Telefone 7945/7965 eingesetzt. Wichtig ist zu beachten, daß an einer FritzBox 7490 maximal 10 IP-Telefone eingerichtet werden können.

back-to-topEinrichtung der pfSense


Auf die Beschreibung des mit IPSec eingerichteten VPN wird aus Platzgründen verzichtet. Für das VoIP wurden folgende Einstellungen vorgenommen:

p01
p02
p03
p04

back-to-topEinrichtung der FritzBox 7490 für den Betrieb als "nur" VoIP hinter pfSense


Bei der FritzBox 7490 ist wurde das Modem (und damit die Firewall) in
Internet - Zugangsdaten
abgeschaltet und folgende Einstellungen vorgenommen:

Internetanbieter: weiterer Internetanbieter
Anschluss: Anschluss an externes Modem oder Router
Betriebsart: Vorhandene Internetverbindung mitbenutzen ...
Verbindungseinstellungen: IP-Adresse manuell festlegen
Standard-Gateway: IP-Adresse der pfSense
Primärer DNS-Server: IP-Adresse der pfSense
Sekundärer DNS-Server: IP-Adresse der pfSense

Als nächstes werden die Rufnummer(n), , Telefongeräte und Benutzer mit Passwort eingerichtet. Auf diese Beschreibung wird aus Platzgründen verzichtet, da allgemein bekannt. Wir haben einen IP-Anschluß der Deutschen Telekom und eine virtuelle Festnetzrufnummer von dus.net)

Wichtig sind drei Einstellungen, die wenn übersehen, eine Fehlersuche nach sich ziehen können.

1) Bei der Vergabe des Benutzernamens sind fünf Nullen und dann die Zahlen der vordefinierten Nebenstellen von 620 bis 629 zwingend notwendig, also 00000620 bis 00000629. Bei älteren FritzBoxen war der Benutzername dreistellig, in der FrizBox 7490 ist er achtstellig.

2) Für die am entfernten Ort liegenden IP-Telefone die Anmeldung aus dem Internet erlauben, damit sie sich an der FritzBox einbuchen können
Telefonie - Telefoniegeräte - "Telefon auswählen" - Anmeldedaten

Diese Auswahl ist bei der erstmaligen Einrichtung eines IP-Telefons nicht vorhanden und wird deshalb oft vergessen. Nach Abschluß der Einrichtung des Telefons muß man daher noch einmal in das gleiche Menü gehen, um die Schaltfläche anklicken zu können.

3) Bei Bedarf alle IP-Telefone markieren, die Anrufe ins Ausland machen dürfen
Telefonie - Eigene Rufnummern - Anschlusseinstellungen - Sicherheit - Auswahl ändern


back-to-topEinrichtung von TFTP zum Betanken von Cisco IP-Telefonen und Firewallregeln für VoIP auf pfSense


Ich habe einiges an Zeit gebraucht, um eine funktionierende Konfig für das Telefon zusammenzustellen. Im Internet kursieren zahlreiche Dateien für diverse Cisco-IP-Telefone und darin sind Einstellungen enthalten, die bei bestimmten Modellen nicht funktionieren und wiederum benötigte Einstellungen nicht enthalten. Berücksichtigt daher, daß es sich bei dieser Einstellung um eine mit Cisco IP 7945/7965 und FritzBox 7490 geprüfter handelt. Andere Telefone und andere FritzBoxen können funktionieren, müssen es aber nicht. Wichtig ist, auf die Groß-/Kleinschreibung bei der Benennung der Dateien zu achten: dialplan.xml ist richtig, Dialplan.xml hingegen falsch.

Zuerst wird auf der pfSense tftpd (TFTP-Server) installiert
System - Package Manager
und aktiviert
Services - TFTP Server - Settings 
p05

Damit die Cisco-Telefone beim Booten die Firmware- und Konfigurationsdateien am TFTP-Server finden, muß im DHCP-Server der pfSense die Option 66 und 150 eingetragen werden:
p06

back-to-topEinrichtung von Cisco IP 7945/7965 für SIP zum Betrieb an einer FritzBox 7490


Dafür werden auf der pfSense unter
Services - TFTP Server - Files
folgende Dateien hochgeladen:

AppDialRules.xml
apps45.9-4-2ES26.sbn
cnu45.9-4-2ES26.sbn
cvm45sip.9-4-2ES26.sbn
dialplan.xml
DialTemplate.xml
dsp45.9-4-2ES26.sbn
jar45sip.9-4-2ES26.sbn
List.xml
ringlist.xml
SIP45.9-4-2SR3-1S.loads
term45.default.loads
term65.default.loads
XMLDefault.cnf.xml

sowie für jedes IP-Telefon die zugehörige SEPMAC.cnf.xml-Datei, z.B. SEPCAD846B86F31.cnf.xml.

Diese weiter unten aufgeführte Beispielkonfiguration enthält bereits Einträge für eine Lokalisierung in Deutsch. Die hierfür benötigten Dateien habe ich hier nicht aufgeführt. Alle unsere Betriebssysteme sind in Englisch so auch unsere Telefone. Wer Hilfestellung bei der Installation anderer Sprachen benötigt, benutze bitte die Forumsuche.

Wie man Cisco-Telefone einrichtet, damit sie die Firmware bzw. Konfigurationsdatei laden, kann z.B. in dieser Anleitung nachgelesen werden Cisco Telefone für All IP Anschluss, FritzBox und andere VoIP Anlagen fit machen

back-to-topBeispiel einer SEPMAC.cnf.xml für Cisco IP 7945 und FritzBox 7490


Nachfolgend ist eine unserer SEPMAC.cnf.xml aufgeführt:

Die IP-Adresse 192.168.2.1 ist die unserer pfSense am Hauptstandort und wird für NTP benötigt. Die IP-Adresse 192.168.2.2 ist die der FritzBox 7490 und wird für SIP benötigt.

Da wir tagelang das Problem hatten, daß sich interne Gesprächspartner erst nach 2-3-maliger Wahlwiederholung hörten, haben wir zur Eingrenzung der Fehlersuche den G.711 Codec statt des G.722 verwendet. Derzeit läuft die Telefonie stabil und wir sind immer noch in der Testphase. Wenn es bleibt und wir Zeit haben, werden wir es mit dem G.722 versuchen, auch wenn ich keinen Unterschied in der Übertragungsqualität festellen konnte.

Mit
<transportLayerProtocol>1</transportLayerProtocol>
wird die für FritzBox 7490 notwendige TCP-Encapsulation ausgewählt. Bei älteren FritzBoxen war UDP möglich.

Hier
<authPassword>password</authPassword>
wird das Password des in der FritzBox 7490 des jeweiligen Telefons angelegten Benutzernamens eingetragen.

Diese Anpassungen sind nicht notwendig, dienen aber der besseren Übersicht am Telefon:
Bezeichnung des Telefons
<phoneLabel>Büro</phoneLabel>
Eigene Rufnummer der Ausgangsleitung
<featureLabel>123456</featureLabel>

Cisco IP 7945 haben zwei Tasten, Cisco 7965 sechs. Mit einem oder mehreren Erweiterungsmodulen 7914 sind es entsprechend mehr.

Die folgenden Einstellungen müssen mit dem in der FritzBox 7490 eingetragenen Benutzernamen, z.B. 00000620 übereinstimmen

<name>00000620</name>
<displayName>00000620</displayName>
<contact>00000620</contact>
<authName>00000620</authName>


Für das Editieren verwendeten wir Notepad ++ Editor. Wir verzichteten auf jegliche Kommentare in der Datei, da es u.U. bei Cisco-Telefonen zu Problemen kommen kann.

Anhang: (Konfig Dateien)
Beispiel SEPMAC.cnf.xml - Datei

<?xml version="1.0" encoding="UTF-8"?>  
<device>
	<deviceProtocol>SIP</deviceProtocol>
	<sshUserId>cisco</sshUserId>
	<sshPassword>cisco</sshPassword>
	<authenticationURL>http://cisco.znil.net/ciscoauth.php</authenticationURL>
	<devicePool>
	<dateTimeSetting>
	<dateTemplate>D.M.YY</dateTemplate>
	<timeZone>Central Europe Standard/Daylight Time</timeZone>
	<ntps>
		<ntp>
			<name>192.168.2.1</name>
			<ntpMode>Unicast</ntpMode>
		</ntp>
	</ntps>
	</dateTimeSetting>
	<callManagerGroup>
		<members>
		<member priority="0">  
	<callManager>
	<ports>
		<ethernetPhonePort>2000</ethernetPhonePort>
		<sipPort>5060</sipPort>
		<securedSipPort>5061</securedSipPort>
		</ports>
		<processNodeName>192.168.2.2</processNodeName>
	</callManager>
	</member>
	</members>
	</callManagerGroup>
	</devicePool>
	<commonProfile>
		<phonePassword></phonePassword>
		<backgroundImageAccess>true</backgroundImageAccess>
		<callLogBlfEnabled>2</callLogBlfEnabled>
	</commonProfile>
	<loadInformation>SIP45.9-4-2SR3-1S</loadInformation>
	<vendorConfig>
	<disableSpeaker>false</disableSpeaker>
	<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
	<pcPort>0</pcPort>
	<settingsAccess>1</settingsAccess>
	<garp>0</garp>
	<voiceVlanAccess>0</voiceVlanAccess>
	<videoCapability>0</videoCapability>
	<autoSelectLineEnable>0</autoSelectLineEnable>
	<sshAccess>0</sshAccess>
	<sshPort>22</sshPort>
	<webAccess>0</webAccess>
	<spanToPCPort>1</spanToPCPort>
	<loggingDisplay>1</loggingDisplay>
	<loadServer></loadServer>
	<daysDisplayNotActive></daysDisplayNotActive>
	<displayOnTime>03:00</displayOnTime>
	<displayOnDuration>00:01</displayOnDuration>
	<displayIdleTimeout>00:01</displayIdleTimeout>
	<displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>
	</vendorConfig>
	<userLocale>
	<name>German_Germany</name>
	<uid>1</uid>
	<langCode>de_DE</langCode>
	<version></version>
	<winCharSet>iso-8859-1</winCharSet>
	</userLocale>
	<networkLocale>Germany</networkLocale>
	<networkLocaleInfo>
	<name>Germany</name>
	<version></version>
	</networkLocaleInfo>
	<deviceSecurityMode>1</deviceSecurityMode>
	<directoryURL></directoryURL>
	<idleURL></idleURL>
	<informationURL></informationURL>
	<messagesURL></messagesURL>
	<proxyServerURL></proxyServerURL>
	<servicesURL></servicesURL>
	<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
	<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
	<dscpForCm2Dvce>96</dscpForCm2Dvce>
	<transportLayerProtocol>1</transportLayerProtocol>
	<capfAuthMode>0</capfAuthMode>
	<capfList>
		<capf>
			<phonePort>3804</phonePort>
		</capf>
	</capfList>
	<certHash></certHash>
	<encrConfig>false</encrConfig>
	<sipProfile>
		<sipProxies>
			<backupProxy></backupProxy>
			<backupProxyPort></backupProxyPort>
			<emergencyProxy></emergencyProxy>
			<emergencyProxyPort></emergencyProxyPort>
			<outboundProxy></outboundProxy>
			<outboundProxyPort></outboundProxyPort>
			<registerWithProxy>true</registerWithProxy>
		</sipProxies>
		<sipCallFeatures>
			<cnfJoinEnabled>true</cnfJoinEnabled>
			<callForwardURI>x--serviceuri-cfwdall</callForwardURI>
			<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
			<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
			<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
			<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
			<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
			<rfc2543Hold>false</rfc2543Hold>
			<callHoldRingback>0</callHoldRingback>
			<localCfwdEnable>true</localCfwdEnable>
			<semiAttendedTransfer>true</semiAttendedTransfer>
			<anonymousCallBlock>0</anonymousCallBlock>
			<callerIdBlocking>0</callerIdBlocking>
			<dndControl>0</dndControl>
			<remoteCcEnable>true</remoteCcEnable>
		</sipCallFeatures>
		<sipStack>
			<sipInviteRetx>6</sipInviteRetx>
			<sipRetx>10</sipRetx>
			<timerInviteExpires>180</timerInviteExpires>
			<timerRegisterExpires>3600</timerRegisterExpires>
			<timerRegisterDelta>5</timerRegisterDelta>
			<timerKeepAliveExpires>120</timerKeepAliveExpires>
			<timerSubscribeExpires>120</timerSubscribeExpires>
			<timerSubscribeDelta>5</timerSubscribeDelta>
			<timerT1>500</timerT1>
			<timerT2>4000</timerT2>
			<maxRedirects>70</maxRedirects>
			<remotePartyID>false</remotePartyID>
			<userInfo>None</userInfo>
		</sipStack>
		<autoAnswerTimer>1</autoAnswerTimer>
		<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
		<autoAnswerOverride>true</autoAnswerOverride>
		<transferOnhookEnabled>false</transferOnhookEnabled>
		<enableVad>false</enableVad>
		<preferredCodec>g711alaw</preferredCodec>
		<dtmfAvtPayload>101</dtmfAvtPayload>
		<dtmfDbLevel>3</dtmfDbLevel>
		<dtmfOutofBand>avt</dtmfOutofBand>
		<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
		<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
		<kpml>3</kpml>
		<natEnabled>false</natEnabled>
		<natAddress></natAddress>
		<stutterMsgWaiting>0</stutterMsgWaiting>
		<callStats>false</callStats>
		<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
		<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
		<startMediaPort>16384</startMediaPort>
		<stopMediaPort>32766</stopMediaPort>
		<voipControlPort>5060</voipControlPort>
		<dscpForAudio>184</dscpForAudio>
		<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
		<dialTemplate>dialplan.xml</dialTemplate>
		<phoneLabel>Büro</phoneLabel>
		<sipLines>
			<line button="1">  
				<featureID>9</featureID>
				<featureLabel>123456</featureLabel>
				<name>00000620</name>
				<displayName>00000620</displayName>
				<contact>00000620</contact>
				<proxy>USECALLMANAGER</proxy>
				<port>5060</port>
				<autoAnswer>
				<autoAnswerEnabled>2</autoAnswerEnabled>
				</autoAnswer>
				<callWaiting>3</callWaiting>
				<authName>00000620</authName>
				<authPassword>password</authPassword>
				<sharedLine>false</sharedLine>
				<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
				<messagesNumber>55000</messagesNumber>
				<ringSettingIdle>4</ringSettingIdle>
				<ringSettingActive>5</ringSettingActive>
				<forwardCallInfoDisplay>
				<callerName>true</callerName>
				<callerNumber>true</callerNumber>
				<redirectedNumber>true</redirectedNumber>
				<dialedNumber>true</dialedNumber>
				</forwardCallInfoDisplay>
			</line>
			<line button="2">  
				<featureID>2</featureID>
				<featureLabel>Werkstatt</featureLabel>
				<speedDialNumber>**621</speedDialNumber>
			</line>
		</sipLines>
	</sipProfile>
</device> 

back-to-topWeiterführende Links zu Anleitungen rund um pfSense, Cisco, FritzBox und VPN


Cisco Telefone für All IP Anschluss, FritzBox und andere VoIP Anlagen fit machen

PfSense VPN mit L2TP (IPsec) Protokoll für mobile Nutzer

IPsec VPN Praxis mit Standort Vernetzung Cisco, Mikrotik, pfSense, FritzBox u.a

IPsec IKEv2 Standort VPN Vernetzung mit Cisco, pfSense OPNsense und Mikrotik

Cisco, Mikrotik, pfSense VPN Standort Vernetzung mit dynamischem Routing

Content-Key: 1611592163

Url: https://administrator.de/contentid/1611592163

Printed on: April 24, 2024 at 22:04 o'clock