RFC 3378 EtherIP med FreeBSD

Jag har skrivit den här guiden för att dela med världen hur man använder RFC 3378 för att överbrygga två nätverk på Ethernet-nivå över ett routat IP-nätverk - särskilt eftersom det verkar detta kommer det att vara den enda guiden på internet som täcker hur man gör detta!


Bakgrund

Jag arbetar för den lokala hälsovårdsavdelningen i en lokal regering med mer än 35 platser som omfattar hälso- och sjukvårdstjänster.

De flesta av dessa webbplatser finns på ön där direktkommunikation (tillhandahålls av det lokala telekomföretaget) finns som WAN-länkar mellan vår huvudsida och dessa satellitplatser. En webbplats är på en annan ö och vår anslutning till den går via centrala regeringens WAN-infrastruktur och därför har vi ingen direkt kontroll över mellanlänkarna. Enkelt uttryckt: vi dirigerar IP från vår permiter router och den anländer till vår fjärrplatss router till deras nätverk. Det som händer däremellan är en serie humle och övergångar från fiberoptiska, koppar- och radiolänkar.

Separat till detta hade en trådlös distribution redan genomförts på hela sjukhusplatsen och använde VLAN för att separera personal (privata) och patient (offentliga) SSID vid åtkomstpunkterna i separata brandväggar.

Krav

Sjukhuset på grannön behövde uppdateras för att inkludera samma trådlösa lösning som implementerades lokalt. Tillhandahållande av kablar, ströminjektorer och trådlösa åtkomstpunkter skulle inte vara ett problem. En cabler hade distribuerat nytt Ethernet runt byggnaden. Budgeten för åtkomstpunkter och PoE-adaptrar godkända och förvärvade artiklar.

Problem

Problemet var att få de privata och patienterna trådlösa kanalerna tillbaka till den centrala webbplatsen. Vi kunde skapa nya subnät men dessa skulle konvergeras vid routern och korsa de olika humlen på väg tillbaka till vårt centrala nätverk. Men detta skulle innebära att de "smutsiga" uppgifterna från den trådlösa patienten skulle korsa vid sidan av de "rena" uppgifterna i vårt nätverk och utgöra en enorm risk. Vi hade redan eliminerat dessa risker genom att implementera VLAN-separering i det centrala nätverket, så om det bara fanns ett sätt att passera VLAN över ett IP-routat nätverk. Tyvärr blockerar routrar så kallad "Layer 2" -trafik, och så kan VLAN inte passera till ett annat nätverk.

Dessutom behövde vi undvika att behöva hjälp från statliga nätverkstjänster eftersom de hade mycket stramare förändringskontroll och högre nivå av beauroucracies ... men mindre sagt om det!

Lösning

En internetstandard hade nyligen kommit fram, släppt under koden RFC 3378 och bättre känd som EtherIP som ger den perfekta lösningen på våra krav - att överbrygga två Ethernet-nätverk tillsammans med en IP-routerlänk.

Tack och lov finns EtherIP tillgängligt i de flesta operativsystem med öppen källkod, inklusive FreeBSD, av vilka jag har mycket kunskap om att administrera.

Genomförande

Du behöver två datorer, en för varje sida av den spända länken och båda behöver två nätverkskort. Ett av nätverkskorten ansluter till det lokala nätverket som en vanlig dator skulle göra, med en IP-adress som passar det subnät som det är i. Det andra nätverkskortet är anslutet till en kopplingsport till en switch (i mitt fall, en Cisco) och är det som fångar nätverkstrafiken på Ethernet-nivå.

Jag gjorde en grundläggande installation av FreeBSD; det finns inte ens något behov av att portarna laddas ner.

Dator 1 (på den lokala webbplatsen) hade ett Intel EtherExpress-kort fxp0 med IP-adress 10.1.1.20 och em0 som används för Ethernet-porten.

Dator 2 (på fjärrplatsen) hade ett Broadcom-kort bge0 med IP-adress 10.15.1.20 och em0 användes för Ethernet-porten.

FreeBSD har ett virtuellt nätverksgränssnitt som kallas "gif" som skapar en Etherhet-tunnel mellan två slutpunkter. Ett gif0-nätverksgränssnitt skapas på både datorer och överbryggar dem över en routad IP-länk. En annan virtuell nätverksenhet skapas som kallas "bridge" som kan spänna nätverkstrafik mellan liknande nätverksgränssnitt, vanligtvis Ethernet-enheter. Nätverksenheten bridge0 är konfigurerad för att kombinera nätverksgränssnitten gif0 och em0 tillsammans. Detta tillåter Ethernet-data som passerar till em0 att skickas till gif0 och (efter att ha passerat genom den dirigerade IP-länken) till fjärrdatorns gif0 och vidare till em0-nätverksgränssnittet på datorn och slutligen till nätverket där.

Det här låter kanske mer komplicerat än det verkligen är! Ett textdiagram ser ut så här:

Nätverk - (Trunk Port) - em0 - gif0 - fxp0 - router - routed IP-länk - router - bge0 - gif0 - em0 - (Trunk Port) - Nätverk

Konfiguration

Konfigurera ett gränssnitt till trunk-läge på Cisco-omkopplaren:

gränssnitt FastEthernet0 / 24
beskrivning Länk: EtherIP
switchport trunk beskärning vlan none
switchport mode bagageutrymme
slutet

Det här är porten em0 (på mina datorsystem) kommer att ansluta till. Detsamma gjordes även på fjärrkontrollen för respektive em0 på den andra datorn.

Om du använder en icke-Cisco-enhet måste du aktivera trunking med leverantörspecifika metoder.

På dator 1 konfigurerar FreeBSD enligt följande i filen /etc/rc.conf:

# - sysinstall genererade deltas - # Man 31 jan 12:09:47 2011
# Skapad: Man 31 jan 12:09:47 2011
# Aktivera nätverksdemoner för användarvänlighet.
# Gör alla ändringar i denna fil, inte till /etc/defaults/rc.conf.
# Den här filen innehåller nu bara åsidosättningarna från /etc/defaults/rc.conf.
defaultrouter =”10.1.1.1"
hostname =”etherip01.mydomain.com”
ifconfig_fxp0 = ”inet 10.1.1.20 netmask 255.255.0.0 ″

# EtherIP-konfiguration
cloned_interfaces = ”gif0 bridge0 ″
ifconfig_gif0 = ”mtu 1500 tunnel 10.1.1.20 10.15.1.20 upp”
ifconfig_bridge0 = ”addm em0 addm gif0 up”
ifconfig_em0 =”up”
################

tangentuppsättning =”uk.iso”
sshd_enable =”YES”

På dator 2:

# - sysinstall genererade deltas - # tors 3 feb 11:20:45 2011
# Skapad: tors 3 feb 11:20:45 2011
# Aktivera nätverksdemoner för användarvänlighet.
# Gör alla ändringar i denna fil, inte till /etc/defaults/rc.conf.
# Den här filen innehåller nu bara åsidosättningarna från /etc/defaults/rc.conf.
defaultrouter =”10.15.1.1"
hostname =”etherip02.mydomain.com”
ifconfig_bge0 = ”inet 10.15.1.20 netmask 255.255.0.0 ″

# EtherIP-konfiguration
cloned_interfaces = ”gif0 bridge0 ″
ifconfig_gif0 = ”mtu 1500 tunnel 10.15.1.20 10.1.1.20 upp”
ifconfig_bridge0 = ”addm em0 addm gif0 up”
ifconfig_em0 =”up”
################

tangentuppsättning =”uk.iso”
sshd_enable =”YES”

Observera att gif0-tunnelns IP-adresser vänds mellan dator 1 och dator 2. Dessa IP-adresser är de för det lokala nätverksgränssnittet. FreeBSD-datorerna i mitt fall fungerade inte som omkretsrutrar men de kunde lika enkelt vara med ett tredje nätverkskort. Jag behövde inte denna komplicerade komplexitet eftersom IP-routing redan fanns tillgängligt inom hälso- och statliga nätverk.

Resultat

Strömställaren på den avlägsna webbplatsen konfigurerades för att vara en VTP-klient och anslöt sig direkt till VLAN-domänens centrala nätverk (en Cisco-uppfattning, inte Microsoft-relaterad) och utfärdande av "show vlan" -kommandot avslöjade alla centrala nätverk VLAN: s hade spridit över. Dessutom avslöjade kommandot ”show cdp neighbour” att både centrala och fjärrbrytare kunde se varandra som om de var direkt anslutna till varandra.

Förhoppningsvis kan den här guiden vara till nytta för alla som har tömt Google för sökningar efter denna information (jag vet, jag försökte också!). Nödvändighet är verkligen modern till att bara räkna ut det själv ... och nu behöver du inte!

Jag kan kontaktas på olika sätt som beskrivs på min kontaktsida.

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me