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ń:
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
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.
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
In-interfejs=WAN musisz zamienić na nazwę interfejsu, którym wchodzi Ci Internet. Prawdopodobnie ether1.
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:
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
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.
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 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ą.
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.