Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Openvpn сервер не видит локальную сеть клиента  (Прочитано 35474 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн testik7771

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Настраиваю VPNсервер на Ubuntu 22.04 и клиент на winxp (знаю что старая но задача такая) все на VirtualBOX.
Защищенный канал устанавливается без проблем, с клиента до локального интерфейса сервера (10.0.2.2) пинг ходит, а вот с сервера локальный интерфейс клиента не пингуется, пакеты на стороны сервера в тоннель попадают (tcpdump логи приложу), а на стороне клиента пакеты не появляются. При этом в обратную сторону (пинг с клиента на сервер) все четко ходит по тоннелю в обе стороны.
на сервере выставлена net.ipv4.ip_forward=1.
на клиенте в винде ветра реестра стоит 1 и служба маршрутизации вкл (хотя и без нее пинги до сервера шли)

конфиг сервера

local 10.0.2.2 
port 1194 
proto udp 
dev tun 
ca ca.crt 
cert server.crt 
key server.key 
dh dh.pem 
auth SHA512 
tls-crypt tc.key 
topology subnet 
server 10.8.0.0 255.255.255.0 
push "redirect-gateway def1 bypass-dhcp" 
ifconfig-pool-persist ipp.txt 
#client-config-dir /etc/openvpn/ccd 
push "dhcp-option DNS 1.1.1.1" 
push "dhcp-option DNS 1.0.0.1" 
push "block-outside-dns" 
keepalive 10 120 
cipher AES-256-CBC 
user nobody 
group nogroup 
persist-key 
persist-tun 
verb 3 
crl-verify crl.pem 
explicit-exit-notify 
status /var/log/openvpn/openvpn-status.log 
log /var/log/openvpn/openvpn.log 

/etc/openvpn/ccd/client1     (по факту не использую)                 
#iroute 10.0.3.0 255.255.255.0  (когда строка раскомментирована клиент перестает подключаться к серверу) 
#ifconfig-push 10.0.3.0 255.255.255.0 

конфиг клиента

client 
dev tun 
proto udp 
remote 10.132.56.42 1194 
resolv-retry infinite 
nobind 
persist-key 
persist-tun 
remote-cert-tls server 
auth SHA512 
cipher AES-256-CBC 
ignore-unknown-option block-outside-dns 
verb 3 
remote-metod exe 
route-delay 5 

ip сервера


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 
    link/ether 08:00:27:32:58:3c brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.2/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.56.2/24 brd 192.168.56.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe32:583c/64 scope link
       valid_lft forever preferred_lft forever

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500 
    link/none
    inet 10.8.0.1/24 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::c9b3:ae95:6103:dbac/64 scope link stable-privacy
       valid_lft forever preferred_lft forever
ip клиента

локальный 10.0.3.4/24 
VPN-tun   10.8.0.2/24 


таблица маршрутов сервера

Destination     Gateway         Genmask         Flags   MSS
 Window  irtt Iface 
0.0.0.0         10.0.2.1        0.0.0.0         UG        0 0          0 enp0s3 
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 enp0s3 
10.0.3.0        10.8.0.1        255.255.255.0   UG        0 0          0 tun0 
10.8.0.0        0.0.0.0         255.255.255.0   U         0 0          0 tun0 
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 enp0s3 


Таблица клиента

Активные маршруты: 
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика 
          0.0.0.0          0.0.0.0         10.0.3.1        10.0.3.4       1 
          0.0.0.0        128.0.0.0         10.8.0.1        10.8.0.2       1 
         10.0.3.0    255.255.255.0         10.0.3.4        10.0.3.4       10 
         10.0.3.4  255.255.255.255        127.0.0.1       127.0.0.1       10 
         10.8.0.0    255.255.255.0         10.8.0.2        10.8.0.2       3 
         10.8.0.2  255.255.255.255        127.0.0.1       127.0.0.1       3 
     10.132.56.42  255.255.255.255         10.0.3.1        10.0.3.4       1 
   10.255.255.255  255.255.255.255         10.0.3.4        10.0.3.4       10 
   10.255.255.255  255.255.255.255         10.8.0.2        10.8.0.2       3 
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1 
        128.0.0.0        128.0.0.0         10.8.0.1        10.8.0.2       1 
        224.0.0.0        240.0.0.0         10.0.3.4        10.0.3.4       10 
        224.0.0.0        240.0.0.0         10.8.0.2        10.8.0.2       3 
  255.255.255.255  255.255.255.255         10.0.3.4        10.0.3.4       1 
  255.255.255.255  255.255.255.255         10.8.0.2        10.8.0.2       1 
Основной шлюз:            10.8.0.1


tcpdump с сервера при пинге с него же клиента 

 tcpdump -i tun0 -n -nn -ttt 'ip proto \icmp' -vv

tcpdump: listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes

 00:00:00.000000 IP (tos 0x0, ttl 64, id 12046, offset 0, flags [DF], proto ICMP (1), length 84)
    10.8.0.1 > 10.0.3.4: ICMP echo request, id 22, seq 2251, length 64

 00:00:01.024808 IP (tos 0x0, ttl 64, id 12142, offset 0, flags [DF], proto ICMP (1), length 84)

    10.8.0.1 > 10.0.3.4: ICMP echo request, id 22, seq 2252, length 64
 00:00:01.023688 IP (tos 0x0, ttl 64, id 12213, offset 0, flags [DF], proto ICMP (1), length 84)

    10.8.0.1 > 10.0.3.4: ICMP echo request, id 22, seq 2253, length 64
 00:00:01.024084 IP (tos 0x0, ttl 64, id 12254, offset 0, flags [DF], proto ICMP (1), length 84)

    10.8.0.1 > 10.0.3.4: ICMP echo request, id 22, seq 2254, length 64
tcpdump c клиента пустой.

 iptables-save 
 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
COMMIT 
# Completed on Fri Jun  2 17:27:06 2023 
# Generated by iptables-save v1.8.7 on Fri Jun  2 17:27:06 2023 
*nat 
:PREROUTING ACCEPT [0:0] 
:INPUT ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
:POSTROUTING ACCEPT [0:0] 
COMMIT 

Кучу форумов пересмотрел с похожей проблемой. В основном все пишут про настройку нат на сервере, отключение фаерволов и маршруты. Пробовал добавить правило в Iptables, как советуют: 
iptables -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 192.168.56.2 или 10.0.2.2  подставлять не помогает.

====================
Цитата: Правила форума
1.4. Листинги и содержимое текстовых файлов следует добавлять в сообщение с помощью тегов [spoiler]...[/spoiler] или [code]...[/code], либо прикреплять к сообщению в виде отдельного файла.

--БТР
« Последнее редактирование: 02 Июня 2023, 14:43:40 от БТР »

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1111
    • Просмотр профиля
Попробуйте на клиенте посмотреть вот на это:
ip route get 10.8.0.1

Скорее всего ответ уходит не туда. Эта команда поможет понять куда именно он уходит.

Оффлайн testik7771

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
На клиенте эту команду запустить не смогу там Windows стоит. На сервере

ip route get 10.8.0.1
local 10.8.0.1 dev lo src 10.8.0.1 uid 0
    cache <local>
что логично

на клиенте могу только tcpdump запустить.

Мне тут подсказали в конфиге сервера добавить ссылку на ccd и раскомментил строку в  файле ccd

local 10.0.2.2
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
route 10.0.3.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "route 10.0.2.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
push "block-outside-dns"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log

/etc/openvpn/ccd/client1     (по факту не использую)                 
iroute 10.0.3.0 255.255.255.0
#ifconfig-push 10.0.3.0 255.255.255.0 

Теперь При пинге  10.0.3.4 tcpdump на клиенте показывает, что пакеты с сервера до клиента доходят, но обратно уже не возвращаются, т.е. косяк где-то на клиенте.

также я для доп тестов развернул еще knopix в сети клиента, для дальнейших тестов.


Пользователь добавил сообщение 06 Июня 2023, 06:04:25:
Все пинги до локального интерфейса клиента пошли.
Оказалась в какой-то момент эксперементирования с натом на винде пропала галка ключ “IPEnableRouter” из ветки HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Tcpip\Parameters

осталось теперь настроить, чтобы сервер начал компьютеры в сети клиента видеть. У тестого компьютера с knoppixом IP 10.0.3.6
я так понял это нужно нат на клиенте ставить или на всех компах сети  какой-то маршрут прописать, что типа если пакет  идет с подсети 10.0.2.0 то его нужно направить на 10.0.3.4 (это впн-клиент)

с натом на винде у меня какие-то проблемы, может у кого опыт есть. Поднимал его по этой инструкции
netsh routing ip nat install
netsh routing ip nat show global (если в ответ видим “NAT должен быть установлен первым” – ребутимся, если нет – идём дальше.)
netsh routing ip nat add interface “Internet connection” full (где “Internet connection” — tun-интерфейс.)
netsh routing ip nat add interface “Local Area Connection” private (где “Local Area Connection” – интерфейс локальной сети клиента.)

по маршруту тоже не понятно какой именно маршрут прописывать

Пользователь добавил сообщение 06 Июня 2023, 10:20:58:
Смог я победить данную задачу.

Короче когда поднял нат на винде:
netsh routing ip nat install
Проверяем:
netsh routing ip nat show global (если в ответ видим “NAT должен быть установлен первым” – ребутимся, если нет – идём дальше.)
Возможно необязательно:
netsh routing ip nat add interface “Internet connection” full (где “Internet connection” — tun-интерфейс.)
netsh routing ip nat add interface “Local Area Connection” private (где “Local Area Connection” – интерфейс локальной сети клиента.)
Перезагрузить ОС.

Заработал пинг  с сервера до компа в сети клиента. Но не работал пинг с компа клиента до сети сервера.

Добавляем правило для ната в VPN сервер Ubuntu:

iptables -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 10.0.2.2
Установить прогу для сохранения правил iptables

apt-get install iptables-persistent
Далее команда на сохранение правила

netfilter-persistent save
После этого вроде во все стороны пинги забегали. Дрочево конечно знатное получилось.

Единственно меня правило ната в убунте смущает, наверняка не такое широкое можно сделать. Может подскажите как более узко сделать? в винде уже ничего не сделать, там нат ущербный.


Пользователь добавил сообщение 06 Июня 2023, 11:02:17:
Не подскажите нат с маскарадингом на винде?
« Последнее редактирование: 06 Июня 2023, 11:02:17 от testik7771 »

 

Страница сгенерирована за 0.051 секунд. Запросов: 22.