Я отключил 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)!)