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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: ppp0 - не могу настроить прохождение UDP  (Прочитано 138339 раз)

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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Здравствуйте.
Есть компьютер с Ubuntu, на нём запущен pppd с ключом proxyarp. К компьютеру на COM-порт подключено устройство со стеком LwIP. Соединение между ними по протоколу PPP есть. Устройство шлёт пакеты UDP, в Ubuntu их видит WireShark на интерфейсе ppp0. Но до интерфейса eno1 они не доходят. Ubuntu мной установлена в первый раз, не настраивалась. На устройство пакеты тоже не проходят.
192.168.88.199 - компьютер с Ubuntu
192.168.88.56 - устройство
192.168.88.200 - компьютер с Windows
192.168.88.1 - шлюз на Mirotik'е
Мне нужно, чтобы устройство получило взаимный доступ по UDP и TCP к компьютерам в локальной сети и к интернету.
Сейчас оно пингуется с другого компьютера, с роутера и c компьютера, куда подключено.

Изначально на устройство проходили пакеты UDP из программы PacketSender, но только с компьютера с Ubuntu. Я пригласил знакомого поковыряться в компе - перестали. В NAT'ах и фаерволах я ничего не понимаю.

« Последнее редактирование: 16 Октября 2023, 08:25:52 от caferacer »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7612
  • We do what we must
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #1 : 16 Октября 2023, 08:25:21 »
их видит WireShark на интерфейсе ppp0. Но до интерфейса eno1 они не доходят.
Пересылка пакетов между интерфейсами разрешена?

/etc/sysctl.d/любое_имя.conf
net.ipv4.ip_forward = 1
Пользователь добавил сообщение 16 Октября 2023, 08:39:58:
и будет проще без завуалирования.
подключено устройство со стеком LwIP.
Что за устройство? Кассовый терминал? Ардуино? Специфический девайс собственной разработки для COM-порта?
« Последнее редактирование: 16 Октября 2023, 08:43:20 от 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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #2 : 16 Октября 2023, 09:09:25 »
В /proc/sys/net/ipv4/ip_forward после перезагрузки стоит 1.
У меня включается через
/etc/sysctl.conf
net.ipv4.ip_forward = 1

Это нужно для электронных блоков вертолёта, чтобы они обновления прошивки забирали с сервера сами.
Похожее я раньше успешно делал с кассовыми аппаратами, но в компьютерную часть тогда не лез.
« Последнее редактирование: 16 Октября 2023, 09:16:21 от caferacer »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7612
  • We do what we must
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #3 : 16 Октября 2023, 09:16:28 »
можете пропинговать локальную сеть непосредственно с устройства?


🖥 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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #4 : 16 Октября 2023, 09:27:28 »
можете пропинговать локальную сеть непосредственно с устройства?

Это трудно, там нет явной функции послать пинг. Возможно, пингуется компьютер с Ubuntu, выдавая себя за подключенное устройство.
Когда я пингую устройство, оно пингуется, но фактической активности на линии связи с ним нет.
« Последнее редактирование: 16 Октября 2023, 09:56:58 от caferacer »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7612
  • We do what we must
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #5 : 16 Октября 2023, 09:29:05 »
ip a; ip rпоказывайте
🖥 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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #6 : 16 Октября 2023, 09:34:41 »
caferacer@caferacer-PRIME-J4005I-C:~$ sudo ip a
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: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether a8:5e:45:6a:4e:50 brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.88.199/24 brd 192.168.88.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet 192.168.88.56/24 brd 192.168.88.255 scope global secondary noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 2a03:e2c0:945:5555:83fc:22e3:5d32:c0ed/64 scope global temporary dynamic
       valid_lft 602865sec preferred_lft 84151sec
    inet6 2a03:e2c0:945:5555:7845:da85:852c:19bc/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2591795sec preferred_lft 604595sec
    inet6 fe80::e727:c5c:35f2:56e1/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp
    inet 192.168.88.199 peer 192.168.88.56/32 scope global ppp0
       valid_lft forever preferred_lft forever

caferacer@caferacer-PRIME-J4005I-C:~$ sudo ip r
default via 192.168.88.1 dev eno1 proto static metric 100
169.254.0.0/16 dev eno1 scope link metric 1000
192.168.88.0/24 dev eno1 proto kernel scope link src 192.168.88.199 metric 100
192.168.88.0/24 dev eno1 proto kernel scope link src 192.168.88.56 metric 100
192.168.88.0/24 via 192.168.88.1 dev eno1 proto static metric 100
192.168.88.56 dev ppp0 proto kernel scope link src 192.168.88.199



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

--БТР
« Последнее редактирование: 16 Октября 2023, 09:47:14 от БТР »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7612
  • We do what we must
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #7 : 16 Октября 2023, 10:03:31 »
Цитировать
inet 192.168.88.199/24 brd 192.168.88.255 scope global noprefixroute eno1
inet 192.168.88.199 peer 192.168.88.56/32 scope global ppp0
...
192.168.88.0/24 dev eno1 proto kernel scope link src 192.168.88.199 metric 100
192.168.88.0/24 dev eno1 proto kernel scope link src 192.168.88.56 metric 100
Почему один адрес на два интерфейса? Почему разные маршруты на один адрес?
Разберитесь с этим.

И не надо sudo лепить на любую команду. В этих командах несущественно, но в других можете себе проблем наделать на ровном месте. 
« Последнее редактирование: 16 Октября 2023, 10:14:32 от 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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #8 : 16 Октября 2023, 10:43:30 »
Я перевёл PPP'шное соединение в другую подсеть.
Указал 192.168.85.199:192.168.85.56 при вызове pppd.
sudo pppd debug -detach -ipv6 silent crtscts lock proxyarp lcp-echo-interval 10 noccp 192.168.88.199:192.168.88.56 /dev/ttyS0 115200 user caferacer password 12345678Теперь UDP пакеты из PacketSender'а, который на машине с Ubuntu, залетают в устройство, если их слать на адрес 192.168.85.56.
Подозреваю, что теперь надо что-то настроить, чтобы прочитать пакеты от устройства.

Кстати, pppd без sudo не выдаёт адрес устройству.
« Последнее редактирование: 16 Октября 2023, 10:45:47 от caferacer »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7612
  • We do what we must
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #9 : 16 Октября 2023, 10:53:01 »
что теперь надо что-то настроить, чтобы прочитать пакеты от устройства.
маскарадинг
🖥 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

Оффлайн caferacer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: ppp0 - не могу настроить прохождение UDP
« Ответ #10 : 16 Октября 2023, 19:23:13 »
Я отключил ufw, включил nftables, маскарадинг там включил, только от него проку нет.
Мне надо хотя бы внутри компютера с Ubuntu принять пакеты от устройства.
Это мне нужен некий форвардинг между подсетями внутри компа с Ubuntu.
Кстати, nftables в такой конфигурации стартует только после того как в системе возникает ppp0, иначе не может.
Придётся его стартовать из скрипта, который дёргает pppd, когда установит соединение.

caferacer@caferacer-PRIME-J4005I-C:~$ sudo nft list ruleset
table inet filter {
  chain input {
    type filter hook input priority filter; policy accept;
    ct state established,related counter packets 3642 bytes 3095596 accept
  }

  chain forward {
    type filter hook forward priority filter; policy accept;
  }

  chain output {
    type filter hook output priority filter; policy accept;
  }
}
table inet nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    oif "eno1" masquerade
    oif "ppp0" masquerade
  }
}

UPD Вернул устройство обратно в основную подсеть, теперь пакеты на него залетают со обоих компов в подсети - уже теплее.
У меня на компьютере с Ubuntu зачем-то был вписан дополнительный ip-адрес, равный выдаваемому железке. Отсюда кривые маршруты и пинговался сам  компьютер.


В итоге этого достаточно чтобы устройство принимало пакеты.
caferacer@caferacer-PRIME-J4005I-C:~$ sudo nft list ruleset
table inet filter {
  chain input {
    type filter hook input priority filter; policy accept;
    ct state established,related counter packets 3642 bytes 3095596 accept
  }

  chain forward {
    type filter hook forward priority filter; policy accept;
  }

  chain output {
    type filter hook output priority filter; policy accept;
  }
}
table inet nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    oif "eno1" masquerade
  }
}
Вопрос, что надо сделать, чтобы увидеть пакеты от него.

Маршруты сейчас:
caferacer@caferacer-PRIME-J4005I-C:~$ ip r
default via 192.168.88.1 dev eno1 proto static metric 100
169.254.0.0/16 dev eno1 scope link metric 1000
192.168.88.0/24 dev eno1 proto kernel scope link src 192.168.88.199 metric 100
192.168.88.0/24 via 192.168.88.1 dev eno1 proto static metric 100
192.168.88.56 dev ppp0 proto kernel scope link src 192.168.88.199

UPD Даже если маскарадинг отключить, пакеты всё равно проходят на устройство от обоих компьютеров. Так что не выполняет он свою функцию, либо до него не доходят пакеты из интерфейса ppp0.

Пользователь добавил сообщение 16 Октября 2023, 21:38:41:
Если у меня все адреса в локальной сети, зачем мне вообще маскарадинг? Маскарадинг у меня на роутере, который смотрит в интернет.

Пакет от устройства в принципе идут.
root@caferacer-PRIME-J4005I-C:/etc/ppp# tcpdump -i ppp0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes
04:07:21.488111 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:22.488111 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:23.488114 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:24.488132 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:25.487803 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:26.488103 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:27.488115 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:28.488129 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:29.488119 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:30.488118 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:31.488088 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:32.487787 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:33.488096 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:34.488089 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:07:35.487808 IP 192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:07:36.488098 IP 192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3

UPD Короче, болело у меня не в том месте. Оказалось, что в LwIP стеке отдельными настройками включается проверка и генерация контрольных сумм для пакетов всех поддерживаемых протоколов. Я это просмотрел и у меня генерация контрольных сумм была отключена. Ядро Ubuntu мои пакеты выкидывала. Теперь всё везде ходит.
root@caferacer-PRIME-J4005I-C:/etc/ppp# tcpdump -i ppp0 -v
tcpdump: listening on ppp0, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes
04:23:44.725052 IP (tos 0x0, ttl 255, id 3, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->897a)!)
    192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:23:45.725079 IP (tos 0x0, ttl 255, id 4, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8978)!)
    192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:23:46.725067 IP (tos 0x0, ttl 255, id 5, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8978)!)
    192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:23:47.725067 IP (tos 0x0, ttl 255, id 6, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8976)!)
    192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:23:48.725153 IP (tos 0x0, ttl 255, id 7, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8976)!)
    192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:23:49.725064 IP (tos 0x0, ttl 255, id 8, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8974)!)
    192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:23:50.725030 IP (tos 0x0, ttl 255, id 9, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8974)!)
    192.168.88.56.30000 > caferacer-PRIME-J4005I-C.30001: UDP, length 3
04:23:51.725046 IP (tos 0x0, ttl 255, id 10, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8972)!)
    192.168.88.56.30002 > 192.168.88.200.30001: UDP, length 3
04:23:52.725065 IP (tos 0x0, ttl 255, id 11, offset 0, flags [none], proto UDP (17), length 31, bad cksum 0 (->8972)!)
« Последнее редактирование: 26 Октября 2023, 07:47:51 от caferacer »

 

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