Επιστροφή στο Forum : PJSIP & Vodafone
Προσπαθώ να κάνω την οικιακή γραμμή μου VF να παίξει με pjsip. Έχω καταφέρει με το παρακάτω config να φτάνει η εισερχόμενη στον asterisk μου, αλλά της ρίχνω άκυρο (SIP/2.0 401 Unauthorized) και δεν καταφέρνω να βρω γιατί.
Το config είναι αυτό (έστω 23100000001 το τηλ. μου):
[VF]
type = registration
retry_interval = 20
max_retries = 10
contact_user = 2310000001
expiration = 120
transport = simpletrans
outbound_auth = VF
client_uri = sip:2310000001@ngn.hol.net
server_uri = sip:ngn.hol.net
[VF]
type = auth
auth_type=userpass
password = XXXXXXXX
username = 2310000001
[VF]
type = aor
contact = sip:2310000001@ngn.hol.net
[VF]
type = identify
endpoint = VF
;match = ngn.hol.net,10.120.65.8,10.120.0.0/16 -- μπα, δεν παίζει oύτε αυτό
match = ngn.hol.net
[VF]
type = endpoint
context = incoming-VF
disallow = all
allow = ulaw
allow = alaw
allow = gsm
from_user = 2310000001
from_domain = ngn.hol.net
auth = VF
outbound_auth = VF
aors = VF
Με ένα tcpdump βλέπω:
19:26:47.267693 IP ngn.hol.net.sip > raspalkis.sip: SIP: INVITE sip:2310000001@192.168.1.136:5060 SIP/2.0
E..9..@.8...
xA..........%l~INVITE sip:2310000001@192.168.1.136:5060 SIP/2.0
Max-Forwards: 8
Via: SIP/2.0/UDP 10.120.65.8:5060;branch=z9hG4bKg3ZqXXXXXXXXXXXgof3mzrb3
To: "HOL HOL" <sip:2310000001@ngn.hol.net>
From: <sip:6944XXXX-TO-KINITO-MOU-XXXX@10.120.27.66;user=phone>;tag=h7g4EsXXXXXXXXXX19627207238-
Call-ID: BW19XXXXXXXXXXXXXXX4928@10.120.17.80
CSeq: 212268324 INVITE
Contact: <sip:sgc_c@10.120.65.8;transport=udp>
Record-Route: <sip:10.120.65.8;transport=udp;lr>
Min-Se: 900
Privacy: none
Session-Expires: 1800
Supported: 100rel
Supported: timer
Content-Type: application/sdp
Content-Length: 285
Recv-Info: x-broadworks-client-session-info
Allow: ACK, BYE, CANCEL, INFO, INVITE, OPTIONS, PRACK, REFER, NOTIFY, UPDATE
Accept: application/sdp
Accept: multipart/mixed
v=0
o=BroadWorks 1111585960 1 IN IP4 10.120.60.44
s=-
c=IN IP4 10.120.60.44
t=0 0
a=sendrecv
m=audio 45574 RTP/AVP 8 18 98
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:98 telephone-event/8000
a=fmtp:98 0-15
a=sendrecv
a=silenceSupp:off - - - -
19:26:47.269114 IP raspalkis.sip > ngn.hol.net.sip: SIP: SIP/2.0 401 Unauthorized
E...X.@.@.......
xA........WSIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.120.65.8:5060;rport=5060;received=10.120.65.8;branch=z9hG4bKg3ZqXXXXXXXXXXXXXXmzrb3
Record-Route: <sip:10.120.65.8;transport=udp;lr>
Call-ID: BW192XXXXXXXXXXXXXXXX928@10.120.17.80
From: <sip:6944-TO-KINITO-MOU-XXXXXXX@10.120.27.66;user=phone>;tag=h7g4XXXXXXXXXXXXXXXX7207238-
To: "HOL HOL" <sip:2310000001@ngn.hol.net>;tag=z9hG4bKgXXXXXXXXXXXXXXXXXXXXXX3mzrb3
CSeq: 212268324 INVITE
WWW-Authenticate: Digest realm="asterisk",nonce="1619627207/cc5662eXXXXXXXXXXXXXXXXXX97309",opaque="421edXXXXXXXXXX9d0",algorithm=md5,qop="auth"
Server: Asterisk PBX 16.2.1~dfsg-1+deb10u2
Content-Length: 0
19:26:47.298604 IP ngn.hol.net.sip > raspalkis.sip: SIP: ACK sip:2310000001@192.168.1.136:5060 SIP/2.0
E.....@.8..,
xA............uACK sip:2310000001@192.168.1.136:5060 SIP/2.0
Max-Forwards: 70
Via: SIP/2.0/UDP 10.120.65.8:5060;received=10.120.65.8;rport=5060;branch=z9hGXXXXXXXXXXXXXXXXXXXX3mzrb3
To: "HOL HOL" <sip:2310000001@ngn.hol.net>;tag=z9hG4bXXXXXXXXXXXXXXXXXXmzrb3
From: <sip:6944-TO-KINITO-MOU-XXXXXXX@10.120.27.66;user=phone>;tag=h7g4XXXXXXXXXXXXXXXXX7238-
Call-ID: BW1926XXXXXXXXXXXXXX4928@10.120.17.80
CSeq: 212268324 ACK
Content-Length: 0
Τι έχει το χρυσό μου και δεν κουδουνάει; :sorry:
Επειδή κάνεις authenticate τις εισερχόμενες, το 401 που απαντάει ο asterisk είναι μέρος της διαδικασίας. Αν δεν κάνεις απλά θα περάσει μέσα.
Δεν βλεπω να εχει κατι τέτοιο στο config.
Επισης στο inviteεχει 192.168 αντι. για 10.χ
Λογικα η σειρα του auth ειναι με ip και γιαυτο βαρραει
Επειδή κάνεις authenticate τις εισερχόμενες, το 401 που απαντάει ο asterisk είναι μέρος της διαδικασίας. Αν δεν κάνεις απλά θα περάσει μέσα.
Αυτή η διαδικασία υπάρχει μόνο στο pjsip και όχι στο sip; Γιατί με αντίστοιχο dump που έκανα όταν χρησιμοποιώ το sip.conf αντί του pjsip.conf και όλα λειτουργούν, βλέπω ότι στο SIP INVITE της VF όπως φαίνεται στο προηγούμενο μήνυμά μου, ο asterisk απαντάει με Trying και όχι με 401. Τότε δεν γίνονται authenticate οι κλήσεις;
19:12:43.098335 IP raspalkis.sip > ngn.hol.net.sip: SIP: SIP/2.0 100 Trying
E.......@.......
xA........SSIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.120.65.8:5060;branch=z9hGXXXXXXXXXXXXX9unebbk8d;received=10.120.65.8
Record-Route: <sip:10.120.65.8;transport=udp;lr>
From: <sip:6944-TO-KINITO-MOU@10.120.19.130;user=phone>;tag=h7g4EXXXXXXXXXXXX064-
To: "HOL HOL" <sip:2310000001@ngn.hol.net>
Call-ID: BW191XXXXXXXXXXXXXX800@10.120.17.80
CSeq: 211846237 INVITE
Server: Asterisk PBX 16.2.1~dfsg-1+deb10u2
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: <sip:2310000001@192.168.1.136:5060>
Content-Length: 0
Κι επίσης, αν το 401 είναι μέρος της διαδικασίας με το pjsip, γιατί μετά απλώς στέλνει η VF ένα SIP ACK και μετά σιγή;
Δλδ στο sip δεν εχεις το κλασσικό insecure rport, invite?
Δεν βλεπω να εχει κατι τέτοιο στο config.
Επισης στο inviteεχει 192.168 αντι. για 10.χ
Λογικα η σειρα του auth ειναι με ip και γιαυτο βαρραει
Σύμφωνα με το manual
https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Configuration_res_pjsip
auth
This is a comma-delimited list of auth sections defined in pjsip.conf to be used to verify inbound connection attempts.
Endpoints without an authentication object configured will allow connections without verification.
Note
Icon
Using the same auth section for inbound and outbound authentication is not recommended. There is a difference in meaning for an empty realm setting between inbound and outbound authentication uses. See the auth realm description for details.
ας δοκιμάσει να το βγάλει. Τις εξερχόμενες στις οποίες σίγουρα θα το ζητήσει η vodafone τις καλύπτει με το outbound_auth που έχει από κάτω
outbound_auth
This is a comma-delimited list of auth sections defined in pjsip.conf used to respond to outbound connection authentication challenges.
Note
Icon
Using the same auth section for inbound and outbound authentication is not recommended. There is a difference in meaning for an empty realm setting between inbound and outbound authentication uses. See the auth realm description for details.
Αυτή η διαδικασία υπάρχει μόνο στο pjsip και όχι στο sip; Γιατί με αντίστοιχο dump που έκανα όταν χρησιμοποιώ το sip.conf αντί του pjsip.conf και όλα λειτουργούν, βλέπω ότι στο SIP INVITE της VF όπως φαίνεται στο προηγούμενο μήνυμά μου, ο asterisk απαντάει με Trying και όχι με 401. Τότε δεν γίνονται authenticate οι κλήσεις;
19:12:43.098335 IP raspalkis.sip > ngn.hol.net.sip: SIP: SIP/2.0 100 Trying
E.......@.......
xA........SSIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.120.65.8:5060;branch=z9hGXXXXXXXXXXXXX9unebbk8d;received=10.120.65.8
Record-Route: <sip:10.120.65.8;transport=udp;lr>
From: <sip:6944-TO-KINITO-MOU@10.120.19.130;user=phone>;tag=h7g4EXXXXXXXXXXXX064-
To: "HOL HOL" <sip:2310000001@ngn.hol.net>
Call-ID: BW191XXXXXXXXXXXXXX800@10.120.17.80
CSeq: 211846237 INVITE
Server: Asterisk PBX 16.2.1~dfsg-1+deb10u2
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: <sip:2310000001@192.168.1.136:5060>
Content-Length: 0
Κι επίσης, αν το 401 είναι μέρος της διαδικασίας με το pjsip, γιατί μετά απλώς στέλνει η VF ένα SIP ACK και μετά σιγή;
Το sip είναι sip, είτε χρησιμοποιείς chan_sip είτε chan_pjsip. Λογικά στο απλό sip trunk δεν έχεις τίποτα στο inbound πεδίο ή κι αν έχεις λογικά το insecure=port,invite στα peer details που μάλλον έχεις επιτρέπει κλήσεις χωρίς authentication.
Με το ACK απλά σου επιβεβαιώνει ότι παρέλαβε το 401, αυτό δεν σημαίνει ότι ξέρει και τι να σου απαντήσει κάτι που δείχνει ότι δεν περιμένει authentication challenges.
Λογικό γιατί πίσω στο ims περιμένουν registration από το router σου όχι από το Pbx, που για αυτούς είναι σαν εσωτερικό, αυτοί κάνουν challenge το router σου κάθε φορά που παίρνεις τηλέφωνο και ποτέ το router σου αυτούς όταν σου στέλνουν τηλέφωνα.
Τεσπα, δοκίμασε το κι αν δεν παίξει το βλέπουμε.
Έπαιξε :clap: βγάζοντας το auth = VF, όπως το είπατε, γιατί όταν έπαιζε οκ με config στο sip.conf, είχα το κλασικό insecure=port,invite.
Το να μην γίνονται authenticate οι εισερχόμενες, πόσο κακό είναι; Κι αν ήθελα να τις κάνω κι αυτές authenticate, θα πρέπει να βάλω auth = VF_incoming και να φτιάξω μια σχετική [VF_incoming] type=auth ενότητα;
Tώρα πρέπει να δω γιατί δεν παίζουν οι εξερχόμενες ("res_pjsip.c: Endpoint 'VF': Could not create dialog to invalid URI '6944-ΤΟ-ΚΙΝΙΤΟ-ΜΟΥ'. Is endpoint registered and reachable?")
--edit: To μισοβρήκα, ένας καλός άνθρωπος σε ένα forum έγραφε in PJSIP you’d want to use PJSIP/number@endpoint and not PJSIP/endpoint/number και το δοκίμασα επιτυχώς από asterisk cli. Tώρα πρέπει να βρω πως να το ενσωματώσω στο config.
--edit2: Το βρήκα κι αυτό, εύκολο ήταν. Όταν μου πείτε και αν το authentication είναι απαραίτητο, θα ποστάρω όλο το working config για reference.
Για να κανεις auth, πρεπει να δωσεις και κανα password στην αλλη πλευρα.
Επειδη αυτο δεν ειναι πρακτικα εφικτο, απλα δεν θα το κανεις.
Γενικοτερα στο sip στη πραξη κανουμε auth στο παροχο κατα το dialout, (για να μας αφησει) και κανουμε auth κατα το register, λεγοντας του που να μας βρει. (ωστε να μας στειλει invite οταν εχει καποια εισερχομενη). Θεωρητικα καποιος θα μπορουσε να spoofαρει την ip του παροχου και να μας στειλει invites, οδηγωντας ισως σε καποιο denial of service.
Ομως σε περιπτωσεις οπως η φωνη της vf που ειναι σε αλλο vc και πρακτικα εντος ενος extranet, αυτο δεν μπορει να συμβει.
Στην περιπτωση του οτε που το εχει σε ip απλα φιλτραρει στο border του οτι εχει ip απο δικα του source.
Αν καποιος προσπαθησει να κανει dos εντος του δικτυου του σε συνδρομητες του, κερδιζει βραβειο της ανοιχτης παλαμης και θεση διπλα στο Μενιο να λενε τα νεα τους.
Καπως ετσι προκυπτουν και τα type friend (εμπιστευομαστε τους φιλους μας (τρομαρα μας) και τα insecure invites, γιατι ΕΙΝΑΙ insecure αφου δεν εχουν password.. :respekt:
χρησιμες εντολες, μιας και θα φτιαξεις How to
pjsip show registrations
pjsip show endpoints
pjsip show registrations
Βαζω και το Output απο ενα freepbx με pjsip σε fritzbox που συνδεεται με vf.
zakfpbx*CLI> pjsip show contacts
Contact: <Aor/ContactUri..............................> <Hash....> <Status> <RTT(ms)..>
==========================================================================================
Contact: 558/sip:558@192.168.41.52:5060 d6c3c9ad79 Avail 68.751
Contact: voda2fpbx/sip:voda2fpbx@192.168.41.10:5060 30ec414eac Avail 12.557
Objects found: 2
zakfpbx*CLI> pjsip show registrations
<Registration/ServerURI..............................> <Auth..........> <Status.......>
==========================================================================================
voda2fpbx/sip:192.168.41.10:5060 voda2fpbx Registered
Objects found: 1
zakfpbx*CLI> pjsip show endpoints
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: 558/558 Not in use 0 of inf
InAuth: 558-auth/558
Aor: 558 1
Contact: 558/sip:558@192.168.41.52:5060 d6c3c9ad79 Avail 68.751
Endpoint: dpma_endpoint Unavailable 0 of inf
Endpoint: voda2fpbx Not in use 0 of inf
OutAuth: voda2fpbx/voda2fpbx
Aor: voda2fpbx 0
Contact: voda2fpbx/sip:voda2fpbx@192.168.41.10:5060 30ec414eac Avail 12.557
Transport: 192.168.41.13-udp udp 3 96 192.168.41.13:5060
Identify: voda2fpbx/voda2fpbx
Match: 192.168.41.10/32
Objects found: 3
Και με λεπτομερεια
pjsip show endpoint voda2fpbx οπου 192.168.41.10 το fritz 7530 και 192.168.41.13 το dedicated udp transport του fpbx, bound στο συγκεκριμενο trunk.
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: voda2fpbx Not in use 0 of inf
OutAuth: voda2fpbx/voda2fpbx
Aor: voda2fpbx 0
Contact: voda2fpbx/sip:voda2fpbx@192.168.41.10:5060 30ec414eac Avail 16.217
Transport: 192.168.41.13-udp udp 3 96 192.168.41.13:5060
Identify: voda2fpbx/voda2fpbx
Match: 192.168.41.10/32
ParameterName : ParameterValue
===================================================================================================
100rel : yes
accept_multiple_sdp_answers : false
accountcode :
acl :
aggregate_mwi : true
allow : (alaw)
allow_overlap : true
allow_subscribe : true
allow_transfer : true
aors : voda2fpbx
asymmetric_rtp_codec : false
auth :
bind_rtp_to_media_address : false
bundle : false
call_group :
callerid : <unknown>
callerid_privacy : allowed_not_screened
callerid_tag :
codec_prefs_incoming_answer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_incoming_offer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_outgoing_answer : prefer:pending, operation:intersect, keep:all, transcode:allow
codec_prefs_outgoing_offer : prefer:pending, operation:union, keep:all, transcode:allow
connected_line_method : invite
contact_acl :
contact_user : 210XXXXXXX
context : from-pstn
cos_audio : 0
cos_video : 0
device_state_busy_at : 0
direct_media : true
direct_media_glare_mitigation : none
direct_media_method : invite
disable_direct_media_on_nat : false
dtls_auto_generate_cert : No
dtls_ca_file :
dtls_ca_path :
dtls_cert_file :
dtls_cipher :
dtls_fingerprint : SHA-256
dtls_private_key :
dtls_rekey : 0
dtls_setup : active
dtls_verify : No
dtmf_mode : rfc4733
fax_detect : false
fax_detect_timeout : 0
follow_early_media_fork : true
force_avp : false
force_rport : true
from_domain :
from_user : voda2fpbx
g726_non_standard : false
ice_support : false
identify_by : username,ip
ignore_183_without_sdp : false
inband_progress : false
incoming_call_offer_pref : local
incoming_mwi_mailbox :
language : en
mailboxes :
max_audio_streams : 1
max_video_streams : 1
media_address :
media_encryption : no
media_encryption_optimistic : false
media_use_received_transport : false
message_context :
moh_passthrough : false
moh_suggest : default
mwi_from_user :
mwi_subscribe_replaces_unsolicited : no
named_call_group :
named_pickup_group :
notify_early_inuse_ringing : false
one_touch_recording : false
outbound_auth : voda2fpbx
outbound_proxy :
outgoing_call_offer_pref : remote_merge
pickup_group :
preferred_codec_only : false
record_off_feature : automixmon
record_on_feature : automixmon
refer_blind_progress : true
rewrite_contact : true
rpid_immediate : false
rtcp_mux : false
rtp_engine : asterisk
rtp_ipv6 : false
rtp_keepalive : 0
rtp_symmetric : true
rtp_timeout : 0
rtp_timeout_hold : 0
sdp_owner : -
sdp_session : Asterisk
send_connected_line : no
send_diversion : true
send_history_info : false
send_pai : false
send_rpid : false
set_var :
srtp_tag_32 : false
stir_shaken : false
sub_min_expiry : 0
subscribe_context :
suppress_q850_reason_headers : false
t38_udptl : false
t38_udptl_ec : none
t38_udptl_ipv6 : false
t38_udptl_maxdatagram : 0
t38_udptl_nat : false
timers : yes
timers_min_se : 90
timers_sess_expires : 1800
tone_zone :
tos_audio : 0
tos_video : 0
transport : 192.168.41.13-udp
trust_connected_line : yes
trust_id_inbound : true
trust_id_outbound : false
use_avpf : false
use_ptime : false
user_eq_phone : false
voicemail_extension :
webrtc : no
Αντε να φτιαξουμε και τον οτε τωρα..
Χάρη στην πολύτιμη βοήθεια των από πάνω φίλων, σας έχω εδώ το sample config για ΣΥΝΔΕΣΗ PJSIP στη VODAFONE (οικιακή σύνδεση).
pjsip.conf =>
(2310XXXXXX το νούμερο της σύνδεσής σας και YYYYYY το password που έχετε τσιμπήσει από τον router σας (Η300s μάλλον).
[simpletrans]
type=transport
protocol=udp
bind=0.0.0.0
[VF]
type = registration
retry_interval = 20
max_retries = 10
contact_user = 2310XXXXXX
expiration = 120
transport = simpletrans
outbound_auth = VF
client_uri = sip:2310XXXXXX@ngn.hol.net
server_uri = sip:ngn.hol.net
[VF]
type = auth
auth_type=userpass
password = YYYYYY
username = 2310XXXXXX
[VF]
type = aor
contact = sip:2310XXXXXX@ngn.hol.net
[VF]
type = identify
endpoint = VF
match = ngn.hol.net
[VF]
type = endpoint
context = incoming-VF
disallow = all
allow = ulaw
allow = alaw
allow = gsm
from_user = 2310XXXXXX
from_domain = ngn.hol.net
outbound_auth = VF
aors = VF
extensions.conf (το extension Synergatis_A πρέπει να είναι και αυτό στο pjsip.conf αλλά δεν το παραθέτω γιατί ξεφεύγει από το θέμα μας) =>
[internal]
exten => 701,1,Dial(PJSIP/Synergatis_A, 701)
same => n,Hangup()
exten => _XXXXXXXXXX,1,Set(CALLERID(num)=2310XXXXXX)
same => n,Log(NOTICE, Dialing out from ${CALLERID(all)} to ${EXTEN} through VF)
same => n,Dial(PJSIP/${EXTEN}@VF,60)
same => n,Playtones(congestion)
same => n,Hangup()
[incoming-VF]
exten => 2310[B]XXXXXX,1,Log(NOTICE, Incoming call from ${CALLERID(all)})
same => n,Dial(PJSIP/Synergatis_A)
same => n,Hangup()
Κατά τα άλλα, το πρόβλημα που συνάντησα στα βήματα για να μιλήσω από το ξεχωριστό VLAN της φωνής της VF, ήταν το resolve του ngn.hol.net. Δεν βρήκα τρόπο να το φτιάξω properly, δηλαδή να γίνεται resolve μέσω DNS, γιατί δεν έχω τρόπο να κάνω μόνο αυτό το FQDN να το στέλνω στον σωστό DNS server του VLAN της φωνής (τώρα εδώ μπορεί να πω και καμιά ανακρίβεια, γιατί δεν τα σημείωνα όταν τα πάλευα πριν καιρό και δεν τα καλοθυμάμαι). Οπότε βρήκα με manual DNS resolve την IP του SIP της VF (ή μία από τις IP για να είμαι πιο ακριβής), και την κάρφωσα στον asterisk server:
# cat /etc/hosts
10.120.65.8 ngn.hol.net
Tέλος, σε ένα ξεκλείδωτο spare VDSL router που έβαλα για να γίνουν τα δικτυακά, έφτιαξα την internet σύνδεση:
Type PPPoE
DSL Transfer Mode PTM
IP Version IPv4
NAT On
Και την VoIP σύνδεση:
Type DHCP
DSL Transfer Mode PTM
IP Version IPv4
NAT On
Οπότε, αν το setup είναι σωστό:
CLI> pjsip show registrations
<Registration/ServerURI..............................> <Auth..........> <Status.......>
==========================================================================================
VF/sip:ngn.hol.net VF Registered
Objects found: 1
και
CLI> pjsip show endpoints
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: Synergatis_A Unavailable 0 of inf
InAuth: authSynergatis_A/Synergatis_A
Aor: Synergatis_A 1
Endpoint: VF Not in use 0 of inf
OutAuth: VF/2310024513
Aor: VF 0
Contact: VF/sip:2310024513@ngn.hol.net 981a6e0c95 NonQual nan
Identify: VF/VF
Match: 10.120.65.8/32
Objects found: 2
και
CLI> pjsip show endpoint VF
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: VF Not in use 0 of inf
OutAuth: VF/2310ΧΧΧΧΧΧ
Aor: VF 0
Contact: VF/sip:2310ΧΧΧΧΧΧ@ngn.hol.net 981a6e0c95 NonQual nan
Identify: VF/VF
Match: 10.120.65.8/32
ParameterName : ParameterValue
=========================================================
100rel : yes
accept_multiple_sdp_answers : false
accountcode :
acl :
aggregate_mwi : true
allow : (ulaw|alaw|gsm)
allow_overlap : true
allow_subscribe : true
allow_transfer : true
aors : VF
asymmetric_rtp_codec : false
auth :
bind_rtp_to_media_address : false
bundle : false
call_group :
callerid : <unknown>
callerid_privacy : allowed_not_screened
callerid_tag :
connected_line_method : invite
contact_acl :
context : incoming-VF
cos_audio : 0
cos_video : 0
device_state_busy_at : 0
direct_media : true
direct_media_glare_mitigation : none
direct_media_method : invite
disable_direct_media_on_nat : false
dtls_auto_generate_cert : No
dtls_ca_file :
dtls_ca_path :
dtls_cert_file :
dtls_cipher :
dtls_fingerprint : SHA-256
dtls_private_key :
dtls_rekey : 0
dtls_setup : active
dtls_verify : No
dtmf_mode : rfc4733
fax_detect : false
fax_detect_timeout : 0
follow_early_media_fork : true
force_avp : false
force_rport : true
from_domain : ngn.hol.net
from_user : 2310ΧΧΧΧΧΧ
g726_non_standard : false
ice_support : false
identify_by : username,ip
inband_progress : false
incoming_mwi_mailbox :
language :
mailboxes :
max_audio_streams : 1
max_video_streams : 1
media_address :
media_encryption : no
media_encryption_optimistic : false
media_use_received_transport : false
message_context :
moh_passthrough : false
moh_suggest : default
mwi_from_user :
mwi_subscribe_replaces_unsolicited : no
named_call_group :
named_pickup_group :
notify_early_inuse_ringing : false
one_touch_recording : false
outbound_auth : VF
outbound_proxy :
pickup_group :
preferred_codec_only : false
record_off_feature : automixmon
record_on_feature : automixmon
refer_blind_progress : true
rewrite_contact : false
rpid_immediate : false
rtcp_mux : false
rtp_engine : asterisk
rtp_ipv6 : false
rtp_keepalive : 0
rtp_symmetric : false
rtp_timeout : 0
rtp_timeout_hold : 0
sdp_owner : -
sdp_session : Asterisk
send_connected_line : yes
send_diversion : true
send_pai : false
send_rpid : false
set_var :
srtp_tag_32 : false
sub_min_expiry : 0
subscribe_context :
suppress_q850_reason_headers : false
t38_udptl : false
t38_udptl_ec : none
t38_udptl_ipv6 : false
t38_udptl_maxdatagram : 0
t38_udptl_nat : false
timers : yes
timers_min_se : 90
timers_sess_expires : 1800
tone_zone :
tos_audio : 0
tos_video : 0
transport :
trust_connected_line : yes
trust_id_inbound : false
trust_id_outbound : false
use_avpf : false
use_ptime : false
user_eq_phone : false
voicemail_extension :
webrtc : no
Αυτά! (αν ξέχασα πουθενά να κάνω redacct το νούμερό μου, πάρτε με τηλέφωνο και πείτε μου το :twisted: )
Μερικες παρατηρησεις. Στο voip connection χρειαζεται nat στο router? Οταν το ειχα δοκιμασει επαιρνε ip με dhcp ο asterisk απευθειας.
Αν παιζεις με freepbx, προσθεσε και τις σχετικες οθονες, θα το κανει ακομη ευκολοτερο.
Τωρα για το dns, γινεται, αλλα θελει λιγο "δουλιτσα"
Χρειαζομαστε bind στο τοπικο μηχανημα που τρεχει ο asterisk.
Φτιαχνουμε μια authoritative zone για το hol.net και κανουμε delegate το hol.net στο name server της φωνης.
Η θεωρια λεει οτι το ngn.hol.net θα γινεται resolve απο εκει, και ολα τα αλλα απο τους root servers.
Αν και δεν νομιζω οτι θα αλλαξουν ποτέ οι ip's, για να εχουμε θεμα. Οσο για load balancing, ποσοι θα υλοποιησουν πια τον οδηγο? :respekt:
Μερικες παρατηρησεις. Στο voip connection χρειαζεται nat στο router? Οταν το ειχα δοκιμασει επαιρνε ip με dhcp ο asterisk απευθειας.
Αν παιζεις με freepbx, προσθεσε και τις σχετικες οθονες, θα το κανει ακομη ευκολοτερο.
Eίμαι με σκέτο asterisk. Επέλεξα με ΝΑΤ για να μην μπω στην έξτρα ταλαιπωρία του να φέρω το VLAN στον asterisk. Έτσι δεν έπρεπε να γίνει; Πως αλλιώς θα ξεχωρίσω στο ένα eth interface του asterisk pc (ένα rasp είναι αυτό), τα του τοπικού δικτύου από τα του voip vlan της VF;
Τωρα για το dns, γινεται, αλλα θελει λιγο "δουλιτσα"
Χρειαζομαστε bind στο τοπικο μηχανημα που τρεχει ο asterisk.
Φτιαχνουμε μια authoritative zone για το hol.net και κανουμε delegate το hol.net στο name server της φωνης.
Η θεωρια λεει οτι το ngn.hol.net θα γινεται resolve απο εκει, και ολα τα αλλα απο τους root servers.
είσαι άρχοντας! Θα το δοκίμαζα αν προλάβαινα. Πολύ ωραία ιδέα. Αν και έχω την απορία: Τον name server της φωνής θα πρέπει να τον καρφώσεις με την IP του στο bind config, σωστά; Δεν ξέρω να υπάρχει κάποιος τρόπος να πεις στο bind config να κάνει delegate στον NS που έμαθε από το dhcp του τάδε intf (subinterface για την ακρίβεια).
Αν και δεν νομιζω οτι θα αλλαξουν ποτέ οι ip's, για να εχουμε θεμα. Οσο για load balancing, ποσοι θα υλοποιησουν πια τον οδηγο? :respekt:
Χμ, με αυτό που είπες μου έρχεται στο μυαλό το άλλο ultimate θέμα μου, με τις τρεις γραμμές ΟΤΕ: Αν είναι να μην αλλάζουν οι IPs (τώρα μιλάω για ΟΤΕ), τότε γιατί απλώς να μην κάνω sip.conf config με τρία registration strings προς τρεις ξεχωριστές IPs που θα βρω από manual resolves του ims.otenet.gr (αν θυμάμαι καλά το FQDN), και να κάνω source-based routing, να φεύγει η voip κίνηση κάθε trunk από την σωστή φυσική σύνδεση να τελειώνω, αντί να παλέψω με pjsip + τα @@ του ΟΤΕ;
Καταρχάς σχετικά με τις εισερχόμενες κι αν θα πρέπει να κάνεις authentication, με το insecure=port,invite στην ουσία δηλώνεις ότι κάνεις accept ότι σου έρθει από ότι έχεις δηλώσει στο host.
Ναι υπάρχει ο κίνδυνος να σου κάνει κάποιος spoof αλλά οι πιθανότητες είναι τόσο λίγες που δεν υπάρχει φόβος ειδικά από την στιγμή που δεν κάνεις τίποτα port forward προς τον asterisk.
Εκεί να το συζητούσαμε αλλά και πάλι τα bots απλά θα προσπαθήσουμε να σου στείλουν random κλήσεις κι όχι να σου κάνουν μία τόσο συγκεκριμένη επίθεση.
Τώρα για το dns, επειδή μάλλον δουλεύεις πάνω σε κάποιο raspbian γιατί δεν βάζεις καρφωτά τους dns της vodafone σε ένα 2ο ip interface και να παίζεις από εκεί.
Στο modem της Voda βλέπω ότι έχει τους 62.38.86.50/62.38.86.40/0.0.0.0.
Στο OTE πλέον ζητάνε αποκλειστικά επικοινωνία μέσω fqdn γιατί θα χουν κάνει ή θα κάνουν υποχρεωτική την χρήση srv records στην τηλεφωνία οπότε register και επικοινωνία μόνο με ip παίζει και δεν παίζει.
Eίμαι με σκέτο asterisk. Επέλεξα με ΝΑΤ για να μην μπω στην έξτρα ταλαιπωρία του να φέρω το VLAN στον asterisk. Έτσι δεν έπρεπε να γίνει; Πως αλλιώς θα ξεχωρίσω στο ένα eth interface του asterisk pc (ένα rasp είναι αυτό), τα του τοπικού δικτύου από τα του voip vlan της VF;
Ευκολακι.. βαζεις secondary ip. βεβαια ουτε ετσι θα επαιζε το dhcp. Κανονικα θελει vlan στο rpi που δεν ξερω αν το υποστηριζει.
είσαι άρχοντας! Θα το δοκίμαζα αν προλάβαινα. Πολύ ωραία ιδέα. Αν και έχω την απορία: Τον name server της φωνής θα πρέπει να τον καρφώσεις με την IP του στο bind config, σωστά; Δεν ξέρω να υπάρχει κάποιος τρόπος να πεις στο bind config να κάνει delegate στον NS που έμαθε από το dhcp του τάδε intf (subinterface για την ακρίβεια).
Ε οχι, αυτα δεν υπαρχουν ετοιμα. Παρολα αυτα με λιγη python θα μπορουσε να τρεχει ενα script upon boot, να κανει ενα dhcp request, να παιρνει τον name server, να τον καρφωνει στο bind και να τον κανει reload. Εαν ψηνεσαι, ο unbound https://www.nlnetlabs.nl/projects/unbound/about/ εχει python interface οπου κανεις διαφορα τετοια, χωρις καν reload. Καπως ετσι δουλευει το pfblockerng στο pfsense.
H με cron
Χμ, με αυτό που είπες μου έρχεται στο μυαλό το άλλο ultimate θέμα μου, με τις τρεις γραμμές ΟΤΕ: Αν είναι να μην αλλάζουν οι IPs (τώρα μιλάω για ΟΤΕ), τότε γιατί απλώς να μην κάνω sip.conf config με τρία registration strings προς τρεις ξεχωριστές IPs που θα βρω από manual resolves του ims.otenet.gr (αν θυμάμαι καλά το FQDN), και να κάνω source-based routing, να φεύγει η voip κίνηση κάθε trunk από την σωστή φυσική σύνδεση να τελειώνω, αντί να παλέψω με pjsip + τα @@ του ΟΤΕ;
Για αρχη αυτο δεν ειναι source based routing αλλα target based routing Τα εχουμε δοκιμασει αυτα. Κατι κανουν σε επιπεδο dns και δεν κανει register. Εξαλλου ετσι οπως το παει ο οτε με dns srv το dns ειναι μονοδρομος.
Δυστυχως το να βαζεις διαφορετικους dns σε συγκεκριμενα interfaces δεν κανει αυτο που θες. Γενικως δεν υποστηριζεται.
Η redhat το περιγραφει εδω ως experimental σε redhat8
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-different-dns-servers-for-different-domains_configuring-and-managing-networking
dimitrisathina
26-11-21, 08:25
Καλησπέρα σε όλους παιδιά. Ξέρω οτι η συζήτηση έχει τελειώσει απλά προσπαθώ να κάνω κάτι παρόμοιο και δεν βγάζω άκρη. Έχω Vodafone 200αρα Onenet και έχω μπεί στο ρούτερ της vodafone (zte zxhn h267a) και έχω κατεβάσει το configuration. Προσπαθώ να το συνδέσω με Unifi εξοπλισμό που δουλεύει με Freeswitch. Προς το παρόν έχω βρεί κάποιες ip απο το ρούτερ για να κάνω whitelist αλλά στο configuration file της vodafone στο username έχει κενό. Χάνω κάτι μήπως?
Ένα μικρό κομμάτι απο το configuration που πιστεύω πως είναι σχετικό.
<Row No="3">
<DM name="ViewName" val="DEV.FW.CHAIN1.IPF4"/>
<DM name="Enable" val="1"/>
<DM name="Protocol" val="1"/>
<DM name="Name" val="alandsip"/>
<DM name="INCViewName" val="DEV.IP.IF1"/>
<DM name="INCName" val="LAN"/>
<DM name="OUTCViewName" val="DEV.IP.IF11"/>
<DM name="OUTCName" val="VoIPa"/>
<DM name="MinSrcIp" val="192.168.2.2"/>
<DM name="MinSrcMask" val="0.0.0.0"/>
<DM name="MaxSrcIp" val="192.168.2.254"/>
<DM name="MinDstIp" val="0.0.0.0"/>
<DM name="MinDstMask" val="0.0.0.0"/>
<DM name="MaxDstIp" val="0.0.0.0"/>
<DM name="MinSrcPort" val="-1"/>
<DM name="MaxSrcPort" val="-1"/>
<DM name="MinDstPort" val="5060"/>
<DM name="MaxDstPort" val="5060"/>
<DM name="FilterTarget" val="1"/>
<DM name="FilterIndex" val="4"/>
<DM name="FilterType" val="0"/>
<DM name="User" val=""/>
<DM name="AppID" val="0"/>
</Row>
<Row No="7">
<DM name="ViewName" val="DEV.FW.CHAIN1.IPF8"/>
<DM name="Enable" val="1"/>
<DM name="Protocol" val="1"/>
<DM name="Name" val="alanvsip"/>
<DM name="INCViewName" val="DEV.IP.IF1"/>
<DM name="INCName" val="LAN"/>
<DM name="OUTCViewName" val="DEV.IP.IF11"/>
<DM name="OUTCName" val="VoIPa"/>
<DM name="MinSrcIp" val="10.143.2.213"/>
<DM name="MinSrcMask" val="0.0.0.0"/>
<DM name="MaxSrcIp" val="10.143.2.222"/>
<DM name="MinDstIp" val="0.0.0.0"/>
<DM name="MinDstMask" val="0.0.0.0"/>
<DM name="MaxDstIp" val="0.0.0.0"/>
<DM name="MinSrcPort" val="-1"/>
<DM name="MaxSrcPort" val="-1"/>
<DM name="MinDstPort" val="5060"/>
<DM name="MaxDstPort" val="5060"/>
<DM name="FilterTarget" val="1"/>
<DM name="FilterIndex" val="8"/>
<DM name="FilterType" val="0"/>
<DM name="User" val=""/>
<DM name="AppID" val="0"/>
</Row>
<Tbl name="VoIPPortCfg" RowCount="1">
<Row No="0">
<DM name="FxsNum" val="2"/>
<DM name="FxoNum" val="0"/>
<DM name="VoipNum" val="10"/>
<DM name="DxsNum" val="0"/>
<DM name="DxoNum" val="0"/>
<DM name="DspChanNum" val="2"/>
<DM name="SIPLanNum" val="0"/>
<DM name="Region" val=""/>
</Row>
</Tbl>
<Tbl name="VoIPVMediaCfg" RowCount="60">
<Row No="0">
<DM name="ViewName" val="IGD.SV.VS1.VP1.VL1.LC.CL1"/>
<DM name="MediaVEnable" val="0"/>
<DM name="MediaVType" val="1"/>
<DM name="MediaVCodec" val="16"/>
<DM name="MediaVPV" val="9"/>
<DM name="MediaVPT" val="20"/>
<DM name="MediaVCR" val="8000"/>
<DM name="MediaVPri" val="3"/>
<DM name="MediaSSuprs" val="0"/>
<DM name="MediaVRSSuprs" val="0"/>
</Row>
<Tbl name="VoIPSIPLine" RowCount="10">
<Row No="0">
<DM name="ViewName" val="IGD.SV.VS1.VP1.VL1.LS"/>
<DM name="Enable" val="1"/>
<DM name="AuthUserName" val=""/>
<DM name="AuthPassword" val="1_BY------"/>
<DM name="DigestUserName" val="+302160000000"/>
<DM name="DisplayName" val=""/>
<DM name="Implicit" val="0"/>
</Row>
<Row No="0">
<DM name="ViewName" val="IGD.DNBinding1"/>
<DM name="DomainName" val="ims.vodafone.gr"/>
<DM name="WANViewName" val="voip"/>
</Row>
<Row No="1">
<DM name="ViewName" val="IGD.DNBinding2"/>
<DM name="DomainName" val="ipphones.onenet.acs.vodafone.gr"/>
<DM name="WANViewName" val="voip"/>
</Row>
leasedline
22-09-23, 15:22
εχω 2 endpoints: 101 102
το 102 καλει το 101 κανονικα
το 101 οχι
το 102 κανει εξερχόμενη κλήση (φυσικα το 101 οχι)
εισερχομενες παπαλα γενικως αν και εχω:
[internal]
exten => ZXX,1,Dial(PJSIP/${EXTEN},60)
exten => ${EXTEN},n,Hangup()
exten => _XXXXXXXX.,1,Set(CALLERID(num)=2610ΧΧΧΧΧΧ)
same => n,Log(NOTICE, Dialing out from ${CALLERID(all)} to ${EXTEN} through VF)
same => n,Dial(PJSIP/${EXTEN}@VF,60)
same => n,Playtones(congestion)
same => n,Hangup()
[incoming-VF]
exten => 2610ΧΧΧΧΧΧ,1,Log(NOTICE, Incoming call from ${CALLERID(all)})
same => 1,Dial(PJSIP/102)
same => n,Hangup()
τα εχω κανει μανταρα...
Μήπως δεν έχεις context στο 101;
leasedline
22-09-23, 19:22
[101]
type=endpoint
context=internal
disallow=all
allow=ulaw
auth=101
aors=101
[101]
type=auth
auth_type=userpass
username=101
password=101
[101]
type=aor
max_contacts=2
Δεν ξέρω κάνε τις ίδιες δοκιμές κι ανέβασε log από το cli. Επίσης φτιάξε την δεύτερη γραμμή στο internal. Ή θα θα βάλεις καρφωτα το extension pattern που έχεις από πάνω ή θα χρησιμοποιήσεις το same όπως κάνεις πιο κάτω.
@ ADSLgr.com All rights reserved.