Gå til innhold

BSD/UnixKorrekt konfigurasjon av link aggregation for dhcpd i OpenBSD


Anbefalte innlegg

Hallo.

 

Jeg skal sette opp NAT via PF på en OpenBSD-boks (v5.1). Jeg gjør dette:

 

(1) Setter ip forwarding i /etc/sysctl.conf:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

(2) Konfigurerer ett inngående og ett utgående nic:

rasmus@mithrandir ~ % cat /etc/hostname.sis3
dhcp NONE NONE description "Global Uplink"
rasmus@mithrandir ~ % cat /etc/hostname.sis2
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired"

(Rebooter)

(3) Konfigurerer /etc/dhcpd.conf:

 

 

rasmus@mithrandir ~ % cat /etc/dhcpd.conf
#ddns-update-style none;
#authoritative;
#shared-network LOCAL-LAN {
#	   allow booting;
#	   allow bootp;
	subnet 10.0.0.0 netmask 255.255.255.0 {
			option domain-name "flat.home";
			option domain-name-servers 8.8.8.8;
#				option domain-name-servers 208.67.222.222, 208.67.220.220;
#				next-server 10.0.0.1;
			option broadcast-address 10.0.0.255;
			option routers 10.0.0.1;
			range 10.0.0.100 10.0.0.254;
			default-lease-time 86400; #24h
			max-lease-time 90000;	 #25h
	}
#}

 

 

(4) Konfigurerer /etc/pf.conf:

ext_if = "sis3"
int_if = "sis2"
localnet = $int_if:network
pass out log (all) on $ext_if from $localnet to any nat-to ($ext_if)

 

Jeg mener at da burde alt være i boks, det stemmer ikke. Jeg kan f.eks. få dhcp-adresse 10.0.0.100 når jeg kobler til sis2, men jeg kan ikke curl'e google eler pinge noen. Jeg har fått til dette her tilbake i OpenBSD 4.9, men jeg tror jeg har glemt noe ...

 

Edit 23/7: endret tittel fra `OpenBSD PF NAT-oppstartsproblemer'

Endret av Rusma
Lenke til kommentar
Videoannonse
Annonse

Hva har du i /etc/resolv.conf? Blir den oppdatert når DHCP kjører? Innholdet der må være korrket for at maskinen skal kalre og resolve noe som helst.

(får du pinget ip adresser?)

Og en ting til: trenger du ikke en "pass in..." for å komplettere din "pass out..." i /etc/pf.conf? (Jeg bruker ikke pf, så her er jeg på tynn is...)

Lenke til kommentar
Hva har du i /etc/resolv.conf? Blir den oppdatert når DHCP kjører?
På ArchLinux (som jeg bruker), er det sånn at dhcpcd (dhcp client) oppdaterer /etc/resolv.conf automatisk, men man kan skrive noe i /etc/resolv.conf.head og /etc/resolv.conf.tail for å overkjøre noe før og etter, .f.eks. 127.0.0.1 hvis man har en dns-server på laptopen :) Jeg vil tro 10.0.0.1 er det som står der.

 

Og en ting til: trenger du ikke en "pass in..." for å komplettere din "pass out..." i /etc/pf.conf? (Jeg bruker ikke pf, så her er jeg på tynn is...)

Denne linja er en forkortelse av to linjer:

match out on $ext_if from $localnet to any nat-to ($ext_if)
pass log on $ext_if from $localnet to any

[1]

Jeg har også prøvd

match out on $ext_if from $localnet nat-to ($ext_if)
block all
pass from { lo0, $localnet }

Som er helt basic stuff fra Mister Hansteen[2]. Så det kan ikke være pf, det må være noe flaue saker jeg har glemt.

 

-----

[1] http://www.openbsd.org/faq/pf/nat.html

[2] http://home.nuug.no/...l#GWSIMPLESETUP

Lenke til kommentar

Det går bedre nå, det var nok noe rusk i systemet. Men, hvordan kan man bruke mange ethernet interfaces til samme "dhcp pool" og også fungere med pf? Det vil si

rasmus@mithrandir ~ % cat /etc/hostname.sis2
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired"
rasmus@mithrandir ~ % cat /etc/hostname.sis1
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired"
rasmus@mithrandir ~ % cat /etc/hostname.sis0
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired"

ser ikke ut til å fungere annet enn på sis0, vet ikke hvorfor. Man kan få dhcp adresse på sis1 og sis2 også, men nat fungerer ikke.

 

Jeg har sett litt på å sette opp vlan, men skjønner ikke helt hvordan det fungerer. Til nå har jeg prøvd dette:

rasmus@mithrandir ~ % cat /etc/hostname.sis0
up
rasmus@mithrandir ~ % cat /etc/hostname.sis1
up
rasmus@mithrandir ~ % cat /etc/hostname.sis2
up
rasmus@mithrandir ~ % cat /etc/hostname.vlan0
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired" vlan 2 vlandev sis2
rasmus@mithrandir ~ % cat /etc/hostname.vlan1
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired" vlan 2 vlandev sis1
rasmus@mithrandir ~ % cat /etc/hostname.vlan2
inet 10.0.0.1 255.255.255.0 10.0.0.255 description "Local Wired" vlan 2 vlandev sis0
rasmus@mithrandir ~ % cat /etc/rc.conf.local
ntpd_flags=			  # enabled during install
dhcpd_flags="vlan0 vlan1 vlan2"
rasmus@mithrandir ~ %

Man skulle tro at samme vlan-id skulle gi samme "vlan pool". Fint om noen har snøring.

Lenke til kommentar

På FreeBSD ihvertfall så setter du opp hvilke interfaces dhcpd skal lytte på ved hjelp av variablen dhcpd_ifaces i /etc/rc.conf, eksempel: dhcpd_ifaces="rl0"

Hvis det var det du lurte på?

 

Ellers så er det ikke noe sjakktrekk å koble flere interfacer til samme subnett (slik at de får hver sin ip-adresse) uten bruk av en eller annen måte å "bonde" dem på (VLAN eller tilsvarende), men det vet du kanskje?

 

Oppsett av VLAN har jeg ikke prøvd, hverken på FreeBSD eller OpenBSD, så det kan jeg ikke bistå med, dessverre.

Lenke til kommentar
[...] variablen dhcpd_ifaces i /etc/rc.conf, eksempel: dhcpd_ifaces="rl0"[...]

Det er det samme som dhcpd_flags="rl0". Jeg lute ikke på det egentlig, men det er bare at det ikke ser ut til å fungere med flere, f.eks. dhcpd_flags="rl0 rl1 rl2 rl3", som jeg har forsøkt å skrive over.

Ellers så er det ikke noe sjakktrekk [...]
Jo, det er et kjempe-trekk, fortell, fortell.

 

De fleste guider på internett ser ut til å bruke ett fxp0 inn og ett fxp1 ut, mens jeg har fire sis og fire vr ...

Lenke til kommentar
Jeg lurer fortsatt på
å koble flere interfacer til samme subnett (slik at de får hver sin ip-adresse) uten bruk av en eller annen måte å "bonde" dem på (VLAN eller tilsvarende)

Du kan få ARP trøbbel, som er vanskelig å feilsøke på.

NI har et forsøk på forklaring her: http://www.ni.com/white-paper/12558/en

(de to første punktene).

Mer info:

http://serverfault.com/questions/197752/several-ip-address-within-the-same-subnet-on-the-same-host

http://www.techexams.net/forums/ccna-ccent/74584-6-interfaces-same-network.html

http://www.faqs.org/faqs/hp/hpux-faq/section-117.html

http://lists.freebsd.org/pipermail/freebsd-net/2003-July/001108.html

 

Merk: dette gjelder fysiske interface (pga. MAC-adresser). Virtuelle interfaces har som regel ikke dette problemet.

Lenke til kommentar

Du kan få ARP trøbbel, som er vanskelig å feilsøke på.

NI har et forsøk på forklaring her: http://www.ni.com/white-paper/12558/en

(de to første punktene).

Takk! Veldig informasjonsrik post. Så det vil si at jeg må gjøre noe i retning av dette(?):

rasmus@mithrandir ~ % cat /etc/hostname.sis2
inet 10.0.0.1 255.255.255.0 10.0.0.255
rasmus@mithrandir ~ % cat /etc/hostname.sis1
inet 10.0.0.2 255.255.255.0 10.0.0.255
rasmus@mithrandir ~ % cat /etc/hostname.sis0
inet 10.0.0.3 255.255.255.0 10.0.0.255

De er da fortsatt i samme subnett 10.0.0.0/24, men interfacene har ulike adresser.

 

Eller var poenget å endre selve subnet mask'en? Dette vil i så fall føre til separate subnet-konfigurasjoner i /etc/dhcpd.conf.

Lenke til kommentar

Poenget er å ha de forskjellige interfacene i forskjellige subnett. (Og en ting til: dette er helt uavhengig av dhcpd, dette er "vanlig" nettverk)

Dersom du ønsker å ha alle i samme subnett, se på teknologier som lagg(4), ng_one2many(4) og tilsvarende.

Handboka sier litt om dette:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-aggregation.html

Wikipedia: http://en.wikipedia.org/wiki/Link_aggregation

Lenke til kommentar

Hmm, ja jeg tror jeg forstår hva lagg(4)[freebsd]/trunk(4)[openbsd] brukes til: de er primært til for å kunne lage en "stamme" av nettverksledninger og/eller trådløse nettverkskort for å øke throughput og fault-tolerance.

 

Så vidt jeg vet finnes desverre ikke noe som ligner på ng_one2many(4) i OpenBSD.

 

Jeg gjetter på at broadcast er den aggregation protocol'en/bonding mode'n jeg vil bruke (liste i Wikipedia artikkelen, i trunk(4) og i lagg(4))? I så fall gjør man dette:

 

root@mithrandir /etc # cat /etc/hostname.sis2
up
root@mithrandir /etc # cat /etc/hostname.sis1
up
root@mithrandir /etc # cat /etc/hostname.sis0
up
root@mithrandir /etc # ifconfig trunk0 trunkproto broadcast trunkport sis2 trunkport sis1 trunkport sis0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255
root@mithrandir /etc # ifconfig trunk0
trunk0: flags=8843&--#60;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&--#62; mtu 1500
	lladdr 00:00:24:cc:49:66
	priority: 0
	trunk: trunkproto broadcast
			trunkport sis0 active
			trunkport sis1 active
			trunkport sis2 master,active
	groups: trunk
	media: Ethernet autoselect
	status: active
	inet6 fe80::200:24ff:fecc:4966%trunk0 prefixlen 64 scopeid 0xf
	inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255

Jeg kan se at sis2 er blitt master der. Normalt?

Endret av Rusma
Lenke til kommentar
  • 2 uker senere...

Nederlendere forteller meg at jeg kan bruke standard routing greier ... det vil si ingen bridge(4), og ingen lagg(4)/trunk(4). Tinger tilbake her om jeg finner ut av det.

 

Hvis utgangsposten/trådstarten var uklar beklager jeg det og tar det på min kappe.

Lenke til kommentar
  • 2 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...