Kamailio (192.168.182.1) and Asterisk (192.168.182.24) realtime integration by http://kb.asipto.com/asterisk:realtime:kamailio-4.0.x-asterisk-11.3.0-astdb.

Kamailio have a public interface also.
 


Grep from debug on kamailio 4.2.1 on call from asterisk extensions/peers:

Mar 19 14:51:50 netbox /usr/sbin/kamailio[547784]: DEBUG: usrloc [udomain.c:602]: db_load_urecord(): aor 101@192.168.182.1 not found in table location
Mar 19 14:51:50 netbox /usr/sbin/kamailio[547784]: DEBUG: registrar [lookup.c:158]: lookup(): '101@192.168.182.1' Not found in usrloc

Mar 19 14:51:50 netbox /usr/sbin/kamailio[547785]: DEBUG: usrloc [udomain.c:602]: db_load_urecord(): aor 102@192.168.182.1 not found in table location
Mar 19 14:51:50 netbox /usr/sbin/kamailio[547785]: DEBUG: registrar [lookup.c:158]: lookup(): '102@192.168.182.1' Not found in usrloc




Kamailio forwards registration to Asterisk and store location of peer with domain name sip.domain.tld. But Asterisk dials peer to peer in local dialplan - to IP of kamailio.

asterisk1*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                      Realtime
101/101                   192.168.182.1                            D  No         No          A  5060     Unmonitored                                  Cached RT
102/102                   192.168.182.1                            D  No         No          A  5060     Unmonitored                                  Cached RT





asterisk1*CLI> sip show peer 102


  * Name       : 102
  Description  :
  Realtime peer: Yes, cached
  Secret       : <Not set>
  MD5Secret    : <Not set>
  Remote Secret: <Not set>
  Context      : ext-local
  Record On feature : automon
  Record Off feature : automon
  Subscr.Cont. : <Not set>
  Language     :
  Tonezone     : <Not set>
  AMA flags    : Unknown
  Transfer mode: open
  CallingPres  : Presentation Allowed, Not Screened
  FromUser     : 102
  FromDomain   : sip.domain.com Port 5060
  Callgroup    :
  Pickupgroup  :
  Named Callgr :
  Nam. Pickupgr:
  MOH Suggest  :
  Mailbox      :
  VM Extension : asterisk
  LastMsgsSent : 6/0
  Call limit   : 0
  Max forwards : 0
  Dynamic      : Yes
  Callerid     : "" <>
  MaxCallBR    : 384 kbps
  Expire       : 252
  Insecure     : no
  Force rport  : No
  Symmetric RTP: No
  ACL          : Yes
  DirectMedACL : No
  T.38 support : No
  T.38 EC mode : Unknown
  T.38 MaxDtgrm: -1
  DirectMedia  : Yes
  PromiscRedir : No
  User=Phone   : No
  Video Support: No
  Text Support : No
  Ign SDP ver  : No
  Trust RPID   : No
  Send RPID    : No
  Path support : No
  Path         : N/A
  Subscriptions: Yes
  Overlap dial : No
  DTMFmode     : rfc2833
  Timer T1     : 500
  Timer B      : 32000
  ToHost       :
  Addr->IP     : 192.168.182.1:5060
  Defaddr->IP  : (null)
  Prim.Transp. : UDP
  Allowed.Trsp : UDP
  Def. Username: 102
  SIP Options  : (none)
  Codecs       : (gsm|ulaw|alaw|h263|testlaw)
  Codec Order  : (none)
  Auto-Framing :  No
  Status       : Unmonitored
  Useragent    : kamailio (4.1.2 (x86_64/linux))
  Reg. Contact : sip:102@192.168.182.1:5060
  Qualify Freq : 60000 ms
  Keepalive    : 0 ms
  Sess-Timers  : Accept
  Sess-Refresh : uas
  Sess-Expires : 1800 secs
  Min-Sess     : 90 secs
  RTP Engine   : asterisk
  Parkinglot   :
  Use Reason   : No
  Encryption   : No




/etc/asterisk/extensions.conf:

...
[ext-local]
; our phones use 3 digit extensions, starting with 1
exten => _1XX,1,DumpChan(verbose)
exten => _1XX,n,Dial(SIP/${EXTEN})
exten => _1XX,n,Voicemail(${EXTEN},u)
exten => _1XX,n,Hangup
exten => _1XX,101,Voicemail(${EXTEN},b)
exten => _1XX,102,Hangup




Also strabge why I see user.pub.lic in Variables on channel during call:
...
SIPCALLID=GOB1.VSLU0SOTjG-u8jjarzXv.lJTjin
SIPDOMAIN=netbox.teleservice.com.ua
SIPURI=sip:101@user.pub.lic.ip:35835




Do I need rewrite To header with change IP to domain name? Maybe in this section:

#!ifdef WITH_ASTERISK
# Test if coming from Asterisk
route[FROMASTERISK] {
    if($si==$sel(cfg_get.asterisk.bindip)
            && $sp==$sel(cfg_get.asterisk.bindport))
        return 1;
    return -1;
}