LINUX.ORG.RU
решено ФорумAdmin

openvpn подключился, но пинга нет

 ,


0

1

Есть openvpn сервер, который прекрасно работал на почти дефолтном конфиге, но захотелось перенастроить его, чтобы клиенты могли подключатся и по 443 tcp и по 1194 udp. Путём гугления и бездумного копипастинга пришёл к следующему конфигу:

server-udp.conf

port 1194		
proto udp
dev tun0

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo

user nobody
group nogroup

persist-key
persist-tun
status openvpn-status.log
verb 3

script-security 2
learn-address /etc/openvpn/learn.sh
diff server-udp.conf server-tcp.conf
1,3c1,3
< port 1194
< proto udp
< dev tun0
---
> port 443
> proto tcp
> dev tun1
learn.sh
#!/bin/bash
##
# learn-address script which allow
# OpenVPN to run on both TCP and UDP
# with the same range of address on both
# protocol.
#
# tgouverneur -- 2014
##
 
if [ $# -lt 2 ]; then
  exit 0;
fi
action=$1;
addr=$2;
 
case ${action} in
	add)
		echo "[-] Deleting addr ${addr}" >> /tmp/learn.log
		/usr/bin/sudo /sbin/ip ro del ${addr}/32
		echo "[-] Adding addr ${addr} -> ${dev}" >> /tmp/learn.log
		/usr/bin/sudo /sbin/ip ro add ${addr}/32 dev ${dev};
	;;
	delete)
		# Actually do nothing, it will be removed next time the client connects
		# to any of the instances.
	;;
	*)
	;;
esac
 
exit 0;
Для форвардинга трафика в eth0 используется ufw:
$ cat /etc/ufw/before.rules 
...
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
...
Порты открыты:
$ ufw status 
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
1194/udp                   ALLOW       Anywhere
443                        ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
1194/udp (v6)              ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Клиент (ubuntu) подключается, но пинг идёт только до сервера с openvpn, а доступа в интернет нет

Днс на клиентах работает? И что вы там понаписали в ufw, при чём тут порты, если у вас пинги не ходят? Лучше уж показывайте полный список правил (iptables-save).

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

Хорошо, теперь запускаете на интерфейсе eth0 дампер пакетов, на какой-нибудь адрес, а на клиенте ping на этот адрес и смотрите. Допустим:

tcpdump -i eth0 -n -nn host 8.8.8.8 and icmp

ping 8.8.8.8

Если в tcpdump будут и запросы и ответы, значит, скорее всего не отрабатывает скрипт, прописывающий машрут.

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

Попробую вечером, т.к сейчас нет доступа к машине. Подумал, что может у пользователя, от которого запускается learn.sh, недостаточно прав

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

Скорее не у learn.sh а у /sbin/ip вы в sudoerr прописали?
А вообще подумайте так ли вам нужно, что бы одна подсетка (10.8.0.0) была для vpn ?

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

Да. Самое простое. Правда если у вас адреса раздаются конфигами из client-config-dir то может быть не удобно.

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

Наверное так было бы проще, но я же сказал, что бездумно копировал первое решение, которое нашел в гугле. Кстати, nobody ALL=(ALL:ALL) NOPASSWD: /sbin/ip в sudoers помогло, спасибо.

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

Всё разобрался - proto tcp на клиенте забыл. Всем спасибо.

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