Jo rûteliny komt ôfwiisd werom, en it advys dat jo fine seit dat jo IP-trochstjoeren oan moatte sette. Dy twa dingen sitte yn ferskate stadia fan it probleem. Trochstjoeren beslút oft in host pakketten tusken ynterfaces ferpleatse mei; it hat gjin miening oer oft it bestimmingsplak dat jo typten in jildich netwurk is. Reparearje earst it foarheaksel, want trochstjoeren rêdt gjin adres en masker dy't net oerienkomme.

Wêr't de parser eins oer klaget

In bestimmingsplak skreaun as adres plus masker moat in netwurk beskriuwe, en in netwurk begjint mei nulde hostbits. Wannear't it adres dat jo jouwe noch in wearde yn it hostpart draacht, is it pear yntern ynkonsistint: 172.20.130.0 liket skjin, om't it op nul einiget, mar nul yn it fjirde oktee is net it iennige dat ta saak docht. It tredde oktee is dejinge dy't hjir losse bits hat.

Ark behannelje dy ynkonsistinsje ferskillend. Strange parsers wegerje de line en neame hostbits. Tolve parsers maskearje it adres en ynstallearje iets dat jo net frege hawwe, wat slimmer is, om't de konfiguraasje no in berik rûtelet dat jo nea bedoelden. De ipaddress-module fan Python lit de kar direkt sjen: strange netwurkparsing smyt in flater op, en strict=False maskearret de hostbits fuort. Jo kliïnt kin strang, tolv of tusken ferzjes ynkonsistint wêze, dus lês it berjocht ynstee fan op in gewoante te fertrouwen.

Wurket it foarbyld mei de hân troch

Nim in tunnel dy't 172.20.130.0 berikke moat mei in /20-masker. In /20 lient fjouwer bits fan it tredde oktee, dus dat oktee telt allinnich yn stappen fan 16: 0, 16, 32 en fierder oant 240. De wearde 130 falt tusken 128 en 143, wat betsjut dat it omjouwende netwurk begjint by 172.20.128.0, net by 172.20.130.0 mei it lêste oktee leech.

Utskreaun rint it blok fan 172.20.128.0 oant 172.20.143.255 en hâldt 4,096 adressen. Deselde wearden oan in net-strange parser jaan lit de ferfanging sjen dy't it foar jo dwaan soe:

$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096

Beslút hokker bestimmingsplak jo eins bedoelden

De ôfwiisde line ferberget meast ien fan trije bedoelingen, en allinnich jo kinne kieze. As de tunnel it hiele blok nedich hat, skriuw 172.20.128.0/20, it kanonike netwurkadres. As de tunnel allinnich it 130-segmint nedich hat, wie it masker ferkeard en is 172.20.130.0/24 de earlike foarm. As ien masine it doel is, is in IPv4-hostrûte /32 en der is gjin maskerrekkenkwize by belutsen.

Elk fan dy jout in oare hoemannichte ferkear tastien, en dat is de echte reden om it masker net te ferbreedzjen oant de klacht ophâldt. In /16 akseptearret de line hast oeral en stjoert ferkear nei bestimmingsplakken dy't jo nea troch de tunnel rûtelet hawwe wollen. Skriuw it smelste foarheaksel dat by de bedoeling past, en befêstigje it dan tsjin de folgjende hop dy't jo ferwachtsje, net tsjin it stilte fan de parser.

Wêrom trochstjoeren nea de oplossing wie

In ôfwiisde rûte berikt nea it trochstjoerpaad, dus net.ipv4.ip_forward omskeakelje kin de útkomst net feroarje. Dy ynstelling is letter fan belang, as de host pakketten tusken ynterfaces trochjaan moat, en it oansette foar't de tabel goed is feroaret allinnich hokker stap de folgjende kear mislearret.

Twa oare dingen krije faak de skuld op itselde punt. De rûte kin akseptearre wurde en dochs ferlieze fan in mear spesifike rûte, en in firewallregel kin ferkear weismite nei in korrekte syktocht. Hâld de stadia apart: syntaksis, ynstallaasje, seleksje, filterjen. Wurkje op it ferkearde stadium fielt produktyf, om't elke feroaring iets opnij begjint.

Kontrolearje de ynstallearre rûte en it paad dat it wint

Sadree't de kliïnt de line akseptearret, sjoch wat it ynstallearre hat en hokker rûte de kernel kiest foar in fertsjintwurdigjend adres yn it blok. As it ynstallearre foarheaksel oars is as wat jo skreaunen, hat in normalisator foar jo hannele.

Freegje in lid-adres likegoed as ien bûten it blok, sadat de ferliking betsjuttingsfol is ynstee fan ien gerêststellende line:

ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10

De tredde fraach moat bûten de tunnel falle as jo foarheaksel goed is, en as dat net sa is, is de rûte dy't jo boud hawwe breder as jo tinke. Skriuw op wat it foarheaksel dekke moast foar't jo de folgjende ynstelling oanreitsje, want in rûte dy't parst en in paad dat wurket bliuwe aparte waarnimmingen.

Relatearre artikelen