Asterisk + Cisco SPA303 + VPN + PPPoE

Fórumok

Sziasztok

Adott egy Asterisk FreePBX VoIP központ. Rajta több Cisco SPA303 telefon, melyek tökéletesen működtek egészen addig, amíg a telefon végpontokat VPN mögé nem tettem.
Az Asterisket most már egy VPN szerveren keresztül érik el. Így néz ki:
otthoni alháló Cisco telefonnal --WRT54GL router openvpn klienssel----Internet --vpn szerver---- OpenVPN klienst futtató Asterisk

A VPN-t hónapok óta használom a különböző alhálók elérésére, jól működik, és nem is volt gond. Ha a WRT54GL-re kötött PPPoE modem új IP-t kapott, a vpn újracsatlakozott, beállított fix VPN IP-t kapott a router, pingelni is tudtam/tudok mindenkit mindenhonnan, de most, hogy a telefon is VPN mögött van, a telefon nem mászik vissza a szintén VPN mögött lévő Asteriskre.
Pedig Asteriskről tudom pingelni a WRT54GL VPN oldali lábát ezidő alatt is. VPN szerverről tudom pingelni a telefon belső IP-jét. A VPN ugyanúgy korrekten felépül.
A telefonban bekapcsoltam a távoli logot, ezt írja:


Aug  2 13:05:42 145.236.123.90 [0]Reg Addr Change(0) 0:5060->a5201e5:5060
Aug  2 13:05:58 145.236.123.90 [0]SIP:RegFailed;Retry in 10s
Aug  2 13:06:08 145.236.123.90 [0]Reg Addr Change(0) a5201e5:5060->0:5060
Aug  2 13:06:08 145.236.123.90 [0]SIP:RegFailed;Retry in 10s
Aug  2 13:06:13 145.236.123.90 [0]Reg Addr Change(0) 0:5060->a5201e5:5060
Aug  2 13:06:29 145.236.123.90 [0]SIP:RegFailed;Retry in 10s
Aug  2 13:06:41 145.236.123.90 [0]Reg Addr Change(0) a5201e5:5060->0:5060
Aug  2 13:06:41 145.236.123.90 [0]SIP:RegFailed;Retry in 10s
Aug  2 13:06:41 145.236.123.90 request reboot type=2 reason=Provisioning(4) <<< én adtam ki
Aug  2 13:06:44 145.236.123.90 [0]Reg Addr Change(0) 0:5060->a5201e5:5060
Aug  2 13:07:34 145.236.123.90 System started: ip@192.168.15.145, reboot reason:W4
Aug  2 13:07:34 145.236.123.90 SCCPTCP:ERR:Can't bind to c0a80f91:5060 errno=49
Aug  2 13:07:34 145.236.123.90 [0]Reg Addr Change(0) 0:0->a5201e5:5060
Aug  2 13:07:49 145.236.123.90 [0]Reg Addr Change(0) 0:0->a5201e5:5060

E soroktól kezdve online és hibamentes egészen addig amíg IP-t nem váltok.
De ha PPPoE-n IP-t váltok, leakad és csak a reboot segít.
Olvastam, hogy VoIP + pfsense rendszerrel szívtak hasonló leakadást. Ott a connection table ragadt be és a pfsense-t kellett simogatni, hogy átálljon. Én újraindítottam a WRT54GL-t, a telefon akkor sem tért észhez. Csak akkor regisztrál fel ismét, ha a telefon újraindítom.
Az Asterisk logjában unreachable addig....

Hol lehet a gond?

Hozzászólások

Vpn subnet bekerülf a freepbx networks közé?

Asteriskről tudod e pingetni a telefont?
"ip r s" az asterisken, a vpn szerveren, és az WRT54GL-en.
Feltételezve, hogy a WRT54GL-en openwrt van.

Asteriskről nem, mert:
Asterisk VPN IP-je: 10.82.1.29 (csatlakozik openvpn service 1-re), vpn gw 10.82.1.1
WRT54GL VPN IP-je: 10.81.0.50 (csatlakozik openvpn service 2-re), vpn gw 10.81.0.1
Telefon IP-je WRT54GL mögött: 192.168.15.145

Asterisk és WRT54GL egy "VPN koncentrátorba" fut be, ami egy linuxos vpn szerver több openvpn szerverrel. Belső linuxos route-tal oldom meg az átjárhatóságot az egyes openvpn service-k között.
Az iroute-tal játszok VPN-en belül, így adott alhálót ismertetek az openvpn szerverrel + push-route -tal adott vpn végpontnak kipusholom a route-ot, hogy vpnen keresztül keresse.
Az átjárhatósággal szerintem nincs baj, mert a PPPoE újracsatlakozásig nincs gond.

Az Asterisk a telefon forrás IP-jének 10.82.1.1 -t írja ki, ami valójában az Asterisk vpn szerver olali gw IP-je.
Közvetlenül ugye nincsenek egy vpn service alatt.

Úgy hiszem az a gond, hogy addig amíg netre ment ki a telefon és netről érte el az Asterisket, az Asterisk látta a WAN IP váltást és rendesen lekezelte az újracsatlakozást.
Most viszont a VPN révén nem változik az Asterisk által látott IP, az mindvégig a WRT54GL VPN lába.
Annyi változik, hogy más WAN IP-n keresztül megy ki a tunnel, de az Asterisket ez nem érinti...nem lenne szabad. Gondolom, ha belső IP-t láttatnék az Asteriskkel, mivel az sem változik, nem vagyok előrébb.
Olvastam, hogy különféle NOTIFY és REGISTER üzenetket küld a telefon a keepalive során. Lehet, hogy itt hasal el valami az PPPoE újracsatlakozással együtt. Sajnos a működésének ezen részét még nem látom világosan.

mod: most többedik alkalommal újraindítva a WRT54GL routert, nem kaptam új IP-t. Az előző WAN IP-t használom, és így is


Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status    Description
xxxx/xxx                 10.82.1.1                                D  Yes        Yes         A  1024     UNREACHABLE

Asterisken csak openvpn kliens fut.

1 hálókártya netről is elérhető publikus IP-vel.
Egészen eddig csak ez ment.
+ lett egy tun0 interfész, ahol a fenti telefonokat próbálnám stabilan fellógatni.

Ahol usernek fix IP van, ott tűzfalon beengedem a klienst publik IP-re, ahol usernek dinamikus IP van, ott vpn routert telepítek le és VPN oldalról engedem be.
Mindenki más számára láthatatlan a VoIP szerver.

Ahha. Openvpn-ben a peerek azért látják is egymást?

client-to-client

Ugyanakkor még egyszer elmondanám, hogy:
A VPN szerver és a belső entitások routing alapján kapják már meg az információt, ne pedig úgy, hogy fellógatod őket erre a hálózatra. Ha tehát X gép a VPN szerver és Y gép az alkalmazás szerver, akkor a távoli hálózatot tessék már a routeren megroute-olni, hogy a távoli hálózat az X gépen keresztül elérhető.

Ebben a fórumszálban ezt eléggé elmagyaráztuk már.

Ha a peerek alatt a vpn végpontokat érted, igen látják egymást alapból vpn 10.x.x.x ip-vel +
ahogy írtam bizonyos végpontok irute és pushroute -tal is el vannak látva + linuxban "route del -net 192.168.x.0 netmask 255.255.255.0 gw 10.81.0.1"
Így bizonyos végpontokról bizonyos végpontok felé be lehet látni alhálóba is.
Asterisk nem lát be a WRT54GL mögé, feltételezem nem is kell, hiszen, ha Internet felől közelítem meg az Asterisket, akkor sem látna be router mögé. De próbaképpen ezen változtatni fogok egy teszt erejéig.

"Ha tehát X gép a VPN szerver és Y gép az alkalmazás szerver, akkor a távoli hálózatot tessék már a routeren megroute-oln"

A komplett VPN route táblát megkapja a WRT54GL. Több távoli alhálót és többek között az Astrisk VPN oldali IP-jét elérem. A kapcsolat felépül, hívást oda-vissza lehet kezdeményezni. A gond szakadás után történik.

"Ebben a fórumszálban ezt eléggé elmagyaráztuk már."

Hol? Egy szálat nézünk vagy elbeszélünk egymás mellett?:)

Kicsit debugoltam.
A WRT54GL VPN klienst és az Asterisk VPN kliens egy VPN service alá hoztam, hogy ne kelljen linux route.
Asterisken: tcpdump -i tun0


13:55:03.959503 IP 10.81.0.29.sip > 10.81.0.1.sip: SIP, length: 554
13:55:03.995613 IP 10.81.0.1 > 10.81.0.229: ICMP 10.81.0.1 udp port sip unreachable, length 556
13:55:08.737658 IP 10.81.0.1.blackjack > 10.81.0.29.sip: SIP, length: 480
13:55:08.738364 IP 10.81.0.29.sip > 10.81.0.1.blackjack: SIP, length: 540
13:55:08.786766 IP 10.81.0.1.blackjack > 10.81.0.29.sip: SIP, length: 633
13:55:08.788394 IP 10.81.0.29.sip > 10.81.0.1.blackjack: SIP, length: 554
13:55:08.788597 IP 10.81.0.29.sip > 10.81.0.1.blackjack: SIP, length: 560
13:55:08.834722 IP 10.81.0.1.blackjack > 10.81.0.29.sip: SIP, length: 411
13:55:18.797009 IP 10.81.0.1.blackjack > 10.81.0.29.sip: SIP, length: 374 

Majd ismét IP 10.81.0.29.sip > 10.81.0.1.sip: SIP, length: 554
IP 10.81.0.1 > 10.81.0.29: ICMP 10.81.0.1 udp port sip unreachable, length 556

Emellett Asterisk szerint kapcsolat OK, 49ms.
Olyan mintha a telefon a keepalive-ot el tudná küldeni, de az Asterisk a nem tudná a 10.81.0.1-en keresztül elérni a WRT54GL adott portját illetve már a .1-en sem halad továb.
Miért .1? Mert ezt a push-route-ot kapta az Asterisk:
push "route 192.168.15.0 255.255.255.0 10.81.0.1"
Ezért ez látszik nála adott mellék forrás IP-jének.

A WRT54GL-en VPN NAT-ot kikapcsoltam, így vpn-ben lévő hostok elérésekor ezek a hostok az igazi alhálós IP-t látják forrás IP-nek.
Így az Asterisk:


Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status Description
xxxx/xxxx                 192.168.15.145                           D  Yes        Yes         A  1024     OK (49ms)

Telefon reboot követően az előbbi tcpdump ilyeneket mutat:


14:07:13.909637 IP 192.168.15.145.1024 > 10.81.0.29.sip: SIP, length: 374
14:07:13.909964 IP 10.81.0.29.sip > 192.168.15.145.sip: SIP, length: 430
14:07:23.949452 IP 192.168.15.145.1024 > 10.81.0.29.sip: SIP, length: 374
14:07:23.949721 IP 10.81.0.29.sip > 192.168.15.145.sip: SIP, length: 430
14:07:23.995259 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
14:07:24.044540 IP 192.168.15.145.1024 > 10.81.0.29.sip: SIP, length: 417

Tehát megvan az oda-vissza irány.
Ennek ellenére, ha rebootolom a WRT54GL-t tcpdump Asterisken:
14:22:52.127229 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
14:22:53.127973 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
14:22:54.126964 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
14:22:55.126958 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
14:22:56.127935 IP 10.81.0.29.sip > 192.168.15.145.1024: SIP, length: 562
Nem jönn válasz a telefontól, amit immár rendes belső hálós IP-n keres és pingelni is tudom Asteriskről.

Status Asterisken: UNREACHABLE

Status a telefonon: Registration State: Failed - No Response
Telefon remote logban:
[0]SIP:RegFailed;Retry in 10s
[0]SIP:RegFailed;Retry in 10s
[0]SIP:RegFailed;Retry in 10s

Hogyan tovább?