Hi,
I would like to set up a system like below:
(172.36.100.11) (172.36.100.12)
enp1s0 ----------------------------------- enp1s0
PC 1 ------ | |------------ PC 2
enp2s0 ----------------------------------- enp2s0
(172.36.101.11) (172.36.101.12)
I can make a call from PC1 to PC2 via enp2s0 interface (172.36.101.11), but all the RTP packets are always going through enp1s0 (172.36.100.11) not enp2s0 (172.36.101.11).
How can I make those RTP packets go through the enp2s0 interface?
I follow this site to config two default gateway:
https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System
On PC1:
route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.36.100.1 0.0.0.0 UG 0 0 0 enp1s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0
172.36.100.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
172.36.101.0 0.0.0.0 255.255.255.0 U 0 0 0 enp2s0
ip route list table rt2
default via 172.36.101.1 dev enp2s0
172.36.101.0/24 dev enp2s0 scope link src 172.36.101.12
ip rule show
0: from all lookup local
32764: from all to 172.36.101.12/24 lookup rt2
32765: from 172.36.101.12/24 lookup rt2
32766: from all lookup main
32767: from all lookup default
When I make a call from PC1 to PC2 via enp2s0, this is the INVITE message:
Internet Protocol Version 4, Src: 172.36.101.11, Dst: 172.36.101.12
User Datagram Protocol, Src Port: 4321, Dst Port: 1234
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:172.36.101.12:1234 SIP/2.0
Message Header
Via: SIP/2.0/UDP 172.36.100.11:4321;rport;branch=z9hG4bKPjXPf3YS3e4e6gZ0m4z.oDyeO0KNHwknAE
Max-Forwards: 70
From: <sip:172.36.100.11>;tag=Fd18S4-WSwPB3bxA7.QstNy.GomS4lSO
To: sip:172.36.101.246
Contact: <sip:172.36.101.11:4321;ob>
Call-ID: MTqhGS7DmAfQxEvZSlH9gpf3be.UycnQ
[Generated Call-ID: MTqhGS7DmAfQxEvZSlH9gpf3be.UycnQ]
CSeq: 16789 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length: 476
Message Body
As you can observe, my enp1s0 address (172.36.100.11) is in the Via and From headers.
I can force those headers to use enp2s0 address (172.36.101.11) by adding this line at the end of pj_gethostip() function:
PJ_DEF(pj_status_t) pj_gethostip(int af, pj_sockaddr *addr)
{
....
....
pj_sockaddr_copy_addr(addr, &cand_addr[selected_cand]);
TRACE_((THIS_FILE, "Candidate %s selected",
pj_sockaddr_print(addr, strip, sizeof(strip), 0)));
}
addr->ipv4.sin_addr.s_addr = inet_addr("172.36.101.11");
return PJ_SUCCESS;
}
But even after that, all the RTP packets still going through enp1s0.
I would like to set up a system like below:
(172.36.100.11) (172.36.100.12)
enp1s0 ----------------------------------- enp1s0
PC 1 ------ | |------------ PC 2
enp2s0 ----------------------------------- enp2s0
(172.36.101.11) (172.36.101.12)
I can make a call from PC1 to PC2 via enp2s0 interface (172.36.101.11), but all the RTP packets are always going through enp1s0 (172.36.100.11) not enp2s0 (172.36.101.11).
How can I make those RTP packets go through the enp2s0 interface?
I follow this site to config two default gateway:
https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System
On PC1:
route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.36.100.1 0.0.0.0 UG 0 0 0 enp1s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0
172.36.100.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
172.36.101.0 0.0.0.0 255.255.255.0 U 0 0 0 enp2s0
ip route list table rt2
default via 172.36.101.1 dev enp2s0
172.36.101.0/24 dev enp2s0 scope link src 172.36.101.12
ip rule show
0: from all lookup local
32764: from all to 172.36.101.12/24 lookup rt2
32765: from 172.36.101.12/24 lookup rt2
32766: from all lookup main
32767: from all lookup default
When I make a call from PC1 to PC2 via enp2s0, this is the INVITE message:
Internet Protocol Version 4, Src: 172.36.101.11, Dst: 172.36.101.12
User Datagram Protocol, Src Port: 4321, Dst Port: 1234
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:172.36.101.12:1234 SIP/2.0
Message Header
Via: SIP/2.0/UDP 172.36.100.11:4321;rport;branch=z9hG4bKPjXPf3YS3e4e6gZ0m4z.oDyeO0KNHwknAE
Max-Forwards: 70
From: <sip:172.36.100.11>;tag=Fd18S4-WSwPB3bxA7.QstNy.GomS4lSO
To: sip:172.36.101.246
Contact: <sip:172.36.101.11:4321;ob>
Call-ID: MTqhGS7DmAfQxEvZSlH9gpf3be.UycnQ
[Generated Call-ID: MTqhGS7DmAfQxEvZSlH9gpf3be.UycnQ]
CSeq: 16789 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length: 476
Message Body
As you can observe, my enp1s0 address (172.36.100.11) is in the Via and From headers.
I can force those headers to use enp2s0 address (172.36.101.11) by adding this line at the end of pj_gethostip() function:
PJ_DEF(pj_status_t) pj_gethostip(int af, pj_sockaddr *addr)
{
....
....
pj_sockaddr_copy_addr(addr, &cand_addr[selected_cand]);
TRACE_((THIS_FILE, "Candidate %s selected",
pj_sockaddr_print(addr, strip, sizeof(strip), 0)));
}
addr->ipv4.sin_addr.s_addr = inet_addr("172.36.101.11");
return PJ_SUCCESS;
}
But even after that, all the RTP packets still going through enp1s0.
Any advice would be most welcome!
Best Regards,
===============================================================
Quy Bui Danh (Mr.)
===============================================================
Quy Bui Danh (Mr.)
_______________________________________________ Visit our blog: http://blog.pjsip.org pjsip mailing list pjsip@xxxxxxxxxxxxxxx http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org