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

VPS, Wireguard, ip камера, проброс порта

 , ,


0

2

Приветствую, Уважаемые!

Я начинаю только, плз, яйцами не кидать))) У самого что-то не получается.

Нужно: Чтобы кто угодно набрал rtsp://user:pass@216.120.11.37:10500 и получил видео. Vps ubuntu+wireguard server 216.120.11.37, wg порт 41321, порт на который нужно пробросить ртсп камеру 10500. Адрес камеры на wg клиенте 192.168.5.10 порт 554. iptables умучал уже. С сервера через wg камера пингуется.

PostUp = iptables -I INPUT -p udp –dport 41321 -j ACCEPT

PostUp = iptables -I FORWARD -i ens18 -o wg0 -j ACCEPT

PostUp = iptables -t nat -A PREROUTING -p tcp -d 216.120.11.37 – dport 10500 -j DNAT –to-destination 192.168.5.10:554

#PostUp = iptables -I FORWARD -i wg0 -j ACCEPT

PostUp = iptables -t nat -A POSTROUTING -p tcp -d 192.168.5.10 -j SNAT –to-source 216.120.11.37:10500

PostUp = iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE

PostDown = iptables -D INPUT -p udp –dport 41321 -j ACCEPT

PostDown = iptables -D FORWARD -i ens18 -o wg0 -j ACCEPT

PostDown = iptables -t nat -A PREROUTING -p tcp -d 216.120.11.37 –dport 10500 -j DNAT –to-destination 192.168.5.10:554

#PostDown = iptables -D FORWARD -i wg0 -j ACCEPT

PostDown = iptables -t nat -D POSTROUTING -p tcp -d 192.168.5.10 -j SNAT –to-source 216.120.11.37:10500

PostDown = iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

Уже неделю долблюсь об iptables))) Плз, помогите поправить!!!



Последнее исправление: AlexZander (всего исправлений: 2)

Если я правильно понял, что ты имеешь ввиду, то тебе нужно попробовать это прописать в PostUp

iptables -A INPUT -d 216.120.11.37 -p udp --dport 41321 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wg0 -o ens18 -j ACCEPT
iptables -t nat -A POSTROUTING -i wg0 -o ens18 -j MASQUERADE
iptables -t nat -A PREROUTING -d 216.120.11.37 -p tcp --dport 10500 -j DNAT --to 192.168.5.10:554
iptables -A FORWARD -d 192.168.5.10 -p tcp --dport 554 -j ACCEPT

в PostDown пиши все то же самое, только вместо -A пиши -D.

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

что-то идет не так

root@wgserver:~# tcpdump -n -vv -i wg0 tcpdump: listening on wg0, link-type RAW (Raw IP), snapshot length 262144 bytes 20:42:44.287318 IP (tos 0x8, ttl 48, id 5605, offset 0, flags [DF], proto TCP (6), length 60) 89.113.155.232.19730 > 192.168.5.10.554: Flags [S], cksum 0xaadb (correct), seq 3106009835, win 65535, options [mss 1360,sackOK,TS val 2352910 ecr 0,nop,wscale 8], length 0 20:42:44.746587 IP (tos 0x8, ttl 48, id 7452, offset 0, flags [DF], proto TCP (6), length 60) 89.113.155.232.19729 > 192.168.5.10.554: Flags [S], cksum 0x7e26 (correct), seq 384680292, win 65535, options [mss 1360,sackOK,TS val 2353024 ecr 0,nop,wscale 8], length 0 20:42:45.286930 IP (tos 0x8, ttl 48, id 5606, offset 0, flags [DF], proto TCP (6), length 60) 89.113.155.232.19730 > 192.168.5.10.554: Flags [S], cksum 0xa9e1 (correct), seq 3106009835, win 65535, options [mss 1360,sackOK,TS val 2353160 ecr 0,nop,wscale 8], length 0 20:42:46.037651 IP (tos 0x8, ttl 48, id 5919, offset 0, flags [DF], proto TCP (6), length 60) 89.113.155.232.19731 > 192.168.5.10.554: Flags [S], cksum 0xd992 (correct), seq 3100885711, win 65535, options [mss 1360,sackOK,TS val 2353344 ecr 0,nop,wscale 8], length 0 20:42:46.315648 IP (tos 0x8, ttl 48, id 5607, offset 0, flags [DF], proto TCP (6), length 60) 89.113.155.232.19730 > 192.168.5.10.554: Flags [S], cksum 0xa8e1 (correct), seq 3106009835, win 65535, options [mss 1360,sackOK,TS val 2353416 ecr 0,nop,wscale 8], length 0 20:42:47.356512 IP (tos 0x8, ttl 48, id 5608, offset 0, flags [DF], proto TCP (6), length 60)

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

После того, как скопировал вывод команд или фрагмент лога, нужно добавить 3 машинописных обратных апострофа ``` на строчку выше и ниже, тогда будет корректная разметка.

По ссылке я рассмотрел весь процесс детально с картинками для совсем нулей. Как ты хотя бы минимально понимаешь iptables и не можешь разобраться с простым как палка Markdown — не знаю.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от AlexZander

Да плевать на iptables. Я о том, что ты криво копируешь вывод команд на форум, особенно тут: VPS, Wireguard, ip камера, проброс порта (комментарий)

Как правильно копировать вывод терминала — там 6 картинок, просто открой их одна за другой, я блин уже комикс сделал.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от medoed

root@wgserver:~# tcpdump -n -vv port 10500

tcpdump: listening on ens18, link-type EN10MB (Ethernet), snapshot length 262144 bytes

20:45:46.925824 IP (tos 0x8, ttl 49, id 31076, offset 0, flags [DF], proto TCP (6), length 60)

89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc3b6 (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2371589 ecr 0,nop,wscale 8], length 0

20:45:47.905550 IP (tos 0x8, ttl 49, id 31077, offset 0, flags [DF], proto TCP (6), length 60)

89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc2bb (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2371840 ecr 0,nop,wscale 8], length 0

20:45:48.945008 IP (tos 0x8, ttl 49, id 31078, offset 0, flags [DF], proto TCP (6), length 60)

89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc1bb (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2372096 ecr 0,nop,wscale 8], length 0
AlexZander
() автор топика
Ответ на: комментарий от AlexZander
root@wgserver:~# tcpdump -n -vv port 10500
tcpdump: listening on ens18, link-type EN10MB (Ethernet), snapshot length 262144 bytes
20:45:46.925824 IP (tos 0x8, ttl 49, id 31076, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc3b6 (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2371589 ecr 0,nop,wscale 8], length 0
20:45:47.905550 IP (tos 0x8, ttl 49, id 31077, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc2bb (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2371840 ecr 0,nop,wscale 8], length 0
20:45:48.945008 IP (tos 0x8, ttl 49, id 31078, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc1bb (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2372096 ecr 0,nop,wscale 8], length 0
20:45:49.966202 IP (tos 0x8, ttl 49, id 31079, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19739 > 217.197.117.81.10500: Flags [S], cksum 0xc0bb (correct), seq 1351764321, win 65535, options [mss 1360,sackOK,TS val 2372352 ecr 0,nop,wscale 8], length 0
AlexZander
() автор топика
Ответ на: комментарий от AlexZander
root@wgserver:~# tcpdump -n -vv -i wg0
tcpdump: listening on wg0, link-type RAW (Raw IP), snapshot length 262144 bytes
20:42:44.287318 IP (tos 0x8, ttl 48, id 5605, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19730 > 192.168.5.10.554: Flags [S], cksum 0xaadb (correct), seq 3106009835, win 65535, options [mss 1360,sackOK,TS val 2352910 ecr 0,nop,wscale 8], length 0
20:42:44.746587 IP (tos 0x8, ttl 48, id 7452, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19729 > 192.168.5.10.554: Flags [S], cksum 0x7e26 (correct), seq 384680292, win 65535, options [mss 1360,sackOK,TS val 2353024 ecr 0,nop,wscale 8], length 0
20:42:45.286930 IP (tos 0x8, ttl 48, id 5606, offset 0, flags [DF], proto TCP (6), length 60)
    89.113.155.232.19730 > 192.168.5.10.554: Flags [S], cksum 0xa9e1 (correct), seq 3106009835, win 65535, options [mss 1360,sackOK,TS val 2353160 ecr 0,nop,wscale 8], length 0
20:42:46.037651 IP (tos 0x8, ttl 48, id 5919, offset 0, flags [DF], proto TCP (6), length 60)
AlexZander
() автор топика
Ответ на: комментарий от AlexZander

Ну, все правильно, пакеты приходят на нужный порт. Я тут подумал, скорее всего, на камеру приходят, а вот уходят с нее не туда. Сделай схему, по которой ты подключаешь камеру к серверу 216.120.11.37

medoed
()
Ответ на: комментарий от medoed
маршрут от камеры:
камера 192.168.5.10:554
wg клиент кинетик 10.8.8.10
wg сервер 10.8.8.1
дальше все это надо отправить на 10500? тому кто прислал пакет

если поднимаю на смарте wg клиента 10.8.8.14, то видео идет нормально. без wg клиента через порт 10500 не идет.
То есть до сервера по wg пакеты доходят нормально точно, а вот дальше выпихнуть их правильно на 10500 пока не получается.
AlexZander
() автор топика
Ответ на: комментарий от medoed
это с wg клиентом на смарте

root@wgserver:~# tcpdump -n -vv -i wg0  
tcpdump: listening on wg0, link-type RAW (Raw IP), snapshot length 262144 bytes
21:23:24.397513 IP (tos 0x0, ttl 64, id 62282, offset 0, flags [DF], proto TCP (6), length 60)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [S], cksum 0x909d (correct), seq 1490010160, win 65535, options [mss 1240,sackOK,TS val 2438010 ecr 0,nop,wscale 8], length 0
21:23:24.397637 IP (tos 0x0, ttl 63, id 62282, offset 0, flags [DF], proto TCP (6), length 60)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [S], cksum 0x909d (correct), seq 1490010160, win 65535, options [mss 1240,sackOK,TS val 2438010 ecr 0,nop,wscale 8], length 0
21:23:24.403245 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.5.10.554 > 10.8.8.14.37292: Flags [S.], cksum 0x6eec (correct), seq 1011269054, ack 1490010161, win 28960, options [mss 1284,sackOK,TS val 505421 ecr 2438010,nop,wscale 2], length 0
21:23:24.403277 IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.5.10.554 > 10.8.8.14.37292: Flags [S.], cksum 0x6eec (correct), seq 1011269054, ack 1490010161, win 28960, options [mss 1284,sackOK,TS val 505421 ecr 2438010,nop,wscale 2], length 0
21:23:24.478371 IP (tos 0x0, ttl 64, id 62283, offset 0, flags [DF], proto TCP (6), length 52)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [.], cksum 0x0cec (correct), seq 1, ack 1, win 291, options [nop,nop,TS val 2438031 ecr 505421], length 0
21:23:24.478388 IP (tos 0x0, ttl 63, id 62283, offset 0, flags [DF], proto TCP (6), length 52)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [.], cksum 0x0cec (correct), seq 1, ack 1, win 291, options [nop,nop,TS val 2438031 ecr 505421], length 0
21:23:24.486976 IP (tos 0x0, ttl 64, id 62284, offset 0, flags [DF], proto TCP (6), length 139)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [P.], cksum 0x8f39 (correct), seq 1:88, ack 1, win 291, options [nop,nop,TS val 2438032 ecr 505421], length 87: RTSP, length: 87
        OPTIONS rtsp://192.168.5.10:554 RTSP/1.0
        User-Agent: AndroidXMedia3/1.2.1
        CSeq: 0

21:23:24.486992 IP (tos 0x0, ttl 63, id 62284, offset 0, flags [DF], proto TCP (6), length 139)
    10.8.8.14.37292 > 192.168.5.10.554: Flags [P.], cksum 0x8f39 (correct), seq 1:88, ack 1, win 291, options [nop,nop,TS val 2438032 ecr 505421], length 87: RTSP, length: 87
        OPTIONS rtsp://192.168.5.10:554 RTSP/1.0
        User-Agent: AndroidXMedia3/1.2.1
        CSeq: 0
AlexZander
() автор топика
Ответ на: комментарий от AlexZander

Понятно. Это надо в кинетике настраивать файрволл. Тебе надо, чтобы пакеты с 192.168.5.10:554/tcp, которые идут не в приватные сети, отправлялись в сетевой интерфейс клиента wg на кинетике. Как сделать не подскажу, с кинетиками мало общался.

medoed
()
Ответ на: комментарий от medoed
смарт wg <-> wg сервер <-> wg клиент <-> камера
все работает нормально

смарт -> интернет -> сервер порт 10500 -> wg сервер <-> wg клиент <-> камера
пакеты идут

дальше не идут <- wg сервер <- wg клиент <- камера

прямо засада какая-то)))

AlexZander
() автор топика
Ответ на: комментарий от medoed
плз подскажите, можно ли принять на 10500 пакет, подменить адрес на 10.8.8.100, например, отправить дальше на камеру, принять ответ
для 10.8.8.100, заменить этот адрес на адрес сервера и отправить на порт 10500 и делее получателю? или это фантазия?
AlexZander
() автор топика
Ответ на: комментарий от medoed
посмотрел логи на камере.

00001	2024-06-11 23:14:15	Выход[RTSP:10.8.8.14]
00002	2024-06-11 23:14:16	Вход[RTSP:10.8.8.14]
00003	2024-06-11 23:14:50	Выход[RTSP:10.8.8.14]

это фиксация входа если смарт через wg видео, если на 10500 толкаться без wg, то следов регистрации нет. похоже, что до камеры пакеты не долетают.
AlexZander
() автор топика
Ответ на: комментарий от AlexZander

Пустая строка (два раза Enter) начинает новый абзац. Знак ‘>’ в начале абзаца выделяет абзац курсивом цитирования. Внимание: прочитайте описание разметки Markdown.

Этот текст под формой помещения комментария.

Читай раздел «Код и спецсимволы».

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

vps сервер нужен для передачи видео от камер за натами и серыми ip адресами. камера -> wg клиент -> wg сервер (vps)-> интернет -> смотри видео по ссылке на порт vps сервера

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

Правил iptables может быть достаточно, только смотря каких.

Если доступ до камеры с VPS есть и поток на самом VPS от камеры открыватся.

Достаточно сделать в правилах iptables SNAT в IP адрес VPS в VPN канале для пакетов идущих в сторону камеры и всё.

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

Поэтому я и написал, что нужно проверить ping до камеры, проверить доступность потока через ffmpeg и если всё успешно - сделать SNAT.

Если у него с VPS нет доступа до камеры и нет потока с неё - вообще не понятно зачем дальше делать настройку.

На камере тоже должен быть прописан шлюз и с этого шлюза доступен VPS через VPN туннель, видимо.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87
схема: смарт (без wg) <-> интернет <-> сервер порт 10500 + wg сервер <-> wg клиент (кинетик старт) <-> ip камера

камера далеко от впс, находится за натом и серым ip

root@wgserver:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         217-197-117-1.e 0.0.0.0         UG    100    0        0 ens18
10.8.0.0        0.0.0.0         255.255.0.0     U     0      0        0 wg0
192.168.5.1     0.0.0.0         255.255.255.255 UH    0      0        0 wg0
192.168.5.10    0.0.0.0         255.255.255.255 UH    0      0        0 wg0
192.168.5.20    0.0.0.0         255.255.255.255 UH    0      0        0 wg0
rec14.estt.ru   217-197-117-1.e 255.255.255.255 UGH   100    0        0 ens18
217.197.117.0   0.0.0.0         255.255.255.0   U     100    0        0 ens18
217-197-117-1.e 0.0.0.0         255.255.255.255 UH    100    0        0 ens18

AlexZander
() автор топика
Ответ на: комментарий от Cergoo
iptables -t nat -A PREROUTING -p tcp --dport 10500 -j DNAT --to-destination IP_КАМЕРЫ:PORT_КАМЕРЫ
iptables -t nat -A POSTROUTING -p tcp --dport PORT_КАМЕРЫ -d IP_КАМЕРЫ -j SNAT --to-source IP_VPS_В_WIREGUARD_ТУННЕЛЕ
echo 1 > /proc/sys/net/ipv4/ip_forward

Всё.

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

ip камера камера далеко от впс, находится за натом и серым ip

Тогда на wireguard сервере нужно пробросить порт, либо должна быть маршрутизация через wireguard туннель до камеры с VPS.

kostik87 ★★★★★
()
Ответ на: комментарий от Cergoo
iptables -t nat -A PREROUTING -p tcp -d 216.120.11.37 – dport 10500 -j DNAT –to-destination 192.168.5.10:554

iptables -t nat -A POSTROUTING -p tcp --dport 554 -d 192.168.5.10 -j SNAT --to-source IP_VPS_В_WIREGUARD_ТУННЕЛЕ
echo 1 > /proc/sys/net/ipv4/ip_forward

Осталось только узнать какой IP адрес VPS в VPN туннеле, точнее на wireguard интерфейсе.

А прочие правила в iptables, что добавил автор темы нужно удалить.

Там неправильно написано.

И можно:

cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward

Это потом на постоянной основе в sysctl.conf, только правильно

net.ipv4.ip_forward=1
kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87
iptables -t nat -A PREROUTING -p tcp -d 216.120.11.37 – dport 10500 -j DNAT –to-destination 192.168.5.10:554

iptables -t nat -A POSTROUTING -p tcp --dport 554 -d 192.168.5.10 -j SNAT --to-source 10.8.8.1

оставить только эти 2 строки, а что было до этого удалить, правильно?
AlexZander
() автор топика
Ответ на: комментарий от kostik87
вход на порт есть, дальше пусто
root@wgserver:~# tcpdump -n -vv port 10500
tcpdump: listening on ens18, link-type EN10MB (Ethernet), snapshot length 262144 bytes
12:15:44.759531 IP (tos 0x0, ttl 52, id 60687, offset 0, flags [DF], proto TCP (6), length 60)
    46.39.55.152.24903 > 217.197.117.81.10500: Flags [S], cksum 0x8db8 (correct), seq 1454650166, win 65535, options [mss 1440,sackOK,TS val 979264 ecr 0,nop,wscale 8], length 0
12:15:45.685793 IP (tos 0x0, ttl 52, id 54018, offset 0, flags [DF], proto TCP (6), length 60)
    46.39.55.152.6478 > 217.197.117.81.10500: Flags [S], cksum 0xff50 (correct), seq 1044455716, win 65535, options [mss 1440,sackOK,TS val 979494 ecr 0,nop,wscale 8], length 0
12:15:46.686554 IP (tos 0x0, ttl 52, id 54019, offset 0, flags [DF], proto TCP (6), length 60)
AlexZander
() автор топика
Ответ на: комментарий от kostik87
не едет ни c wg, ни без wg

PostUp = iptables -t nat -A PREROUTING -p tcp -d 217.197.117.81 --dport 10500 -j DNAT --to-destination 192.168.5.10:554
PostUp = iptables -t nat -A POSTROUTING -p tcp --dport 554 -d 192.168.5.10 -j SNAT --to-source 10.8.8.1
PostDown = iptables -t nat -D PREROUTING -p tcp -d 217.197.117.81 --dport 10500 -j DNAT --to-destination 192.168.5.10:554
PostDown = iptables -t nat -D POSTROUTING -p tcp --dport 554 -d 192.168.5.10 -j SNAT --to-source 10.8.8.1
AlexZander
() автор топика