1 (edytowany przez Liroy 2026-03-28 15:40:30)

Temat: Jedna reguła zamiast kilku

Wiatm
Czy jest sposób aby w openwrt odwzorować dla czystości i szybkości firewalla (coś takiego jak jest w opnsense floating lub stworzenie grupy LANy) aby nie pisać kilku reguły DNAT dla portu 123 dla każdego interfejsu osobno co generuje kilkanaście takich samych reguł tylko napisać jedną regułę w której są wszystkie interfejsy lan oczywiście bez wan?

2

Odp: Jedna reguła zamiast kilku

Robisz lany w bridge i regułę na bridge? Chyba że o coś innego ci chodzi. Generalnie nie na czegoś takiego jak grupowanie interfejsów, musisz powtarzać dla każdego osobno jeżeli są one osobnymi bytami  - chodzi oczywiście o zapis w uci, gdzie podaje się logiczne interfejsy.

Bo samo nfstables takim mechanizmem dysponuje i OpenWrt go używa - przez define. Zobacz jako przykład https://wiki.nftables.org/wiki-nftables … _variables

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez Liroy 2026-03-28 15:50:12)

Odp: Jedna reguła zamiast kilku

Ja specjalnie wszystko wyciągnąłem z br-lan aby mieć pełną izolacje na każdej warstwie każde urządzenie/klient jest w osobnym interfejsie z osobny zakresem i osobnej strefie na wifi/radiach też mam włączona izolacje aby w sterowniku zapewnić pełna izolacje już od L1 bo chce aby ruter zarazem był takim lepszym firewallem zarazem a nie domyślne jak jest wszystko w br-lan razem, Dziękuje za linka sprawdzę

4

Odp: Jedna reguła zamiast kilku

Ok, ty chcesz coś jak listy adresów w mikrotiku - robisz listę i regułę korzystającą z listy. Samo uci takich mechanizmów nie ma, nftables  tak - jak wyżej w linku.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez Liroy 2026-03-28 16:12:45)

Odp: Jedna reguła zamiast kilku

Czyli takie coś nie zadziała w uci? musze zejść do nftables tam to czarna magia całkiem dla mnie zero graficznego gui żeby to zrozumieć lepiej no nic trzeba sie uczyć dalej openwrt.

uci add firewall redirect
uci set firewall.@redirect[-1].name='Redirect-NTP-Global'
uci set firewall.@redirect[-1].src='*'     <- gwiazdka oznacza wszystkie interfejsy w tym wan dlatego
uci set firewall.@redirect[-1].src_ip='192.168.0.0/16'     <- zrobiłbym zakres grupy moich lanów
uci set firewall.@redirect[-1].src_dport='123'
uci set firewall.@redirect[-1].dest_ip='192.168.1.1'
uci set firewall.@redirect[-1].dest_port='123'
uci set firewall.@redirect[-1].proto='udp'
uci set firewall.@redirect[-1].target='DNAT'
uci commit firewall
/etc/init.d/firewall restart

myślałem ze tak globalnie jedną regułą przekieruje wszystkie lany na zegar ntp w ruterze

6

Odp: Jedna reguła zamiast kilku

To nie grupa a zwykła klasa adresowa. Tak możesz zrobić. Luci też taki zapis dopuszcza.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Jedna reguła zamiast kilku

tak uprościłem to ale wiadomo o co chodzi efekt będzie ten sam nikt inny nie może mieć takich zakresów więc bezpieczeństwo tez zostało by zachowane

8

Odp: Jedna reguła zamiast kilku

Ale klasa adresowa, nie możesz podać kilka różnych adresów.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9 (edytowany przez Liroy 2026-03-28 17:23:16)

Odp: Jedna reguła zamiast kilku

Poproszę wyjaśni co masz namyśli? bo zabrzmiało to jak ostrzeżenie lub jakieś dodatkowa wiedza która mi umyka.

Przecież chyba można dać nawet takie coś:
uci set firewall.@redirect[-1].src_ip='192.0.0.0/24 172.16.0.0/12 10.0.0.0/8'

i tak dalej czyli standardowe zakresy prywatne wedle RFC1918? i wydaje mi się ze powinno to być bezpieczne skoro przekierowuje ten ruch na adres rutera 192.168.1.1? i wycieku też się pozbędę skoro src='*' obejmuje wszystkie interfejsy w tym wan ale na wan sa inne zakresy adresów publiczne lub cgnat etc.? W zasadzie to chodzi o to ze nie można robić grup LAN i definiować jedną reguła wszystkich lanów a nieszczęsny src='*' z gwiazdką obejmuje też wan i dlatego wykombinowałem ze dodam klasę adresowa do ocięcia wan chyba dobrze myślę?

10

Odp: Jedna reguła zamiast kilku

Nie możesz dać czegoś takiego. Nie możesz też dać uci set firewall.@redirect[-1].src_ip='192.0.1.2 192.0.1.10 172.16.0.1 10.0.0.8'

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez Liroy 2026-03-28 17:34:56)

Odp: Jedna reguła zamiast kilku

ok teraz rozumiem dziękuję za wiedzę czyli mogę jedynie dać jedną maskę (pisząc maskę mam na myśli /24 /23 /16/ 8 itd) podsieci w których sa moje lany (strefy) jak tu:
uci set firewall.@redirect[-1].src_ip='192.168.0.0/16' 
ale nie mogę używać spacji i kolejnych zakresów w tym samym

12

Odp: Jedna reguła zamiast kilku

Tak, akurat w tej opcji nie możesz tego robić, ma być adres lub klasa adresowa, ale nie kilka różnych klas czy kilka różnych adresów.

Zresztą - nawet jak byś tak wpisał to firewall przy uruchomieniu napisał by że to nie jest właściwy zapis dla tej opcji.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13 (edytowany przez Liroy 2026-03-28 20:39:32)

Odp: Jedna reguła zamiast kilku

Niestety mam komunikat:
must not have source '*' for dnat target
- gwiazdka w rules działa, ale nie działa w redirect to sie tyle dowiedziałem w praktyce.
Teraz nie wiem jakie mam możliwości w uci chyba sie nie da inaczej zrobić tego jedna regułą?
List też nie da się zrobić by dodać do jednej reguły kilka uci add_list firewall.@redirect[-1].src=
Co mi pozostaje?

14

Odp: Jedna reguła zamiast kilku

Zrób kilka redirectów.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez Liroy 2026-03-28 20:50:28)

Odp: Jedna reguła zamiast kilku

ale właśnie tego chciałem uniknąć od początku i zoptymalizować wszystko do jednej reguły skoro jest tyle wspólnych mianowników a jest tylko jedna różnica w tej regule a im więcej reguł tym firewall zwalnia niestety

w opensense jest takie coś co nazywa się floating lub tworzysz grupę interfejsów lan (jako jeden interfejs ale cały czas separowany po za tym regułami i wspólnymi) i wtedy jedną regułą możesz określać takie rzeczy tylko dla wybranych lanów nie dość ze jest to szybsze bo jedna reguła to jeszcze bardziej czyste do zarzadzania

16

Odp: Jedna reguła zamiast kilku

Sorry, ale co zrobisz - albo robisz kilka reguł i bazujesz na tym co można zrobić w uci albo piszesz samodzielnie firewall przez nftables albo nawet starsze iptables. Innego wyjścia nie masz, więc nie ma co dumać, wybierz jeden ze sposobów i go zrealizuj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17 (edytowany przez Liroy 2026-03-28 22:18:43)

Odp: Jedna reguła zamiast kilku

Niestety ograniczenia bezpieczeństwa UCI tego przeskoczyć nie pozwolą na to wychodzi.
Ale z drugiej strony powinny być takie rzeczy dostępne dla tych podstawowych portów jak 53,123 bo myślę ze wiele osób to robi i przekierowuje na ruter te porty jednak nie będę tracił na to dumanie czasu system takie ma ograniczenia ja tez rozbiłem br-lan tylko dla fizycznych portów, wiec po części to moja kombinacja ma na to wpływ, bo nie mam standardowo.

Ale do rzeczy
Czy to zadziała i wystarczy bo tu w nftables boje się 100% więcej o błąd niż w uci

iifname { "br-lan", "phy0-ap*", "phy1-ap*" } udp dport 123 counter dnat ip to 192.168.1.1:123

Sprawdziłem niby działa nie sprawdzałem jeszcze jak to wygląda od strony wan bo nie mam dzisiaj dostępu do skanowania Nmap z drugiego PC w innej sieci z tak samo publicznym IP. Chyba ze podłączę "między" drugi ruter i zacznę patrzeć na logi... ale mniejsza o to bo odchodzę od tematu.

Teraz jeszcze się zastanawiam jak to dodać na stałe do listy bez dotykania /etc/rc.local  lub /etc/config/firewall bo myślę ze tam nie ma sensu tego wklejać i to nie miejsce na to. Tylko lepiej było by wstrzyknąć to bezpośrednio do tabeli na stałe, dobrze myślę? Czy OpenWrt ma jakiś katalog lub sposób by wstrzyknąć to na starcie firewalla na stałe do tabeli?

18

Odp: Jedna reguła zamiast kilku

znalazłem gdzie to wrzucić mam już na dzisiaj dość dokumentacji ale finalnie wyglądało by to tak

mkdir -p /usr/share/nftables.d/chain-pre/dstnat

cat <<EOF > /usr/share/nftables.d/chain-pre/dstnat/10-global-nat.nft
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } udp dport 123 counter dnat ip to 192.168.1.1:123
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } udp dport 53 counter dnat ip to 192.168.1.1:53
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } tcp dport 53 counter dnat ip to 192.168.1.1:53
EOF

/etc/init.d/firewall restart

Bardzo proszę o sprawdzenie czy wszystko się zgadza i nie ominie mi to firewalla oraz jest bezpieczne

19

Odp: Jedna reguła zamiast kilku

Chyba może być.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20 (edytowany przez Liroy 2026-03-31 07:12:16)

Odp: Jedna reguła zamiast kilku

To była jazda z tym przy pełnej izolacji stref ale dla potomnych napisze jak ktoś by szukał rozwiązania. Ntp mimo ze widzimy przez netstat -tunlp ze nasłuchuje na wszystkim obojętnie co sie da w:  uci set system.ntp.interface='lan' ma blokadę i nie odpowie jeśli nie zrobimy uci del system.ntp.interface (co na marginesie jest bez sensu bo nie ma "drugiej zapory" na samym ntp dla bezpieczeństwa ale tak jest) wtedy ntp opowiada na każdy interfejs. Ale to nie koniec mogą sie zdarzyć grzeczne urządzenia które słuchają dhcp 42, 192.168.1.1 (to samo tyczy sie dns) lub używają adresu bramy dlatego aby uniknąć pętli trzeba dodać taka regułę:

cat <<EOF > /usr/share/nftables.d/chain-post/dstnat/10-global-nat.nft
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } ip daddr != 192.168.0.0/16 udp dport 53 counter dnat ip to 192.168.1.1:53
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } ip daddr != 192.168.0.0/16 tcp dport 53 counter dnat ip to 192.168.1.1:53
iifname { "br-lan", "phy0-ap*", "phy1-ap*" } ip daddr != 192.168.0.0/16 udp dport 123 counter dnat ip to 192.168.1.1:123
EOF

oczywiście jeśli interfejsy mamy w tym zakresie i koniecznie musi być wszystko osobno z dwukropkiem port bo nie da sie zrobić tak dla optymalizacji iifname { "br-lan", "phy0-ap*", "phy1-ap*" } ip daddr != 192.168.0.0/16 udp dport { 53, 123 } counter dnat ip to 192.168.1.1 po czasie to też powoduje problemy już nie dochodziłem co mu nie gra z tym ale prawdopodobnie przez ten dwukropek i port na końcu dlatego lepiej to rozbić na 3 osobne jak podałem wyżej to jest jedyna opcja a ruch na porcie wan zablokować dla 123 tylko dla rutera i tylko na wyjście oczywiście nat z contract z stanowością firewalla ogranie powrót bez problemu. To tak w wielkim skrócie o wiele łatwiej i bezpieczniej by było gdyby można przypisać to nasłuchiwanie i opowiedz na konkretny ip rutera lub lokalny 127.0.0.1 (jak jest w opnsense usługi wszystkie działają lokalnie na 127.0.0.1) wtedy zrobił bym mała dziurkę dla ntp do i z ruterza a tu takie blokady niespodziewane i zmuszanie do nasłuchanie na każdym interfejsie przy izolacji stref i rozbiciu na wiele ip/interfejsów podstawowej konfiguracji. A i wplatanie reguł przez nftables najlepiej robić w chain-post tak doszedłem do wniosku po dokumentacji bo będzie sprawiać najmniej problemów wink