modified on 1 gru 2009 at 11:26 ••• 18 701 views

Metarouter

Z MikroTik Wiki

Spis treści

Wprowadzenie

MetaRouter jest nową usługą w outerOS 4.0 beta 1 i RouterOS v3.21

MetaRouter może być użyty dla płyt z serii RB400 w celu tworzenia wirtualnych maszyn. W przyszłości zostanie dodana obsługa dodatkowych platform sprzętowych.

Wymagania

Każda instancja Metarouter używa tyle samo zasobów co pojedyncza instalacja RouterOS. Musisz mieć co najmniej 16 MB pamięci RAM na każdą wirtualną maszyne RouterOS, plus dodatkową ilość pamięci dla głównego systemu. 16 MB na maszynę wirtualną jest absolutnym minimum - sugerujemy większą ilość pamięci dostępnej dla każdego Metaroutera. Przyszłe wersje RouterOS będą mieć możliwość uruchomienia wirtualnych maszyn z wykorzystaniem mniejszej ilości pamięci na każdą maszynę niż 16 MB.

Uwaga: Możesz uruchomić wirtualną maszynę z systemem OpenWRT z mniejszą ilością pamięci niż 16 MB. 16 MB jest ograniczeniem dla instalacji RouterOS.

Możesz stworzyć do 8 wirtualnych maszyn, w przyszłości ilość zostanie zwiększona do 16.

Na głównej maszynie możesz utworzyć do 8 wirtualnych interfejsów, które będą połączone z metarouterami. Aktualnie jedynym sposobem dodania większej ilość, jest użycie VLAN. Nie ma możliwości wykorzystania zewnętrznych urządzeń przechowujących dane jako wirtualne urządzenia metaroutera.

Zastosowanie

MetaRouter pozwala klientom lub użytkownikom z niskim poziomem dostępu na posiadanie swojego własnego 'routera' i konfigurowanie go według własnego upodobania, bez potrzeby posiadanie drugiego sprzętowego routera, lub pozwalając na dostęp do konfiguracji głównego routera.

Na przykład; WISP może stworzyć wirtualny router dla klientów przez port ethernetowy pozwalając definiować swoje własne ustawienia firewalla, bez mizany ustawień bezprzewodowego WISPa.

Tworzenie Metaroutera

 [admin@RB_Meta] /metarouter> add name=mr0 memory-size=32 disk-size=32000  disabled=no
 [admin@RB_Meta] /metarouter> print
 Flags: X - disabled 
 #   NAME                 MEMORY-SIZE DISK-SIZE     USED-DISK     STATE        
 0   mr0                  16MiB       0kiB          377kiB        running      

Jak widzisz, tworzenie wirtualnego rotuera jest całkiem proste, musisz określić tylko nazwę routera, jak wiele RAMu ma być dla niego przydzielone i ilość miejsca na dysku używane przez wirtualny router. Wyjaśnienie pozostałych parametrów dostępne jest w Opisie parametrów.


Uwaga: * uważaj podczas tworzenia dynamicznego rozmiaru dysku twardego dla metarouterów. Proxy może szybko zapełnić miejsce na dysku hosta!

Przykład bez konfiguracji

Jeśli dodasz nowy metarouter bez określenia parametrów, wirtualny dysk HDD będzie miał dynamiczny rozmiar, a ilość RAMu będzie wynosić 16 MB:

[admin@RB_Meta] /metarouter> add name=mr1
[admin@RB_Meta] /metarouter> print
Flags: X - disabled
 #   NAME                 MEMORY-SIZE DISK-SIZE     USED-DISK     STATE
 1   mr1                  16MiB       0kiB          3kiB          running

OpenWRT jako maszyna wirtualna

Od wersji v3.24 i v4.0beta3 Metarouter ma możliwość importowania stworzonych wcześniej obrazów dysków. Jako przykład pokażemy jak używać OpenWRT na maszynie wirtualnej.


Importowanie obrazu dysku

Jeśli nie masz specjalnych potrzeb, możesz importować utworzony przez producenta obraz, który jest dostępny tutaj. Wgranie obrazu openwrt na router i importowanie go przez polecenie import-image:

[admin@MikroTik] /metarouter> import-image file-name=openwrt.tgz
 imported: 100%
[admin@MikroTik] /metarouter> print
Flags: X - disabled
#   NAME      MEMORY-SIZE DISK-SIZE     USED-DISK     STATE
0   mr1       16MiB       unlimited     7383kiB       running

Jak widzisz, OpenWRT jest włączony, możesz uruchomić proces konfiguracji, który jest wyjaśniony [[#Dodawanie interfejsów |poniżej].

budowanie własnego obrazu OpenWRT

Jeśli nie satysfakcjonują Cię prebuildowane wersje OpenWRT, możesz stworzyć swoje własne obrazy.

Pierwszym krokiem jest instalacja svn i pobranie najnowszego kodu źródłowego z openwrt.org

svn co svn://svn.openwrt.org/openwrt/trunk

Teraz musisz załatać źródła naszym patchem.

cd trunk/
wget http://www.mikrotik.com/download/openwrt-metarouter-1.1.patch
patch -p0 <openwrt-metarouter-1.1.patch

Po załataniu źródeł, musisz ustawić opcje konfiguracyjne

make menuconfig

Przejdź do menu Target System i wybierz z listy Mikrotik MetaROUTER

image:snapshot2.png

Inne opcje są zależne od Twoich wymagań (np. wsparcie IPv6 i ppp), możesz również pozostać przy ustawieniach domyślnych.

Jeśli zobaczysz wiadomości o błędach podczas uruchomienia menuconfig, jak na przykład:

Build dependency: Please install ncurses. (Missing libncurses.so or ncurses.h)

Oznacza, że nie są zainstalowane wymagane biblioteki, sprawdź wiadomości i zainstaluje wymagane biblioteki.

Jak zakończysz konfigurację, wpisz:

make

Chwilę zajmie kompilacje, więc możesz wyjść na kubek herbaty.

Po zakończeniu kompilacji, wgraj obraz na router i importuj go jak opisano w sekcji powyższej.

W celu dowiedzenia się więcej na temat opcji i kompilacji zajrzyj do dokumentacji OpenWRT.

Dodawanie interfejsów

Najpierw musisz dodać nowy interfejs dla swojego wirtualnego routera, za pomocą menu interface.

Polecenie interface ma opcje pokazane poniżej:

 [admin@MikroTik] /metarouter> interface add 
 comment    disabled        dynamic-mac-address  type            virtual-machine
 copy-from  dynamic-bridge  static-interface     vm-mac-address

Opis każdej opcji dostępny jest w sekcji Interfejs.

Dodajmy jeden interfejs:


[admin@MikroTik] /metarouter> interface add virtual-machine=mr1 type=dynamic

Na hoście interfejs pojawia się jako interfejs wirtualny:

 [admin@MikroTik] > /interface print 
 Flags: D - dynamic, X - disabled, R - running, S - slave 
 #     NAME                                              TYPE             MTU  
 8  R  ether9                                            ether            1500 
 9  R  test                                              bridge           1500 
10 DR  vif1                                              vif              1500

Łączenie z maszyną wirtualną

Aby połączyć się z maszyną wirtualną, wpisz w konsoli polecenie:

/metarouter console 0

Na liście interfejsów pojawi się interfejs wirtualny:

[admin@mr0] > interface print 
 Flags: D - dynamic, X - disabled, R - running, S - slave 
 #     NAME                                              TYPE             MTU  
 0  R  ether1                                            ether            1500

Aby zakończyć połączenie z konsolą wirtualnej maszyny, wciśnij CTRL + A i Q aby szybko wrócić na konsolę hosta (jeśli używasz minicom, wciśnij CTRL + A dwa razy):


[admin@MikroTik] >
[Q - quit connection]      [B - send break]
[A - send Ctrl-A prefix]   [R - autoconfigure rate]
 
 Q

Konfiguracja wirtualnej sieci

Widziałeś, że wirtualny interfejs widziany jest w menu Interfaces hosta jako vif1 oraz w menu metarouter interfaces jako ether1. Możesz dodać adres IP do obu interfejsów i zestawić sieć. Zestawienie mostku pomiędzy interfejsem wirtualnym a interfejsem fizycznym pozwoli na wymianę ruchu.

Przykłady konfiguracji

Tworzenie wyizolowanego Metaroutera dla klienta

Przykład pokazuje jak przy pomocy usługi Metarouter stworzyć wyizolowany router na routerze WISP po stronie klienta. Przykładowa konfiguracja pokazana jest poniżej:

1. Dodanie Metarouter dla klienta:

[admin@RouterGW] /metarouter> add name=client1 memory-size=32     
[admin@RouterGW] /metarouter> print
Flags: X - disabled 
 #   NAME                            MEMORY-SIZE DISK-SIZE     USED-DISK     STATE        
 0   client1                         32MiB       0kiB          189kiB        running      
[admin@RouterGW] /metarouter>

2. Dodanie interfejsów Metarouter do nowo utworzono Metaroutera:

[admin@RouterGW] /metarouter interface> add virtual-machine=client1
[admin@RouterGW] /metarouter interface> add virtual-machine=client1 
[admin@RouterGW] /metarouter interface> print
Flags: X - disabled, A - active 
 #   VIRTUAL-MACHINE                                             TYPE    VM-MAC-ADDRESS   
 0 A client1                                                     dynamic 02:49:E8:55:8E:E8
 1 A client1                                                     dynamic 02:16:16:90:EF:0E
[admin@RouterGW] /metarouter interface> 

3. Stworzenie interfejsu mostkowego aby połączyć interfejs metarouter z interfejsem ethernetowym, do którego fizycznie podłączony jest klient:


[admin@RouterGW] /interface bridge> add         
[admin@RouterGW] /interface bridge> print
Flags: X - disabled, R - running 
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 protocol-mode=none 
      priority=0x8000 auto-mac=yes admin-mac=00:00:00:00:00:00 max-message-age=20s 
      forward-delay=15s transmit-hold-count=6 ageing-time=5m 

[admin@RouterGW] /interface bridge port> add interface=ether2 bridge=bridge1 
[admin@RouterGW] /interface bridge port> add interface=vif2 bridge=bridge1 
[admin@RouterGW] /interface bridge port> print
Flags: X - disabled, I - inactive, D - dynamic 
 #    INTERFACE                    BRIDGE                   PRIORITY PATH-COST  HORIZON   
 0    ether2                       bridge1                  0x80     10         none      
 1    vif2                         bridge1                  0x80     10         none      

4. Dodanie konfiguracji IP do interfejsu Metarouter, który będzie używany do połączenie Metaroutera z hostem metaroutera:

[admin@RouterGW] /ip address> add address=10.0.1.1/24 interface=vif1 
[admin@RouterGW] /ip address> print
Flags: X - disabled, I - invalid, D - dynamic 
 #   ADDRESS            NETWORK         BROADCAST       INTERFACE                         
 0 D 10.5.8.68/24       10.5.8.0        10.5.8.255      ether1                            
 1   10.0.1.1/24        10.0.1.0        10.0.1.255      vif1                              
[admin@RouterGW] /ip address> 

5. Podłączenie do Metaroutera przez konsolę

[admin@RouterGW] /metarouter> console client1

[Ctrl-A is the prefix key]


Starting...
Starting services...

MikroTik 3.21
MikroTik Login: admin
Password:

[admin@MikroTik] > /sys identity set name=Client1

6. Konfiguracja Metaroutera, aby klient mógł łatwiej zrozumieć konfigurację:

[admin@Client1] /interface ethernet> p
Flags: X - disabled, R - running, S - slave 
 #    NAME                                              MTU   MAC-ADDRESS       ARP       
 0 R  ether1                                            1500  02:49:E8:55:8E:E8 enabled   
 1 R  ether2                                            1500  02:16:16:90:EF:0E enabled   
[admin@Client1] /interface ethernet> set 0 name=public
[admin@Client1] /interface ethernet> set 1 name=local
[admin@Client1] /interface ethernet> print
Flags: X - disabled, R - running, S - slave 
 #    NAME                                              MTU   MAC-ADDRESS       ARP       
 0 R  public                                            1500  02:49:E8:55:8E:E8 enabled   
 1 R  local                                             1500  02:16:16:90:EF:0E enabled   
[admin@Client1] /interface ethernet> 

[admin@Client1] /ip address> add address=10.0.1.2/24 interfae=public
[admin@Client1] /ip address> add address=10.0.2.1/24 interface=local 
[admin@Client1] /ip address> print
Flags: X - disabled, I - invalid, D - dynamic 
 #   ADDRESS            NETWORK         BROADCAST       INTERFACE                         
 0   10.0.1.2/24        10.0.1.0        10.0.1.255      public                            
 1   10.0.2.1/24        10.0.2.0        10.0.2.255      local

[admin@Client1] /ip route> add gateway=10.0.1.1
[admin@Client1] /ip route> print
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        G GATEWAY                   DISTANCE INTERFACE 
 0 A S  0.0.0.0/0                          r 10.0.1.1                  1        public    
 1 ADC  10.0.1.0/24        10.0.1.2                                    0        public    
 2 ADC  10.0.2.0/24        10.0.2.1                                    0        local     
[admin@Client1] /ip route> 

[admin@Client1] /ip firewall nat> add action=masquerade out-interface=public chain=srcnat

Opis parametrów

Ogólne

Menu: /metarouter

Polecenia:

Parametry Opis
console (console <vm-id>) połącz z konsolą wybranej wirtualnej maszyny
import-image (import-image file-name=<image-file>) importuj własny obraz systemu (dostępne od wersji v3.24 i v4.0b3)
reboot (reboot <vm-id>) zrestartuj wybraną maszynę wirtualną
shut-down (shut-down <vm-id>) wyłącz wybraną maszynę wirtualną
start (start <vm-id>) uruchom wybraną maszynę wirtualną

Opcje konfigurowalne:

Parametr Opis
disk-size (unlimited|0..4294967295[kiB] ; Default: unlimited) Ilość miejsca na dysku zarezerowanego dla wirtualnego routera.
memory-size (16..256[MiB] ; Default: 16) Ilośc pamięci zarezerowwanej dla wirtualnego routera.
name (string ;) Nazwa maszyny wirtualnej.


Parametry tylko-do-odczytu:

Parametr Opis
used-disk (integer[kiB] ;) aktualnie wykorzystywane miejsce na dysku przez wirtualny router.
disk-reads (integer;) ilość odczytów z dysku
disk-writes (integer;) ilość zapisów na dysk
state (booting|running|rebooting|shutting-down|stopped|disabled;) aktualny stan maszyny wirtualnej

Interfejs

Menu: /metarouter interface

Konfigurowalne Opcje:

Parametr Opis
dynamic-bridge (string;) nazwa mostka przydzielonego do wirtualnego interfejsu. Użyteczne gdy interfejs jest dynamiczny
dynamic-mac-address (mac;) adres MAC dynamicznie utworzonego interfejsu
static-interface (none|name-of-iface;) interfejs statyczny do którego interfejs wirtualny jest przywiązany
type (dynamic|static;) określa czy interfejs jest dynamiczny czy statyczny
virtual-machine (string;) określa do którego interfejsu będzie przypisana wirtualna maszyna
vm-mac-address (mac;) adres MAC interfejsu po stronie wirtualnej maszyny