Форум программистов, компьютерный форум, киберфорум
Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17

Не пробрасываются UDP порты в iptables

29.03.2018, 19:52. Показов 6104. Ответов 18

Студворк — интернет-сервис помощи студентам
Здравствуйте. Не получается пробросить порт Iptables:
начну из далека:
Сервер на VDS-ке виртуализация KVM.
Операционная система: Ubuntu 16.04
версия ядра: 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Фаервол: csf.
Задача:
Имеется soft ether vpn server на данном сервере.
Secure nat отключён.
Через оболочку soft ether vpn manager создан виртуальный адаптер Tuntabik.
Используется встроенный DHCP сервер soft ether-а.
Нужно пробросить и TCP и UDP пакеты через внешний адаптер ens3 на конкретный локальный адрес адаптера Tuntabik.
Нужно это для того, чтоб я со своего компьютера, сидя за NATом, подключался к VPN серверу через их же фирменный soft ether vpn клиент, и мог пробрасывать во внешний интернет открытые порты и включать какие-либо сервера. Игровые, http да любые вообщем.
Что сделано:
В фаерволе в файле csf.conf открыты соответствующие порты.
В csfpre.sh прописан скрипт:
Code
1
2
3
4
5
6
#!/bin/bash
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.200.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens3 -j MASQUERADE
# iptables -t nat -A POSTROUTING -j SNAT --to-source*193.124.191.232
Далее был создан скрипт portmapping.sh со следующим кодом:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
EXT_IP="193.124.191.232" # Он всё равно чаще всего один и тот же.
INT_IP="193.124.191.232" # См. выше.
EXT_IF=ens3 # Внешний и внутренний интерфейсы.
INT_IF=tap_tuntabik # Для шлюза они вряд ли изменятся, поэтому можно прописать вручную.
LAN_IP=$1   # Локальный адрес сервера передаём скрипту первым параметром,
SRV_PORT=$2 # а тип сервера, в смысле какой порт (или набор портов) открывать - вторым
proto=$3 # указываем протокол.
 
# Здесь желательно сделать проверку ввода данных, потому что операции достаточно серьёзные.
 
iptables -t nat -A PREROUTING --dst $EXT_IP -p $proto --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
iptables -t nat -A POSTROUTING --dst $LAN_IP -p $proto --dport $SRV_PORT -j SNAT --to-source $INT_IP
iptables -t nat -A OUTPUT --dst $EXT_IP -p $proto --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p $proto -m $proto --dport $SRV_PORT -j ACCEPT
После чего скрипт запускается так: ./portmapping.sh локальныйайпи порт протокол
При этом tcp пакеты идут, а udp нет!
Они разрываются по таймауту.
Покажу правила iptables:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
iptables -L -t nat -v -n
 Chain PREROUTING (policy ACCEPT 26439 packets, 1580K bytes)                                                                  
  pkts bytes target     prot opt in     out     source               destination                                              
     2    96 DNAT       tcp  --  *      *       0.0.0.0/0            193.124.191.232      tcp dpt:55555 to:192.168.200.5      
     0     0 DNAT       udp  --  *      *       0.0.0.0/0            193.124.191.232      udp dpt:55555 to:192.168.200.5      
                                                                                                                              
 Chain INPUT (policy ACCEPT 2355 packets, 122K bytes)                                                                         
  pkts bytes target     prot opt in     out     source               destination                                              
                                                                                                                              
 Chain OUTPUT (policy ACCEPT 3876 packets, 316K bytes)                                                                        
  pkts bytes target     prot opt in     out     source               destination                                              
     0     0 DNAT       tcp  --  *      *       0.0.0.0/0            193.124.191.232      tcp dpt:55555 to:192.168.200.5      
     0     0 DNAT       udp  --  *      *       0.0.0.0/0            193.124.191.232      udp dpt:55555 to:192.168.200.5      
                                                                                                                              
 Chain POSTROUTING (policy ACCEPT 3865 packets, 315K bytes)                                                                   
  pkts bytes target     prot opt in     out     source               destination                                              
    28  2091 MASQUERADE  all  --  *      ens3    192.168.200.0/24     0.0.0.0/0                                               
     2    96 SNAT       tcp  --  *      *       0.0.0.0/0            192.168.200.5        tcp dpt:55555 to:193.124.191.232    
     0     0 SNAT       udp  --  *      *       0.0.0.0/0            192.168.200.5        udp dpt:55555 to:193.124.191.232    
 
iptables -L FORWARD -v -n
 Chain FORWARD (policy DROP 0 packets, 0 bytes)                                                                               
  pkts bytes target     prot opt in     out     source               destination                                              
     0     0 ACCEPT     udp  --  ens3   tap_tuntabik  0.0.0.0/0            192.168.200.5        udp dpt:55555                 
     4   196 ACCEPT     tcp  --  ens3   tap_tuntabik  0.0.0.0/0            192.168.200.5        tcp dpt:55555                 
   422  243K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED           
    28  2091 ACCEPT     all  --  *      *       192.168.200.0/24     0.0.0.0/0                                                
     0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
Вот и вся информация на сегодняшний день.
P. S. в виртуальной локальной сети VPN-ки, все пакеты проходят нормально.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2018, 19:52
Ответы с готовыми решениями:

DIR 632 не пробрасываются udp порты
Всем ку. Имеется роутер dlink dir-632 с прошивкой 2.6.1. Пробрасываю через виртуальные серверы tcp и udp порты. tcp порты 3389 и 8000...

Не пробрасываются порты
В офисе необходимо открыть порты чтобы сделать веб наблюдение, в модеме "zyxel p-669ru ee" выбрал NAT -> SUA -> edit >...

Не пробрасываются порты
Помогите, не открываются порты (в т.ч порт 80) Пользуюсь NO-IP, захожу по нужному адресу, а там веб-интерфейс роутера:help:

18
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
29.03.2018, 21:40
а можно все еще раз, но только кратко? чтобы было понятно что там есть, как работает и как должно работать? для такой простой задачи что-то многовато наворочено.
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
29.03.2018, 21:54  [ТС]
Нужно пробросить порты из локалки внутри VPN подключения на внешний айпи. Чтобы юзеры с внешнего интернета могли подключаться к портам локальной сети.
Скажем. Петя создал веб сервер. Он подключился к VPN и его локальный айпи: 192.168.200.10
Внешние пользователи, не заходя на VPN, должны подключиться к внешнему айпи сервера и попасть на его веб сервер расположенный по его внутреннему айпи адресу 192.168.200.10.
Тоесть грубо говоря: VPN это некий роутер и мы на нём делаем port forwarding.
VPN реализация нужна для того, чтоб пробрасывать сервер за провайдерским NATом.
При этом веб сервер пробрасывается без проблем, так как он идёт по протоколу tcp.
Если же взять сервер скажем Teamtalk, то он не пробросится, хоть и правило в Iptablesе с протоколом udp есть.
Вот почему udp не пробрасывается и хочется выяснить.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
29.03.2018, 22:18
а если миша создал? поржал.

вопросы:
1. что такое soft ether vpn и зачем он нужен. почему не тривиальные pptp l2tp ovpn. я к тому, что можно ли быть уверенным, что в этом софтетере нет какие-то настроек, которые не потыканы как положено?
2. чтобы было просто и все работало без проблем, могу в качестве небольшого отступления от темы посоветовать взять еще 1 ip и NETMAPнуть его на локальный ip
3. не совсем понятно зачем коннтрачить в форварде, если цель – проброс трафика. его набо либо пробрасывать весь либо нет, задачи фильтрации ложатся на «проброшенный» хост.
4. у вас там и tun и tap словечки я заметил. так что там – tun или tap в конце концов?
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
29.03.2018, 22:34  [ТС]
1. soft ether легче настраивать, чем всякие openvpn.
По второму вопросу. Не понял, что вы имели ввиду?
3. Без forwardа с интерфейса на интерфейс, проброс через NAT тоесть NAT правила не будут работать.
4. Tap интерфейс я имел ввиду. Он называется tap_tuntabik. Был инициирован через настройку в конфигураторе soft ether vpn.
Акцентирую внимание на том, что не проходит именно udp трафик.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
29.03.2018, 23:05
немного по теме
1. посмотрите, что в /proc/sys/net/ipv4/conf/$vpn_iface/rp_filter влепите туда на всякий случай 2 если там не 2
2. мне не совсем ясны манипуляции в форварде. поясните, что задумывалось и какие именно пакеты со --state NEW у вас там ACCEPT а какие дропаются и почему?
3. а вообще вполне достаточно следующего (я опустил порты и протоколы):
Code
1
2
iptables -t nat -A POSTROUTING -s $intip -o $out_iface -j SNAT --to-source $extip 
iptables -t nat -A PREROUTING -d $extip -j DNAT --to-destination $intip
… если не учитывать сюрпризов в форварде

Добавлено через 6 минут
Цитата Сообщение от Гриша93 Посмотреть сообщение
По второму вопросу. Не понял, что вы имели ввиду?
забьем пока
Цитата Сообщение от Гриша93 Посмотреть сообщение
Без forwardа
у меня километр всяческих пробросов на разных серверах, я немного в теме. вопрос в том, что мне непонятны Ваши действия там. Возможно, они не совсем понятны и Вам. И, для простоты, там достаточно ACCEPT, фильтровать смысла я не вижу исходя из задачи.
Цитата Сообщение от Гриша93 Посмотреть сообщение
Tap интерфейс
для ваших целей и действий, ip роутинга по факту, tun подходит в самый раз. а с тапом логичнее делать мосты.

Добавлено через 9 минут
Цитата Сообщение от Гриша93 Посмотреть сообщение
легче настраивать
почитал рекламу на оффсайте, похоже это очередной комбайн для хомячков в стиле «нажми пару кнопок чтобы работало», а вот как работает на самом деле, разобраться гораздо сложнее.

Of course, traditional IP-routing L3 based VPN can be built by SoftEther VPN. может для упрощения решения проблемы так его и настроите? по идее должен получиться простой банальный tun без сюрпризов.

Добавлено через 1 минуту
что-то не заметил сразу, а зачем DNAT в OUTPUT?
0
0 / 0 / 0
Регистрация: 29.03.2018
Сообщений: 2
29.03.2018, 23:16
Нужен именно L2 VPN, чтобы внутри него организовать полноценную локальную сеть.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
29.03.2018, 23:57
Цитата Сообщение от Истраживач Посмотреть сообщение
полноценную локальную сеть
пробрасывая ip порты?
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
30.03.2018, 08:36  [ТС]
И, для простоты, там достаточно ACCEPT, фильтровать смысла я не вижу исходя из задачи.
Спасибо, попробую пожже.
dnat в output нужен только для того, чтоб по внешнему айпи из VPN тоже был доступ.
пробрасывая ip порты?
Нужна и полноценная локалка в VPN, и проброс определённых портов во внешку.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
30.03.2018, 09:40
Цитата Сообщение от Гриша93 Посмотреть сообщение
dnat в output нужен только для того, чтоб по внешнему айпи из VPN тоже был доступ.
поясните подробнее. через OUTPUT проходят только сгенерированные локально пакеты, а для подсети (vpn?) у Вас там уже есть маскарадинг.

Цитата Сообщение от Гриша93 Посмотреть сообщение
Нужна и полноценная локалка в VPN
что ж Вы инфу по частям выдаете? чего еще мы не знаем?
0
0 / 0 / 0
Регистрация: 29.03.2018
Сообщений: 2
30.03.2018, 14:50
Нужна полноценная локалка в VPN и проброс портов из локалки на внешний IP сервера. В общем то, почти все это работает, внутри локалки спокойно ходит и TCP, и UDP трафик. Проброс тоже работает, но почему-то только для TCP. UDP никак не пробрасывается. Вот и все.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
30.03.2018, 15:45
Я могу, понимая задачу, сказать, как это нужно реализовать. только задачу я должен понимать полностью. Ваше описание неполно и реализация, на мой взгляд, ей местами противоречит. Утомительно каждый раз спрашивать – «объясните, что Вы хотите сделать в итоге», логично чтобы Вы позаботились о том, чтобы у меня создалось полная и непротиворечивая картина.

раз нужна локалка в впн – стало быть, впн подключение не является шлюзом по умолчанию для клиентов, так? тогда зачем маскарадинг у Вас? проясните этот момент.

На самом деле Вы огласили 2 задачи и реализовывать и решать их надо отдельно. Для полноценной локальной сети у Вас есть tap адаптер. В простейшем случае конфигурировать вне соответствующего сервиса и не надо ничего – через впн ходит только трафик между узлами подсети и более ничего, ip-роутинг тут зачем? Для проброса портов (что с технической точки зрения никак не пересекается с какой-то там локальной сетью) как отдельной задачи логично (и, таки проще в итоге) иметь второе подключение (tun). Если эти задачи логически связаны, то совсем не со стороны сервера, а со стороны клиентских хостов – там и реализовывать эту логику, не надо тащить это на сервер.

что надо для второй задачи:
1. чтобы «были интернеты» через подключение, делаете маскарадинг (хотя если это VDS, то там ip не меняется, интерфейс тоже, тогда -t nat -A POSTROUTING -s $VPN_NET -o $OINTERFACE -j SNAT --to-source $EXTIP)
2. для проброса я уже писал, повторю:
-t nat -A POSTROUTING -s $INTIP -o $OINTERFACE -j SNAT --to-source $EXTIP
-t nat -A PREROUTING -d $EXTIP -j DNAT --to-destination $INTIP

порты/протоколы добавляете по вкусу
3. как у вас настроено rpf? sysctl -a | grep '\.rp_filter' что показывает?
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
30.03.2018, 16:23  [ТС]
1. нужна виртуальная локалка на VPN. Она рабботает.
2. нужен интернет через VPN-овскую локалку. Он тоже работает.
3. Нужен проброс определённых портов из виртуальной локалки в интернет и обратно, что тоже работает, но кроме udp!
Вот что показывает ваша команда:
Code
1
2
3
4
5
6
7
8
9
net.ipv4.conf.all.rp_filter = 1                                                                                              
 net.ipv4.conf.default.rp_filter = 1                                                                                          
 net.ipv4.conf.ens3.rp_filter = 1                                                                                             
 net.ipv4.conf.lo.rp_filter = 0                                                                                               
 net.ipv4.conf.tap_tuntabik.rp_filter = 1                                                                                     
 sysctl: reading key "net.ipv6.conf.all.stable_secret"                                                                        
 sysctl: reading key "net.ipv6.conf.default.stable_secret"                                                                    
 sysctl: reading key "net.ipv6.conf.ens3.stable_secret"                                                                       
 sysctl: reading key "net.ipv6.conf.lo.stable_secret"
P. S. Я новичок в linuxах по этому возможно не могу ясно сформулировать задачу.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
30.03.2018, 17:46
Гриша93, по-моему, Вы все сами знаете и Вам помощь не нужна :-)

No offense, но с моей точки зрения, у Вас неправильный подход и неправильная реализация, плюс Вы плоховато понимаете как пакеты проходят через ипстолы. Я знаю, как реализовать задачу, и это просто, но Вы хотите по-своему. Ок, тогда мне нечего сказать кроме того, что я уже написал.
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
30.03.2018, 17:52  [ТС]
А как по вашему реализовать данную задачу?
Мы действительно не очень хорошо в линуксе шарим и согласны с этим.
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
30.03.2018, 18:31
Цитата Сообщение от Гриша93 Посмотреть сообщение
А как по вашему реализовать данную задачу?
повторю еще раз, но последний это 2 (две) задачи. разных. не надо мешать в кучу, тем более что Вы уже смешали и наворотили невесть чего и мне лично не все понятно как это работает.

для первой (lan через vpn) используйте свое tap подключение (все это должно работать искаропки при правильной настройке сервера)

для второй, проброса (! я например не могу быть уверенным, что при подключении без default gateway в виндовсах будет работать проброс, предполагаю что второе подключение будет таки с defgw):
Code
1
2
3
-t nat -A POSTROUTING -s $VPN_NET -o $OINTERFACE -j SNAT --to-source $EXTIP
-t nat -A POSTROUTING -s $INTIP -o $OINTERFACE -j SNAT --to-source $EXTIP
-t nat -A PREROUTING -d $EXTIP -j DNAT --to-destination $INTIP
порты/протоколы в снат/днат добавляете как надо. все. будет работать.
а, ну если руки чешутся в форвард чего то напихать, то схема примерно такая:
Code
1
2
3
4
-A FORWARD -m conntrack --ctstate INVALID -j DROP                                                                                                                                                                                                
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  
-A FORWARD -j check-vpn-fwd  # в check-vpn-fwd фильтруете то, что точно надо убить                                                                                                                                                                                                                     
-A FORWARD -j ACCEPT
здесь черпайте вдохновение
0
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
30.03.2018, 20:09  [ТС]
И так, всё заработало!
Вот что я убрал из скрипта Portmapping:
Code
1
2
3
4
# iptables -t nat -A OUTPUT --dst $EXT_IP -p $proto --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
# и самое главное, из-за чего был весь сырбор:
# iptables -t nat -A POSTROUTING --dst $LAN_IP -p $proto --dport $SRV_PORT -j SNAT --to-source $INT_IP
# soft ether vpn умеет делать свой шлюз. По этому необходимость в данном postroutingе небыло. Вернее он только мешал.
Вообщем. Всему виной автоматический шлюз soft etherа, который мы не учли.
Благодарю за содержательную дискуссию
0
 Аватар для blz
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
30.03.2018, 20:27
ну и то хлеб
1
1 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 17
14.10.2018, 19:29  [ТС]
Здравствуйте. На этом форуме мы, к сожалению, так и не смогли найти удовлетворяющего нашим запросам решения данной проблемы. По этому написали вот такой вот может костыльный, а может и нет сетевой конфиг.
https://github.com/a11cf0/VPNC... ADME_RU.md
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2018, 19:29
Помогаю со студенческими работами здесь

Не пробрасываются порты
Приветствую всех. Появилась такая проблема: С недавних пор роутер перестал воспринимать проброс портов. Сразу скажу, нужно открыть...

Почему не пробрасываются порты
Есть хостовая машина, у ней следующие настройки сети в хостовой машине, развёрнута виртуалка, вот её настройки сети (ip адрес ставил...

iptables: закрыть все порты, кроме 25, 80, 443
Перепробовал множество вариаций, начинал с: iptables -P INPUT DROP

UDP порты
При установке соединения TCP порт указывает только клиент и открыт он должен быть только у сервера, но при отправке UDP датаграмм порт...

UDP и закрытые порты
Здравствуйте, я пишу небольшую сетевую игру. Для работы по сети использую SFML, но я думаю что вопрос к SFML относится косвенно, скорее это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru