LINUX.ORG.RU
ФорумAdmin

OpenVPN работает по udp, а по tcp нет

 


0

3

На VPS с Ubuntu Server 12.04 установлен OpenVPN (2.2.1), настройки сервера такие:

port 443
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 10.9.8.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
tls-server
tls-auth keys/ta.key 0
auth SHA1
cipher BF-CBC
keepalive 10 180
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 4

Настройки клиента (windows, openvpn gui; либо osx, tunnelblick):

dev tun
proto tcp
remote ip
port 443
client
resolv-retry infinite
ca ca.crt
cert homepc.crt
key homepc.key
tls-client
tls-auth ta.key 1
auth SHA1
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun
verb 3

При подключении происходит ошибка (сервер):

Thu May 8 21:24:00 2014 us=149866 80.83.238.95:42039 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Thu May 8 21:24:00 2014 us=150216 80.83.238.95:42039 TLS Error: TLS handshake failed

Если поменять протокол на upd, то все работает нормально.

Настройки iptables:
Chain INPUT (policy ACCEPT)
ACCEPT tcp  — anywhere anywhere tcp dpt:https
ACCEPT udp  — anywhere anywhere udp dpt:https
Chain OUTPUT (policy ACCEPT)
ACCEPT tcp  — anywhere anywhere tcp spt:https
ACCEPT udp  — anywhere anywhere udp spt:https
Chain FORWARD (policy ACCEPT)
ACCEPT all  — 10.9.8.0/24 anywhere
ACCEPT all  — anywhere anywhere state RELATED,ESTABLISHED



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

Выключил, сделав:

iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
все также и осталось.

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

Пробовал, не помогает. Просто в дальнейшем, нужно будет подключаться с работы, где прокси с доступным connect только на 443 порту, поэтому и tcp с 443 портом

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

На клиенте - отключенный брэндмауэр Windows.

telnet ip 443 - подключается

netstat -ntlp

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      12289/apache2
tcp        0      0 10.9.8.1:53             0.0.0.0:*               LISTEN      7389/named      
tcp        0      0 ip_сервера:53           0.0.0.0:*               LISTEN      7389/named      
tcp        0      0 127.0.0.2:53            0.0.0.0:*               LISTEN      7389/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      7389/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      24780/sshd      
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      7389/named      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      579/sendmail: MTA: 
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      6667/openvpn    
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN      579/sendmail: MTA:
tcp6       0      0 :::53                   :::*                    LISTEN      7389/named      
tcp6       0      0 :::22                   :::*                    LISTEN      24780/sshd     
tcp6       0      0 ::1:953                 :::*                    LISTEN      7389/named

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

К сожалению, нет. Сижу с 3g модема, в силу удаленности от материка. Задержки до сервера около секунды. Пробовал подбирать tun-mtu поменьше, и увеличивал hand-window, эффекта - 0.

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

Сижу с 3g модема

Так вот с этого и надо было начинать. Я сталкивался с такой же проблемой на некоторых сотовых операторах (правда, несколько лет назад). Решение тогда так и не нашел.

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

Очень жаль, хотел туннель до дома пробросить с работы, видимо придется искать другие варианты. Спасибо за помощь.

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

В крайнем случае на промежуточном сервере подними два openvpn: один на tcp, второй на udp и роути трафик между ними.

xtraeft ★★☆☆
()

У меня, например, при указании в конфиге proto tcp - работает как клиент.
Укажите явно proto tcp-server и proto tcp-client соответственно на сервере и клиенте.

Из man openvpn:

For  TCP operation, one peer must use --proto tcp-server and the
other must use --proto tcp-client.  A  peer  started  with  tcp-
server  will  wait  indefinitely  for an incoming connection.  A
peer started with tcp-client will attempt  to  connect,  and  if
that  fails, will sleep for 5 seconds (adjustable via the --con‐
nect-retry option) and try again infinite or  up  to  N  retries
(adjustable  via  the  --connect-retry-max  option).   Both  TCP
client and server will simulate  a  SIGUSR1  restart  signal  if
either side resets the connection.

DiMoN ★★★
()
Последнее исправление: DiMoN (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.