LINUX.ORG.RU
ФорумAdmin

[openvpn][route] Не пингуется сеть за клиентом

 ,


1

1

Есть openvpn сервер с внешним ip в интернет и адресом в 192.168.0.0/24 на втором интерфейсе. На нем:

$ sudo cat /etc/openvpn/server.conf 
local 216.50.71.105 #(адрес изменен)
mode server
port 1194
proto udp
dev tun0
ifconfig-pool-persist /etc/openvpn/ipp.txt
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/gate.crt
key /etc/openvpn/keys/gate.key

dh /etc/openvpn/keys/dh1024.pem

server 10.8.0.0 255.255.255.0

push "route 192.168.0.0 255.255.255.0"
route 192.168.15.0 255.255.255.0 
client-to-client

keepalive 3 30

comp-lzo
max-clients 2
persist-key
persist-tun

user nobody
group nogroup

status /var/log/openvpn-status.log
log         /var/log/openvpn.log
verb 4

После соединения:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:60 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:6221 (6.0 KiB)  TX bytes:6640 (6.4 KiB)
и
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
216.50.71.100   0.0.0.0         255.255.255.248 U     0      0        0 eth1
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.15.0    10.8.0.2        255.255.255.0   UG    0      0        0 tun0
0.0.0.0         216.50.71.105   0.0.0.0         UG    0      0        0 eth1

И клиент за провайдерским натом и с подсетью 192.168.15.0/24:

$ sudo cat /etc/openvpn/client.conf 
client

dev tun0
proto udp

remote	216.50.71.105 1194

resolv-retry infinite

nobind

user nobody 
group nogroup

persist-key
persist-tun

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/store.crt
key /etc/openvpn/keys/store.key

comp-lzo

verb 5
mute 5

keepalive 10 120
status /var/log/openvpn-status.log
log /var/log/openvpn.log

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:45 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:6388 (6.2 KiB)  TX bytes:6221 (6.0 KiB)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.8.0.0        10.8.0.5        255.255.255.0   UG    0      0        0 tun0
192.168.0.0     10.8.0.5        255.255.255.0   UG    0      0        0 tun0
192.168.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.15.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth2
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth2

Обе машины являются шлюзами для соответствующих внутренних сетей. С машин в клиентской подсети пингуются все адреса из серверной 192.168.0.0/24. Со стороны сервера пингуется только 10.8.0.6, ни одной машины в 192.168.15.0/24 не видно. На обоих машинах делал

iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Положительных результатов это не дало. Хочу чтобы пинговалась сеть за клиентом (192.168.15.0/24) из сети за сервером (192.168.0.0/24).

Намекните пожалуйста, что я не осилил и где это можно исправить.

Deleted
Ответ на: комментарий от Deleted

Значит неправильно поднял роутинг

на сервере делаем tcpdump -i tup0

на клиенте пингуем сервер по ip 192.168.0.n какой-там у него. если icmp пакет не доходит до сервера значит проблема в клиенте, если доходит то в сервере. Есть хорошая команда ip route get $IP показывает через какое правило таблицы маршрутизации пойдет трафик на этот $IP

Yur4eg ★★
()
Ответ на: комментарий от Yur4eg
maingate:~# tcpdump -i tun0
tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
14:00:11.309090 IP 10.8.0.6 > 192.168.0.12: ICMP echo request, id 13392, seq 1, length 64
14:00:11.309120 IP 192.168.0.12 > 10.8.0.6: ICMP echo reply, id 13392, seq 1, length 64
14:00:12.314425 IP 10.8.0.6 > 192.168.0.12: ICMP echo request, id 13392, seq 2, length 64
14:00:12.314451 IP 192.168.0.12 > 10.8.0.6: ICMP echo reply, id 13392, seq 2, length 64
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel
maingate:~# 
maingate:~# 
maingate:~# ip route get 192.168.15.1
192.168.15.1 via 10.8.0.2 dev tun0  src 10.8.0.1 
    cache  mtu 1500 advmss 1460 hoplimit 64
maingate:~# 

Клиент делает ICMP echo request и reply с сервером, только когда пингую 10.8.0.6. Отличий с маршрутами у клиента тоже не вижу.

$ ip route get 192.168.0.12
192.168.0.12 via 10.8.0.5 dev tun0  src 10.8.0.6 
    cache  mtu 1500 advmss 1460 hoplimit 64

Deleted
()

я не спец, но "server 10.8.0.0 255.255.255.0" меня смущает. У тебя что, сервер имеет адрес 10.8.0.0?

pupok ★★
()

Значиццо так.

1. Добавляешь в конфиг сервера строчку
client-config-dir ccd
2. Создаешь в каталоге конфигов openvpn файл с именем, совпадающим с common name клиента.
В него пишешь
iroute 192.168.15.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
3. Перезапускаешь openvpn.
4. ???
5. PROFIT!

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

Так вроде подсеть в которой живут туннельные интерфейсы обозначается. А ip им раздаются автоматом или пишутся в файл ifconfig-pool-persist, и т.д.

Вообще, скорее всего нужно что-то добавить/убрать в цепочках netfilter, других предположений у меня нет.

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

Сделал, профита нет.

# cat /var/log/openvpn.log
...
Sun Oct 11 18:40:01 2009 us=546756 store/213.231.38.185:52890 OPTIONS IMPORT: reading client specific options from: /etc/openvpn/ccd/store
Sun Oct 11 18:40:01 2009 us=546953 store/213.231.38.185:52890 MULTI: Learn: 10.8.0.6 -> store/213.231.38.185:52890
Sun Oct 11 18:40:01 2009 us=547015 store/213.231.38.185:52890 MULTI: primary virtual IP for store/213.231.38.185:52890: 10.8.0.6
Sun Oct 11 18:40:01 2009 us=547040 store/213.231.38.185:52890 MULTI: internal route 192.168.15.0/24 -> store/213.231.38.185:52890
Sun Oct 11 18:40:01 2009 us=547066 store/213.231.38.185:52890 MULTI: Learn: 192.168.15.0/24 -> store/213.231.38.185:52890
Sun Oct 11 18:40:02 2009 us=572878 store/213.231.38.185:52890 PUSH: Received control message: 'PUSH_REQUEST'
Sun Oct 11 18:40:02 2009 us=572989 store/213.231.38.185:52890 SENT CONTROL [store]: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,topology net30,ping 3,ping-restart 30,route 192.168.0.0 255.255.255.0,ifconfig 10.8.0.6 10.8.0.5' (status=1)

Где 213.231.38.185 - шлюз провайдера, который дает интернет клиенту.

Deleted
()

Рассказываю историю успеха. На сервере в ccd/client_name должна быть одна строка:

iroute 192.168.15.0 255.255.255.0

В server.conf должно присутствовать:

push "route 192.168.0.0 255.255.255.0"
route 192.168.15.0 255.255.255.0 10.8.0.2
client-config-dir /etc/openvpn/ccd

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