Как направить udp пакеты в интернет
Перейти к содержимому

Как направить udp пакеты в интернет

  • автор:

Организация UDP через интернет

Добрый день. Ситуация такая: есть VPS, работающий в локальной сети и имеющий внешний статический IP. На VPS запущено серверное ПО, которое обменивается UDP-пакетами с клиентами. В локальной сети все работает нормально. 1) Возможно ли организовать обмен UDP-пакетами с клиентами из внешней сети (например, со смартфонами, подключенными к 3G, у которых IP динамический). Проброс портов из локалки во внешку не помогает, т.к. у клиентов нет статического внешнего IP. 2) Как организовать проверку доступности сервера (если это вообще возможно для UPD)?

Отслеживать
задан 7 июн 2016 в 4:24
75 1 1 серебряный знак 7 7 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

1) Внешние клиенты чаще всего в состоянии достучаться до сервера через NAT. Это мало отличается от того же TCP.

2) Проверка доступности сервера клиентом осуществляется крайне просто — отвечает — значит, доступен.

3) Учтите, что UDP не гарантирует, что отправленные пакеты дойдут, и при этом дойдут в правильном порядке. Есть подозрение, что вы изобретаете TCP.

Отслеживать
ответ дан 7 июн 2016 в 4:51
22.3k 2 2 золотых знака 34 34 серебряных знака 53 53 бронзовых знака

1) Да, из внешки в локалку нет проблема. А если нужно наоборот, передавать пакет из локалки во внешку? Как NAT узнает, куда его отправлять:

Как отправить TCP или UDP пакет в Linux?

Как отправить TCP или UDP пакет в Linux?

Часто при тестировании каких-либо приложений может возникнуть необходимость проверить, доходят ли определенные пакеты по udp/tcp до адресата, например, при проверке функционирования фаервола или же проверки работоспособности проброса портов. В данной статье будет описан простой способ это сделать с помощью командой строки.

Как отправить TCP пакет на определенный ip:порт в Linux

Для отправки tcp пакета на определенный IP адрес и определенный порт, можно воспользоваться следующей командой:

echo -n "test" >/dev/tcp/1.2.3.4/12345

1.2.3.4 — это IP адрес, на который мы будем посылать наш tcp пакет.
12345 — это порт, на который мы будем посылать наш tcp пакет Альтернативным вариантом может быть использование утилиты nmap:

sudo nmap -sT -p 12345 1.2.3.4

Как отправить UDP пакет на определенный ip:порт в Linux

Для отправки udp пакета на определенный IP адрес и определенный порт, можно воспользоваться следующей командой:

echo -n "test" >/dev/udp/1.2.3.4/12345

1.2.3.4 — это IP адрес, на который мы будем посылать наш udp пакет.
12345 — это порт, на который мы будем посылать наш udp пакет Альтернативным вариантом может быть использование утилиты nmap:

sudo nmap -sU -p 12345 1.2.3.4

Проверить получение tcp и udp пакетов на определенный порт на удаленном компьютере можно с помощью различных утилит, например, с помощью tcpdump.

tcpdump -i eth0 port 12345 -vvv -X

Как отправить UDP пакет по петле на одной машине?

Имеется комп с двумя сетевыми картами, соединяем их кабелем, получаем петлю. Надо толкнуть UDP пакет из одной сетевой карты и в другой сетевой его поймать. Проверить что провода живые. Наличие running на interface не очень интересует надо чтобы по проводам прошелся пакет.

Как такое сделать ?

Перемещено hobbit из general

ri_mik
27.05.22 21:21:58 MSK

  • Ответить на это сообщение
  • Ссылка

Выдай адреса сетевым картам и пингуй из одной в другую.

dnhpbqt973
( 27.05.22 21:26:32 MSK )

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

kto_tama ★★★★★
( 27.05.22 21:27:42 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от dnhpbqt973 27.05.22 21:26:32 MSK

Что надо сделать чтобы пошел ping? смотрел wiresark-ом ping не идет так как оба interface на одной машине, он ничего не отправляет.

ri_mik
( 27.05.22 21:53:31 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от kto_tama 27.05.22 21:27:42 MSK

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

ri_mik
( 27.05.22 21:55:22 MSK ) автор топика

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от ri_mik 27.05.22 21:53:31 MSK

ping -I %адрес одной сетевухи% %адрес другой сетевухи% ??

-I interface
interface is either an address, an interface name or a VRF name. If interface is an address, it sets source address to specified interface address. If interface is an interface name, it sets source interface to specified interface. If interface is a VRF name, each packet is routed using the corresponding routing table; in this case, the -I option can be repeated to specify a source address. NOTE: For IPv6, when doing ping to a link-local scope address, link specification (by the ‘%’-notation in destination, or by this option) can be used but it is no longer required.

плюс
-r
Bypass the normal routing tables and send directly to a host on an attached interface. If the host is not on a directly-attached network, an error is returned. This option can be used to ping a local host through an interface that has no route through it provided the option -I is also used.

да и вообще «ман пинг» — там много умного….

pfg ★★★★★
( 27.05.22 22:06:01 MSK )
Последнее исправление: pfg 27.05.22 22:08:37 MSK (всего исправлений: 2)

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Как передавать UDP пакеты через определенный интерфейс?

На пк есть три интерфейса eth0, eth1, eth2. Каждый интерфейс подключен к оборудованию передачи данных.
Каждый интерфейс со своим статическим адресом, у eth0 к примеру 192.168.255.200/16, eth1 2.255.1.2/30, eth2 2.255.2.2/30. С последними двумя интерфейсами пробовала по разному, пока с роутингом у меня проблемы. Попытки жестко задать маршрут тоже не увенчались успехом.
Стоит задача проверки передачи пакетов UDP через оборудование. То есть пакет должен уходить в eth1, «пройти» через оборудование и попасть в eth2. Проблема в том, что система не отправляет пакеты в интерфейс и далее в оборудование, а сразу «получает» их на eth2.
ПО пишу на C++ под Astra Linux 1.5.
Каким образом принудить систему отправлять пакеты в нужный интейрфейс? Каким способом в общем возможно решить поставленную задачу?

  • Вопрос задан более трёх лет назад
  • 916 просмотров

2 комментария

Оценить 2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *