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


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

Автор Тема: Доступ к хосту в сети openvpn из Интернет  (Прочитано 215017 раз)

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

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Всем привет!

Прошу помощи в следующей ситуации.
Настроен Оpenvpn сервис.
Со стороны Сервера проводное подключение, белый IP, со стороны клиента -- 4G.
Есть связность между сетями - хосты в сетях пингуются проходя vpn тоннель.

Мне нужно предоставить к хосту в сети Оpenvpn доступ из Интернет.
Например, можно представить, что на этом хосте web-сервер.
Это правила NAT, но я не могу самостоятельно разобраться..
Подскажите пожалуйста, как решить проблему.



Сеть сторона СЕРВЕРА
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.11.1  netmask 255.255.255.192  broadcast 192.168.11.63
        ether e0:d5:5e:94:cb:0f  txqueuelen 1000  (Ethernet)
        RX packets 7363462  bytes 10589740613 (10.5 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5665383  bytes 590581931 (590.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

em0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet XXX.XXX.76.51  netmask 255.255.255.192  broadcast XXX.XXX.76.63
        ether e0:d5:5e:94:cb:0e  txqueuelen 1000  (Ethernet)
        RX packets 5822860  bytes 620012724 (620.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10172323  bytes 10848708303 (10.8 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether e0:d5:5e:94:cb:0f  txqueuelen 1000  (Ethernet)
        RX packets 91179  bytes 15236631 (15.2 MB)
        RX errors 0  dropped 13  overruns 0  frame 0
        TX packets 157818  bytes 137981842 (137.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 20417  bytes 1606080 (1.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20417  bytes 1606080 (1.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.254.1  netmask 255.255.255.255  destination 192.168.254.2
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 418  bytes 35416 (35.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 486  bytes 35903 (35.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Сеть Сторона КЛИЕНТА
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.51.9  netmask 255.255.255.0  broadcast 192.168.51.255
        ether b6:2a:84:fa:e4:6a  txqueuelen 1000  (Ethernet)
        RX packets 44469  bytes 6798093 (6.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 70136  bytes 75522300 (75.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 46

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 771967  bytes 29946191101 (29.9 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 771967  bytes 29946191101 (29.9 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun30: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.254.13  netmask 255.255.255.255  destination 192.168.254.14
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 569  bytes 39299 (39.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 521  bytes 43328 (43.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


Маршруты сторона СЕРВЕРА
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         XXX.XXX.76.1    0.0.0.0         UG    0      0        0 em0
192.168.11.0    0.0.0.0         255.255.255.192 U     0      0        0 br0
192.168.51.0    192.168.254.2   255.255.255.0   UG    0      0        0 tun1   # маршрут в сторону Клиента
192.168.254.0   192.168.254.2   255.255.255.0   UG    0      0        0 tun1
192.168.254.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun1
XXX.XXX.76.0    0.0.0.0         255.255.255.192 U     0      0        0 em0

Маршруты сторона КЛИЕНТА
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.51.1    0.0.0.0         UG    0      0        0 eth0
192.168.11.0    192.168.254.14  255.255.255.192 UG    0      0        0 tun30 # маршрут в сторону Сервера
192.168.51.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.254.0   192.168.254.14  255.255.255.0   UG    0      0        0 tun30
192.168.254.14  0.0.0.0         255.255.255.255 UH    0      0        0 tun30

iptables на СЕРВЕРЕ
# Generated by iptables-save v1.8.4 on Thu Feb 22 18:28:08 2024
*mangle
:PREROUTING ACCEPT [1499538:850768562]
:INPUT ACCEPT [8186:860125]
:FORWARD ACCEPT [1490751:849822355]
:OUTPUT ACCEPT [5388:586882]
:POSTROUTING ACCEPT [1496094:850407299]
COMMIT
# Completed on Thu Feb 22 18:28:08 2024
# Generated by iptables-save v1.8.4 on Thu Feb 22 18:28:08 2024
*nat
:PREROUTING ACCEPT [17616:1791243]
:INPUT ACCEPT [443:25392]
:OUTPUT ACCEPT [181:11587]
:POSTROUTING ACCEPT [12489:1179215]
-A PREROUTING -i em0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.11.3:21
-A POSTROUTING -s 192.168.11.0/26 -o em0 -j MASQUERADE
-A POSTROUTING -s 192.168.21.0/26 -o em0 -j MASQUERADE
-A POSTROUTING -s 192.168.254.0/24 -o em0 -j MASQUERADE
COMMIT
# Completed on Thu Feb 22 18:28:08 2024
# Generated by iptables-save v1.8.4 on Thu Feb 22 18:28:08 2024
*filter
:INPUT DROP [43:7230]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [156:17790]
:f2b-sshd - [0:0]
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i tun1 -j ACCEPT
-A INPUT -i em0 -p tcp -m multiport --dports 22,443 -j ACCEPT
-A INPUT -i em0 -p udp -m udp --dport 1012 -j ACCEPT
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i em0 -p tcp -m multiport --dports 21 -j ACCEPT
-A FORWARD -i br0 -o em0 -j ACCEPT
-A FORWARD -i wlp5s0 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o br0 -j ACCEPT
-A FORWARD -i tun1 -o wlp5s0 -j ACCEPT
-A FORWARD -s 192.168.11.0/26 -i br0 -j ACCEPT
-A FORWARD -s 192.168.21.0/26 -i wlp5s0 -j ACCEPT
-A FORWARD -s 192.168.51.0/24 -j ACCEPT
COMMIT
# Completed on Thu Feb 22 18:28:08 2024

iptables на КЛИЕНТЕ
iptables-save
# Generated by iptables-save v1.8.7 on Thu Feb 22 18:42:35 2024
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Thu Feb 22 18:42:35 2024
# Warning: iptables-legacy tables present, use iptables-legacy-save to see them









 


Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #1 : 22 Февраля 2024, 19:21:32 »
На сервере:
iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.254.13
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #2 : 22 Февраля 2024, 20:41:43 »
И 443 тогда уже.

А на клиенте нужно тоже немного пошаманить.
https://anr-daemon.livejournal.com/14768.html и предыдущая статья.
Сначала читать, потом думать, потом бросаться что-то делать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #3 : 22 Февраля 2024, 21:04:02 »
iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.254.13
только одно это правило?

нет. не работает...

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #4 : 22 Февраля 2024, 21:18:50 »
А, ну и разрешить входящие на 80.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #5 : 22 Февраля 2024, 21:25:23 »
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
зачем цепочка INPUT? Эти пакеты транзитом должны пройти. или я что-то не понимаю?..

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #6 : 22 Февраля 2024, 21:39:37 »
у вас на сервере INPUT DROP. Это означает, что будет отброшено всё, что не разрешено. Любой входящий пакет на 80 порт будет дропнут.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #7 : 22 Февраля 2024, 21:46:31 »
Так цепочка INPUT, она для локальных приложений хоста, таких как ssh например.
Мне же надо чтобы пакет ушел через openvpn тоннель на третий хост.
Тут цепочка FORWARD должна работать.
Или я заблуждаюсь?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #8 : 22 Февраля 2024, 21:59:17 »
FORWARD должна работать.
FORWARD осуществляет пересылку между локальными интерфейсами. А пересылать нечего, если входящий пакет на интерфейсе изначально будет отброшен.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1118
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #9 : 22 Февраля 2024, 22:01:07 »
Или я заблуждаюсь?
Вы заблуждаетесь.

Сначала пакет проходит INPUT и только потом PREROUTING. И если у вас пакет отбросит на этапе INPUT то до PREROUTING он не дойдёт.

Потому если говорит о "пробросе портов" то надо разрешить INPUT, потом сделать PREROUTING и разрешить ещё FORWARD

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #10 : 22 Февраля 2024, 22:06:10 »
и разрешить ещё FORWARD
Точно. У тс сделано только в одну сторону.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #11 : 22 Февраля 2024, 22:17:19 »
# Generated by iptables-save v1.8.4 on Thu Feb 22 22:11:28 2024
*mangle
:PREROUTING ACCEPT [59679:70708017]
:INPUT ACCEPT [832:79046]
:FORWARD ACCEPT [58815:70625226]
:OUTPUT ACCEPT [750:93636]
:POSTROUTING ACCEPT [59565:70718862]
COMMIT
# Completed on Thu Feb 22 22:11:28 2024
# Generated by iptables-save v1.8.4 on Thu Feb 22 22:11:28 2024
*nat
:PREROUTING ACCEPT [1033:99325]
:INPUT ACCEPT [30:1673]
:OUTPUT ACCEPT [6:410]
:POSTROUTING ACCEPT [728:67855]
-A PREROUTING -i em0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.11.3:21
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.254.13
-A POSTROUTING -s 192.168.11.0/26 -o em0 -j MASQUERADE
-A POSTROUTING -s 192.168.21.0/26 -o em0 -j MASQUERADE
-A POSTROUTING -s 192.168.254.0/24 -o em0 -j MASQUERADE
COMMIT
# Completed on Thu Feb 22 22:11:28 2024
# Generated by iptables-save v1.8.4 on Thu Feb 22 22:11:28 2024
*filter
:INPUT DROP [27:4521]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [181:22920]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j f2b-sshd
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i tun1 -j ACCEPT
-A INPUT -i wlp5s0 -j ACCEPT
-A INPUT -i em0 -p tcp -m multiport --dports 22,443 -j ACCEPT
-A INPUT -i em0 -p udp -m udp --dport 1012 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -i br0 -o em0 -j ACCEPT
-A FORWARD -i wlp5s0 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o br0 -j ACCEPT
-A FORWARD -i tun1 -o wlp5s0 -j ACCEPT
-A FORWARD -s 192.168.11.0/26 -i br0 -j ACCEPT
-A FORWARD -s 192.168.21.0/26 -i wlp5s0 -j ACCEPT
COMMIT
# Completed on Thu Feb 22 22:11:28 2024

вот iptables c openvpn-server. я не могу по внешнему ip попасть на порт 80, хоста который за openvpn.
вот его ifconfig:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.51.9  netmask 255.255.255.0  broadcast 192.168.51.255
        ether b6:2a:84:fa:e4:6a  txqueuelen 1000  (Ethernet)
        RX packets 50364  bytes 7461093 (7.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75793  bytes 76167663 (76.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 46

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 773765  bytes 29947478981 (29.9 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 773765  bytes 29947478981 (29.9 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun30: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.254.13  netmask 255.255.255.255  destination 192.168.254.14
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 2633  bytes 162325 (162.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2507  bytes 166350 (166.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



Пользователь добавил сообщение 23 Февраля 2024, 00:22:30:
В общем задача несмотря на казалось бы простоту, оказалась нетривиальной...
Чтобы хост стал доступен из Интернет через openvpn тоннель надо:
-A FORWARD -p tcp -m tcp --dport 80 -j ACCEPTи
-A PREROUTING -p tcp -m tcp -d XXX.XXX.76.5XX --dport 80 -j DNAT --to-destination 192.168.254.13Но! Это только в том случае, если дефолтный маршрут идет через openvpn-server.
Как сделать так, чтобы работало с обычным маршрутом ISP провайдера пока не разобрался.
« Последнее редактирование: 23 Февраля 2024, 00:22:30 от kolesov »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #12 : 23 Февраля 2024, 00:24:09 »
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o br0 -j ACCEPT
-A FORWARD -i tun1 -o wlp5s0 -j ACCEPT
Лень разбираться, что там у вас c интерфейсами наворочено. В обратную сторону тоже нужно пускать. Хотя бы так:
-A FORWARD -d  192.168.254.13 -j ACCEPT
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #13 : 23 Февраля 2024, 22:28:13 »
у вас на сервере INPUT DROP. Это означает, что будет отброшено всё, что не разрешено. Любой входящий пакет на 80 порт будет дропнут.
Неверно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6756
  • 20% Cooler
    • Просмотр профиля
Re: Доступ к хосту в сети openvpn из Интернет
« Ответ #14 : 23 Февраля 2024, 22:40:35 »
AnrDaemon, ?

INPUT DROP указывает, что все входящие пакеты должны быть отброшены.
« Последнее редактирование: 23 Февраля 2024, 22:43:01 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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