LINUX.ORG.RU
ФорумAdmin

SIP over OpenVPN. Не подключается

 ,


0

1

OpenVPN за NAT.

Сеть OpenVPN 10.8.0.0/8 Локальная сеть: 172.16.100.0/24

Если подключаюсь по VPN, то RDP, SSH, пинги и вообще всё работает нормально в сеть 172.16.100.0/24

Но SIP ни в какую не хочет подключаться.

trpdump на хосте с серверной частью openvpn выдаёт такое:

[root@openvpn ~]# tcpdump -i tun0 host 10.8.0.2 -v
tcpdump: listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
14:52:30.666499 IP (tos 0x68, ttl 64, id 23106, offset 0, flags [DF], proto UDP (17), length 661)
    10.8.0.2.45543 > 172.16.100.15.sip: SIP, length: 633
        REGISTER sip:172.16.100.15 SIP/2.0
        Via: SIP/2.0/UDP 10.8.0.2:45543;branch=z9hG4bK.Rcz8ZKnMl;rport
        From: <sip:100@172.16.100.15>;tag=kdBjmzycF
        To: sip:100@172.16.100.15
        CSeq: 20 REGISTER
        Call-ID: CxSNVzv0PI
        Max-Forwards: 70
        Supported: replaces, outbound, gruu
        Accept: application/sdp
        Accept: text/plain
        Accept: application/vnd.gsma.rcs-ft-http+xml
        Contact: <sip:100@10.8.0.2:45543;transport=udp>;+sip.instance="<urn:uuid:931f46dc-c73c-002b-b695-143ca3d5315c>";+org.linphone.specs="lime"
        Expires: 3600
14:52:34.595384 IP (tos 0x68, ttl 64, id 23390, offset 0, flags [DF], proto UDP (17), length 661)
    10.8.0.2.45543 > 172.16.100.15.sip: SIP, length: 633
        REGISTER sip:172.16.100.15 SIP/2.0
        Via: SIP/2.0/UDP 10.8.0.2:45543;branch=z9hG4bK.Rcz8ZKnMl;rport
        From: <sip:100@172.16.100.15>;tag=kdBjmzycF
        To: sip:100@172.16.100.15
        CSeq: 20 REGISTER
        Call-ID: CxSNVzv0PI
        Max-Forwards: 70
        Supported: replaces, outbound, gruu
        Accept: application/sdp
        Accept: text/plain
        Accept: application/vnd.gsma.rcs-ft-http+xml
        Contact: <sip:100@10.8.0.2:45543;transport=udp>;+sip.instance="<urn:uuid:931f46dc-c73c-002b-b695-143ca3d5315c>";+org.linphone.specs="lime"
        Expires: 3600
14:52:38.675018 IP (tos 0x68, ttl 64, id 23493, offset 0, flags [DF], proto UDP (17), length 661)
    10.8.0.2.45543 > 172.16.100.15.sip: SIP, length: 633
        REGISTER sip:172.16.100.15 SIP/2.0
        Via: SIP/2.0/UDP 10.8.0.2:45543;branch=z9hG4bK.Rcz8ZKnMl;rport
        From: <sip:100@172.16.100.15>;tag=kdBjmzycF
        To: sip:100@172.16.100.15
        CSeq: 20 REGISTER
        Call-ID: CxSNVzv0PI
        Max-Forwards: 70
        Supported: replaces, outbound, gruu
        Accept: application/sdp
        Accept: text/plain
        Accept: application/vnd.gsma.rcs-ft-http+xml
        Contact: <sip:100@10.8.0.2:45543;transport=udp>;+sip.instance="<urn:uuid:931f46dc-c73c-002b-b695-143ca3d5315c>";+org.linphone.specs="lime"
        Expires: 3600

Пробовал VPN по протоколу PPTP - софтофон сразу же подключается к SIP-серверу, но и PPTP-клиент получает IP из сети 172.16.100.0/24.



Последнее исправление: yatakoi (всего исправлений: 1)

Не понял зачем так много пакетов в дампе, они же одинаковые.

openvpn пакеты передаёт, а дальше могут быть ограничения в iptables или конфиге sip-сервера...

mky ★★★★★
()
Ответ на: комментарий от mky

Исправил.

Ну, SIP-сервер у меня то еще г… Infinity 4 на Windows. Поэтому там врядли что-то можно поправить.

Проблемы уверен, что на стороне OpenVPN или iptables, так как через pptp всё работает отлично.

Вот мои правила:

[root@openvpn ~]# iptables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  21M 1830M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
47529 2852K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
3817K  434M INPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3817K  434M INPUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3817K  434M INPUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0
 1072 87307 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
2239K  339M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  26M   26G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
34047 4005K FORWARD_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34047 4005K FORWARD_IN_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34047 4005K FORWARD_IN_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34036 4004K FORWARD_OUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34036 4004K FORWARD_OUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0
  520 20800 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 30M packets, 27G bytes)
 pkts bytes target     prot opt in     out     source               destination
95114 4759K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
  30M   27G OUTPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD_IN_ZONES (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 FWDI_public  all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           [goto]
34047 4005K FWDI_public  all  --  +      *       0.0.0.0/0            0.0.0.0/0           [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD_OUT_ZONES (1 references)
 pkts bytes target     prot opt in     out     source               destination
34034 4004K FWDO_public  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           [goto]
    2   104 FWDO_public  all  --  *      +       0.0.0.0/0            0.0.0.0/0           [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD_direct (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FWDI_public (2 references)
 pkts bytes target     prot opt in     out     source               destination
34047 4005K FWDI_public_log  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34047 4005K FWDI_public_deny  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34047 4005K FWDI_public_allow  all  --  *      *       0.0.0.0/0            0.0.0.0/0
   11   684 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FWDI_public_allow (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FWDI_public_deny (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FWDI_public_log (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FWDO_public (2 references)
 pkts bytes target     prot opt in     out     source               destination
34036 4004K FWDO_public_log  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34036 4004K FWDO_public_deny  all  --  *      *       0.0.0.0/0            0.0.0.0/0
34036 4004K FWDO_public_allow  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FWDO_public_allow (1 references)
 pkts bytes target     prot opt in     out     source               destination
33516 3983K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW,UNTRACKED
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW,UNTRACKED

Chain FWDO_public_deny (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain FWDO_public_log (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT_ZONES (1 references)
 pkts bytes target     prot opt in     out     source               destination
3817K  434M IN_public  all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           [goto]
    6   492 IN_public  all  --  +      *       0.0.0.0/0            0.0.0.0/0           [goto]

Chain INPUT_ZONES_SOURCE (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT_direct (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain IN_public (2 references)
 pkts bytes target     prot opt in     out     source               destination
3817K  434M IN_public_log  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3817K  434M IN_public_deny  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3817K  434M IN_public_allow  all  --  *      *       0.0.0.0/0            0.0.0.0/0
  627 52668 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

Chain IN_public_allow (1 references)
 pkts bytes target     prot opt in     out     source               destination
 2520  291K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1194 ctstate NEW,UNTRACKED
1574K   94M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:10050 ctstate NEW,UNTRACKED
    8  1508 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1911 ctstate NEW,UNTRACKED

Chain IN_public_deny (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain IN_public_log (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT_direct (1 references)
 pkts bytes target     prot opt in     out     source               destination
yatakoi
() автор топика
Последнее исправление: yatakoi (всего исправлений: 1)
Ответ на: комментарий от yatakoi

через pptp всё работает отлично

Вы сами написали, что для ptp линка выдаётся ip-адрес из локальной сети, то есть для ip-ATC такое подключение не отличимо от локального.

Я не знаю какие настройки есть у Infinity ip AТС версии 4, здесь https://www.inteltelecom.ru/wiki/zashchishchaem-server-ip-telefonii-ot-vneshn... написно про Infinity X, что:

Все IP-адреса всех внутренних устройств явно указываются в разделе IP-абоненты

Может у вас там есть подобная настройка и 10.8.0.x там не прописаны.

Плюс у вас может быть на windows настоент firewall или не быть маршрута к сети 10.8.0.0. Если маршрут по умолчанию на винде идёт не через этот шлюз с OpenVPN, или куда-то в другое место прописан маршрут 10.0.0.0/8. то винде нужен маршрут к 10.8.0.0.

Вобще, на винду можно поставить дампер пакетов (ethereal /wireshark), там должно быть лучше видно, отвечает ли IP АТС на входящие SIP запросы.

P.S. Запись 10.8.0.0/8 не корректна, вне маски не должно быть не нулевых битов.

mky ★★★★★
()
Ответ на: комментарий от yatakoi

Погуглил немного SIP.

У меня:


Via: SIP/2.0/UDP 10.8.0.2:28595;branch=z9hG4bK-524287-1---44e19e2ee0926930;rport

User-Agent: SessionTalk 6.1

From: "110"<sip:110@172.16.100.15>;tag=086b2c31

Call-ID: byo_BguHxdaVpwjgaGdlJQ..

Supported: path, replaces, timer, norefersub

To: "110"<sip:110@172.16.100.15>

Contact: <sip:110@10.8.0.2:28595;rinstance=12d206af>

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, SUBSCRIBE, UPDATE, INFO, MESSAGE

Expires: 600

Content-Length: 0

Max-Forwards: 70

Здесь клиент отправил запрос на SIP-сервер 172.16.100.15:

To: "110"<sip:110@172.16.100.15>

А эта строка Contact: <sip:110@10.8.0.2:28595;rinstance=12d206af>

сообщает SIP-серверу, что надо вернуть ответ клиенту 10.8.0.2

Но проблема в том, что SIP-сервер не знает ничего о сети 10.8.0.0/24

Собственно не могу въехать как на Windows сервере правильно прописать маршрут, если на сервере OpenVPN 10.8.0.0/24 висит на виртуальном интерфейсе tun0.

yatakoi
() автор топика
Ответ на: комментарий от zemidius

Буду признателен за любую ссылку или пример.

Мой iptables:

iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -I INPUT 1 -i tun0 -j ACCEPT
iptables -I FORWARD 1 -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT 1 -i eth0 -p udp --dport 1194 -j ACCEPT

**Сервер

port 1194
proto udp
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "route 172.16.100.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"
push "route 192.168.4.0 255.255.255.0"
push "route 192.168.6.0 255.255.255.0"
push "route 192.168.9.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key 0
crl-verify crl.pem
ca ca.crt
cert server_Afpb0AUb88BF7e6w.crt
key server_Afpb0AUb88BF7e6w.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
status /var/log/openvpn/status.log
verb 3

OVPN клиента

client
proto udp
remote 31.200.236.202 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_Afpb0AUb88BF7e6w name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
<ca>
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----

-----END OpenVPN Static key V1-----
</tls-crypt>
yatakoi
() автор топика
Последнее исправление: yatakoi (всего исправлений: 1)
Ответ на: комментарий от yatakoi

Нет ссылки, сам допетрил в прошлом году, когда на удалёнку всех переводили. На Openvpn надо пробросить порты внутрь на клиентов. Обычный nat как на всех роутерах.

zemidius
()
Ответ на: комментарий от zemidius

Что-то не могу въехать.

Добавляю

iptables -t nat -A PREROUTING -d 10.8.0.2 -p tcp --dport 5060 -j DNAT --to-destination 172.16.100.15:5060

iptables -A FORWARD -i tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Проверяю, но ничего не добавлено

[root@openvpn ~]# iptables -n -L -v --line-numbers
Chain INPUT (policy ACCEPT 728 packets, 62684 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1777  252K ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:1194
2        0     0 ACCEPT     all  --  tun0   *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1753  158K ACCEPT     all  --  tun0   eth0    0.0.0.0/0            0.0.0.0/0
2     3310 3845K ACCEPT     all  --  eth0   tun0    0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  tun0   *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 4006 packets, 4089K bytes)
num   pkts bytes target     prot opt in     out     source               destination
yatakoi
() автор топика
Ответ на: комментарий от yatakoi

Ну так ты добавляешь в таблицу nat, а смотришь потом в дефолтную - mangle. Если хочешь увидеть своё nat-правило было бы логичнее в nat-таблицу смотреть, наверное (iptables -Lvn -t nat)?

zemidius
()
Последнее исправление: zemidius (всего исправлений: 1)
Ответ на: комментарий от yatakoi

если на сервере OpenVPN 10.8.0.0/24 висит на виртуальном интерфейсе tun0

Какая разница, на каком интерфейсе нужная сеть. Маршрут прописывается через ip-адрес OpenVPN сервера в сети 172.16.100.0/24, как-то так:

route add 10.8.0.0 MASK 255.255.255.0 172.16.100.X

Вместо 172.16.100.X адрес OpenVPN сервера.

Но, вы исходно писали, что ping и пр. работает в сеть 172.16.100.0/24, то есть как бы подразумевалось, что windows сервер как-то знает маршрут до vpn-клиентов.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.