Mikrotik - brak dostępu do routera z VLAN-a

Dobry wieczór.

Zabrałem się w końcu do roszad w mojej sieci domowej ku chwalę nauki. Mam router Mikrotik-a i chciałem stworzyć odseparowaną sieć na jednym porcie oraz Wi-Fi.

Router był na domyślnej konfiguracji Mikrotika. Zmieniłem sobie Master port na None dla Interfejsu Ether3. Stworzyłem Wirtualny AP i zbridgowałem je razem. Dla nowego bridga stworzyłem i skonfigurowałem nowy serwer DHCP z inną adresacją, dodałem adres routera na nowej adresacji.

Potem przeszedłem do NAT w firewallu, stworzyłem:
Chain: srcnat, Src. Address: adresacja z nowego bridga, Out. Interface Ether1 (brama sieciowa) Action: Masquerade (przynam, że nie do końca ogarniam co robi ta reguła - znalazłem ją w jednym z poradników)

Potem dwie reguły na Chain: Forward Action: Drop z jednej sieci do drugiej i odwrotnie.

Generalnie praktycznie wszystko mi działa jak chciałem - sieci są odseparowane, pingi nie idą, nie da się udostępnić folderów ani podłączyć się przez zdalny pulpit. Problem mam następujący: z poziomu tej wydzielonej sieci nie mogę się podłączyć do routera. Wszystko działa, Winbox go widzi, ale nie da się podłączyć ani po IP ani po adresie MAC. Sprawdzałem z wyłączonymi utworzonymi przez siebie regułami w firewallu, ale nadal nie można się połączyć. Co może być przyczyną?

Maskaradę zawsze ustawia się na out-interface. Gdy ustawisz maskardę dla Twojego WANu, to nie musisz robić maskarady dla każdej podsieci.

Sprawdź czy nie masz w ustawieniach usług ograniczenia do IP, które może łączyć się przez Winbox. Ponadto musisz łączyć się na adres bramy dla podsieci, w której jesteś, jeśli separujesz je na firewallu. Gdy nie masz separacji, możesz logować się na wszystkie adresy MT.

Zaloguj się przez SSH z podsieci, w której masz dostęp do MT i pokaż wyniki poniższych poleceń:

/ip address print
/ip dhcp-server print
/ip dhcp-server network print
/ip firewall filter print
/ip firewall nat print
/ip settings print
/ip service print

Czyli w sumie niepotrzebnie chyba tworzyłem drugą maskaradę, bo ta domyślna była bez adresu źródłowego i właśnie na WAN.
Co do ograniczeń IP to żadnych nie ustawiałem. Logowanie ani po IP, ani po MAC nie idzie. 10.1.1.0/24 to główna sieć, 172.16.4.0/24 to wydzielona.

Wklejam wyniki poleceń:

 /ip address print
Flags: X - disabled, I - invalid, D - dynamic
 #   ADDRESS            NETWORK         INTERFACE
 0   ;;; defconf
     10.1.1.1/24        10.1.1.0        ether2-master
 1 D 192.168.100.8/24   192.168.100.0   ether1
 2   172.16.4.1/24      172.16.4.0      ether4-master

/ip dhcp-server print
Flags: X - disabled, I - invalid
 #   NAME     INTERFACE     RELAY           ADDRESS-POOL     LEASE-TIME ADD-ARP
 0   defconf  bridge                        dhcp             10m
 1   dhcp-... bridge-vlan                   vlan_pool        10m

/ip dhcp-server network print
 # ADDRESS            GATEWAY         DNS-SERVER      WINS-SERVER     DOMAIN
 0 ;;; defconf
   10.1.1.0/24        10.1.1.1
 1 172.16.4.0/24      172.16.4.1      192.168.100.1
                                      8.8.8.8
                                      8.8.4.4

/ip firewall filter print
Flags: X - disabled, I - invalid, D - dynamic
 0  D ;;; special dummy rule to show fasttrack counters
      chain=forward action=passthrough

 1    ;;; defconf: accept established,related,untracked
      chain=input action=accept
      connection-state=established,related,untracked

 2    ;;; defconf: drop invalid
      chain=input action=drop connection-state=invalid

 3    ;;; defconf: accept ICMP
      chain=input action=accept protocol=icmp

 4    ;;; defconf: drop all not coming from LAN
      chain=input action=drop in-interface-list=!LAN

 5    ;;; defconf: accept in ipsec policy
      chain=forward action=accept ipsec-policy=in,ipsec

 6    ;;; defconf: accept out ipsec policy
      chain=forward action=accept ipsec-policy=out,ipsec

 7    ;;; defconf: fasttrack
      chain=forward action=fasttrack-connection
      connection-state=established,related

 8    ;;; defconf: accept established,related, untracked
      chain=forward action=accept
      connection-state=established,related,untracked

 9    ;;; defconf: drop invalid
      chain=forward action=drop connection-state=invalid

10    ;;; defconf:  drop all from WAN not DSTNATed
      chain=forward action=drop connection-state=new
      connection-nat-state=!dstnat in-interface-list=WAN

11    chain=forward action=drop src-address=10.1.1.0/24
      dst-address=172.16.4.0/24 log=no log-prefix=""

12    chain=forward action=drop src-address=172.16.4.0/24
      dst-address=10.1.1.0/24 log=no log-prefix=""

/ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
 0    ;;; defconf: masquerade
      chain=srcnat action=masquerade out-interface-list=WAN
      ipsec-policy=out,none

 1    chain=srcnat action=masquerade src-address=172.16.4.0/24
      src-address-list="" out-interface=ether1 log=no log-prefix=""

/ip settings print
              ip-forward: yes
          send-redirects: yes
     accept-source-route: no
        accept-redirects: no
        secure-redirects: yes
               rp-filter: no
          tcp-syncookies: no
    max-neighbor-entries: 8192
             arp-timeout: 30s
         icmp-rate-limit: 10
          icmp-rate-mask: 0x1818
             route-cache: yes
         allow-fast-path: yes
   ipv4-fast-path-active: no
  ipv4-fast-path-packets: 0
    ipv4-fast-path-bytes: 0
   ipv4-fasttrack-active: yes
  ipv4-fasttrack-packets: 2428070
    ipv4-fasttrack-bytes: 2212426303

 /ip service print
Flags: X - disabled, I - invalid
 #   NAME      PORT ADDRESS                                       CERTIFICATE
 0 XI telnet      23
 1   ftp         21
 2   www         80
 3   ssh         22
 4 XI www-ssl    443                                               none
 5   api       8728
 6   winbox    8291
 7   api-ssl   8729                                               none

Przypisałeś adresację, do niewłaściwego interfejsu. Przypisałeś adres interfejsowi ether4-master, a DHCP rozdaje adresy na bridge-vlan.

Skoro masz bridge, zrób tak:

/ip address set 2 interface=bridge-vlan

Interfejsy logiczne zawsze są wyżej od interfejsów fizycznych.

Te reguły firewall masz z jakiegoś tutka czy sam je ustawiałeś?

Z poziomu GUI mogę również wejść w IP - Adressess i tam zmienić, aby adres 172.16.4.1 był przypisany do bridge vlan, tak?

Ogólnie posiłkowałem się paroma tutkami. Mój firewall to firewall z konfiguracji domyślnej MT + te dwie reguły na DROP pomiędzy podsieciami. W tutku tylko było chain: input, a ja zmieniłem na chain: forward.

Tak, możesz to zrobić w Winbox.

Przypisałem adres routera tak jak DHCP Server do Bridga i dalej to samo. Usunąłem też tę maskaradę na podsieć, skoro jedna na WAN wystarczy.

/ip address print
Flags: X - disabled, I - invalid, D - dynamic
 #   ADDRESS            NETWORK         INTERFACE
 0   ;;; defconf
     10.1.1.1/24        10.1.1.0        ether2-master
 1 D 192.168.100.8/24   192.168.100.0   ether1
 2   172.16.4.1/24      172.16.4.0      bridge-vlan

/ip dhcp-server print
Flags: X - disabled, I - invalid
 #   NAME     INTERFACE     RELAY           ADDRESS-POOL     LEASE-TIME ADD-ARP
 0   defconf  bridge                        dhcp             10m
 1   dhcp-... bridge-vlan                   vlan_pool        10m

Wracamy do firewalla. Regułka nr 4

chain=input action=drop in-interface-list=!LAN

Mówi MT, że wszystkie pakiety przychodzące do routera mają być odrzucane oprócz pakietów wysyłanych przez hosty z interfejsu LAN.

Jeśli na tej liście nie ma nic z podsieci 172.16.4.0/24, to MT odrzuca te pakiety. Dodaj jakiś host do tej listy i próbuj się dostać.

Ja bym ten firewall zrobił tak (wywaliłbym obecne reguły):

/ip firewall filter
add chain input action=drop in-interface=WAN dst-port=53 protocol=udp
add action=accept chain=input in-interface=WAN limit=3,5:packet protocol=icmp
add action=accept chain=input connection-state=established,related in-interface=WAN
add action=drop chain=input in-interface=WAN

add action=drop chain=forward src-address=10.1.1.0/24  dst-address=172.16.4.0/24
add action=drop chain=forward src-address=172.16.4.0/24  dst-address=10.1.1.0/24
add action=accept chain=forward connection-state=established,related in-interface=WAN
add action=drop chain=forward in-interface=WAN

Powyższe reguły mówią MT, że ma blokować cały ruch przychodzący do MT i ruch przekazywany do wszystkich podsieci z Internetu i zezwalać tylko na przyjmowanie pakietów z połączeń nawiązanych.

Jeśli chcesz coś przepuścić z Internetu, reguły accept trzeba podać powyżej ostatniej reguły drop. Firewall nie blokuje ruchu w sieci LAN, poza regułką odseparowującą obie sieci.

Proponuję odseparować się tylko od WANu i nie filtrować ruchu w LANie, bo sam widzisz jakie to stwarza potem problemy, zwłaszcza, gdy nie zna się dobrze firewalla :wink:

In-interfejs=WAN musisz zamienić na nazwę interfejsu, którym wchodzi Ci Internet. Prawdopodobnie ether1.

1 polubienie

Jeśli ether2-master jest w bridge, to też masz źle przypisany interfejs w ip addresses. W MT czy ogólnie w Linux to działa tak, że jeśli interfejs jest w bridge, to adres IP powinien mieć bridge, a nie interfejs fizyczny. Tak samo jest z interfejsem logicznym VLAN (to subinterfejs na karcie fizycznej).

Gdybyś miał taką sytuację: ether2 -> vlan10 -> bridge10, to bridge 10 jest najwyżej i temu interfejsowi przypisuje się adres. Wyjątkiem jest, gdy interfejs VLAN musi być w bridge, ale ma być w innej podsieci (czasami tak się robi, gdy urządzenie na vlan1 nie obsługuje tagowanych ramek).

Zresztą jak wejdziesz w interfaces zobaczysz hierarchię interfejsów:

bridge10
vlan10
ether2

:wink:

1 polubienie

Zrobione :slight_smile:

Tu ciekawie, bo w firewallu dodawanie na Address List nic nie dawało. Dopiero w Interface List dodałem cały ten wydzielony bridge do LAN i po tej operacji router mnie wpuścił.

Tak zrobię, generalnie sporo problemów chyba przez to że startowałem z ustawień domyślnych. Mogę te rozpisane przez Ciebie reguły traktować jako taką bazę ogólnie? Podejrzewam, że często będę musiał niedługo konfigurować routery :stuck_out_tongue:

Ale przy separacji bez firewalla nie było całkowitej separacji i mogłem np. podłączyć się przez Pulpit zdalny do kompa w drugiej podsieci.

Jak od tych reguł wychodzę. Najpierw robię dropy wszystkiego, a potem puszczam co trzeba. W LAN dropujesz co potrzeba, np. podsieci. W LAN nad regułami trzeba bardziej posiedzieć, bo zaraz okazuje się, że coś nie działa, bo któryś z protokołów jest blokowany.

1 polubienie

Czyli dobra baza, zapiszę je sobie. Następnym razem muszę po prostu ustawić router od podstaw bez domyślnej konfiguracji.

Generalnie trenuję sobie takie rzeczy, bo niedługo będą mi trochę bardziej potrzebne w pracy i chciałbym wiedzieć co robię. Co do tych reguł na dropa z podsieci do podsieci - chciałbym osiągnąć jak największą separację między tymi bridgami (sieć firmowa i publiczna funkcjonujące obok siebie) jednocześnie np. mogąc korzystać z publicznej drukarki z poziomu mojej firmowej sieci. Jak mniemam wtedy powinienem dać regułę, która zezwala na ruch z sieci firmowej na konkretny adres IP drukarki, a pod nią dropy pomiędzy podsieciami?

Ogólnie bardzo fajnie mi wyjaśniłeś tę strukturę interfejsów, sporo mi to rozjaśniło :slight_smile: Dzięki.

PS. wracając jeszcze do maskarady na out. interface WAN to też zamiast WAN powinienem ustawić interfejs do którego mam wpięty Internet? Na domyślnej konfiguracji działa z ustawieniem WAN, bo porobił z automatu te listy z których korzysta m.in. domyślny firewall.

Domyślną konfigurację wywalam na starcie. W dropach między podsieciami możesz podać adres lub adresy (musisz zrobić adres listę), które mają być pomijane. Możesz zrobić też jako osobną regułę. Tak, powinna być nad dropowaniem wszystkiego. Firewall sprawdza reguły po kolei, więc kolejność reguł jest ważna.

RouterOS to Linux z shellem MT, więc tam wszystko działa jak w Linuksie. Poczytaj sobie jak działa iptables, to reguły w MT nie będą dla Ciebie tajemnicą.

1 polubienie

Tak właśnie zrobię, dziękuję za dokładne i zrozumiałe objaśnienia.

WAN to nie zawsze interfejs fizyczny, może to być interfejs logiczny, np. pppoe. Do iface pppoe przypinasz na iface fizyczny i to interfejs pppoe jest out interface dla maskarady.

Mam też sytuację w dwóch firmach, gdzie isp daje mi 2 vlany. Jeden vlan to internet, drugi sieć pomiędzy dwiema lokacjami w sieci isp. Wówczas to intefejs vlan jest dla mnie WAN, a nie intefejs fizyczny, który taguje ramki.

1 polubienie

Nie ma sprawy.