Ինչու գրասենյակի տեղային ցանցում VPN հաճախորդը կորցնում է ամեն պատասխան
Գրասենյակի տեղային ցանցում և նույն ենթացանցի թունելում գտնվող նոթբուկը պատասխանում է սխալ ինտերֆեյսից։ Թույլ հակադարձ ուղու զտումը բացատրում է այս լռությունը։
Նոթբուկը Ethernet-ով նստած է գրասենյակի /24 ցանցում և միաժամանակ միանում է OpenVPN սերվերին, որը ապրում է նույն /24-ում։ Գործընկերը ping է անում թունելի հասցեին. հարցումը հստակ հասնում է, և ոչինչ հետ չի գալիս։ Թունելի մատյանը մաքուր է, և զննարկումը դեռ աշխատում է, ուստի թունելը սխալ կասկածյալն է։ IPv4 աղբյուրի ստուգումը ընդունող մեքենայում դեն է նետում փաթեթը, նախքան որևէ բան կկարդա այն։
Դեն նետելը տեղի է ունենում նախքան որևէ բան փաթեթը կկարդա
Աղբյուրի ստուգումը մեկ հարց է տալիս յուրաքանչյուր մուտքային փաթեթի մասին. եթե այս հոսթը պատասխաներ այդ աղբյուրին, արդյո՞ք պատասխանը դուրս կգար այն ինտերֆեյսով, որով փաթեթը հենց նոր եկավ։ Երբ պատասխանը ոչ է, միջուկը փաթեթը դեն է նետում ժամանելուն պես։ Ոչ սոքեթը, ոչ փոխանցման ուղին երբեք չեն տեսնում այն, և դրա համար թունելի վրա արված գրանցումը դեռ արձանագրում է հարցում, որը հավելվածը երբեք չի ստանում։
Այստեղ հաճախորդը իր թունելի վրա պահում է 10.66.0.9, և OpenVPN սերվերը պատասխանում է 192.168.80.10 հասցեով գրասենյակի նախածանցի ներսում։ 192.168.80.25 հասցեի գործընկերը ping է անում թունելի հասցեին, ուստի հարցումը անցնում է տեղային ցանցը, սերվերը ուղղորդում է այն թունելի մեջ, և այն հասնում է հաճախորդի թունելի ինտերֆեյսին՝ կրելով գրասենյակի աղբյուրի հասցե։ Այդ մեքենայի երթուղային աղյուսակում գրասենյակի նախածանցը պատկանում է Ethernet սարքին, ոչ թունելին։ Ստուգումը համեմատում է ժամանման ինտերֆեյսը երթուղու հետ, գտնում է անհամապատասխանություն և դեն նետում փաթեթը, ուստի գործընկերը տեսնում է ամբողջական կորուստ, մինչ երկու ծայրերը հաղորդում են առողջ թունելի մասին։
Հայելային ուղղությունն ունի նույն ձևը. երբ հաճախորդը սկսում է դեպի գրասենյակ, պատասխանները կարող են դեն նետվել գրասենյակի կողմում նույն պատճառով։ Միայն մեկ ուղղությամբ ստուգված ուղղումը սովորաբար վերադառնում է որպես երկրորդ տոմս։
Ապացուցեք գործող ռեժիմը նախքան որևէ sysctl-ի դիպչելը
Կարդացեք փաստացի արժեքները՝ փոխարենը վստահելով դիստրիբուտիվի լռելյայնին, որովհետև ինտերֆեյսի կարգավորումը որոշման միայն կեսն է։ Գործող ռեժիմը ինտերֆեյսի արժեքից և all արժեքից բարձրն է, ուստի թունելի ինտերֆեյսի զրոն ոչինչ չի նշանակում, քանի դեռ all-ը մեկ է։ Խիստ ռեժիմի որոշումը երթուղային որոշում է, ուստի գործարկեք այն որոնումը, որը գործարկում է միջուկը, և համեմատեք դրա պատասխանը այն ինտերֆեյսի հետ, որով փաթեթը իրականում եկել է։
tcpdump -ni tun0 icmp and host 192.168.80.25
ip route get 192.168.80.25
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.tun0.rp_filter
Այնուհետև կրկնեք ping-ը՝ հետևելով սխալների հաշվիչին։ Գրանցումն արդեն ցույց տված հարցումի կողքին աճող հաշվիչը այս դեն նետելու ստորագրությունն է, ոչ թե բացակայող երթուղու։ Միացրեք մարսյան փաթեթների մատյանը, քանի դեռ այնտեղ եք, որպեսզի միջուկը նշի այն աղբյուրը և ինտերֆեյսը, որը մերժել է։ Միասին նրանք բացառում են ծածկագիրը, հրդեպատը և բացակայող iroute-ը որպես բացատրություն։
Գրեք ելակետը նախքան որևէ բան փոխելը. երկու արժեքները, այն սարքը, որն ընտրել է որոնումը, և այն հաշվիչը, որին հետևել եք։ Հենց այդ գրառումն է ավելի ուշ ասում ձեզ՝ փոփոխությունը արեց այն, ինչ դուք մտածում եք։
Ինչ է իրականում ընդունում rp_filter-ի յուրաքանչյուր ռեժիմ
Միջուկը ցուցադրում է երեք արժեք յուրաքանչյուր ինտերֆեյսի համար, և դրանք մեկ կանոնի երեք երանգներ չեն։ Զրոն անջատում է ստուգումը։ Մեկը խիստ է և պահանջում է, որ աղբյուրը հետ ուղղորդվի ժամանման ինտերֆեյսով։ Երկուսը թույլ է և պահանջում է միայն, որ աղյուսակում գոյություն ունենա ինչ-որ երթուղի դեպի աղբյուրը՝ ուր էլ որ այն ուղղվի։
| Value | Name | Accepts | Still rejects |
|---|---|---|---|
| 0 | off | any source at all | nothing on this check |
| 1 | strict | a source routed back out the arrival interface | a source whose route points elsewhere |
| 2 | loose | a source with any route in the table | a source with no route at all |
Այստեղ կարևոր տողը թույլն է, և այն, ինչ այն դեռ մերժում է։ Կեղծ աղբյուրը, որը ուղղորդելի է ձեր աղյուսակում ամենուր, անցնում է, մինչդեռ ընդհանրապես երթուղի չունեցող աղբյուրը դեռ մերժվում է։ Նոթբուքի վրա սա նեղ զիջում է. երթուղիչի վրա, որը փոխանցում է այլ մարդկանց երթևեկությունը, այն լայն է։ Ռեժիմը պատկանում է հոսթին, ուստի նույն թիվը երկու տեղերում տարբեր կշիռ է կրում։
Թե որ տողն է պետք այս տոպոլոգիային, բխում է աղյուսակից, ոչ սովորությունից։ Փաթեթը օրինական է, և դրա աղբյուրը ուղղորդելի է, ուստի թույլը ընդունում է այն, իսկ խիստը՝ ոչ։ Ոչինչ այս դեպքում զրո չի պահանջում, և զրո ընտրելը կհեռացներ մի ստուգում, որն այստեղ ոչինչ չարժե։
Ընտրեք ամենափոքր փոփոխությունը, որը վերացնում է երկակիությունը
Թույլ ռեժիմը ամենափոքր հարմար փոփոխությունն է, և դա խստության իրական նվազեցում է, ոչ անվնաս անջատիչ։ Ավելի լավ տարբերակ կա ամեն անգամ, երբ տոպոլոգիան թույլ է տալիս. հեռացրեք համընկնումը, և երկակիությունը կվերանա։
Այնտեղ, որտեղ գրասենյակի նախածանցը պետք է միայն Ethernet-ով, հանեք այն երթուղիներից, որոնք քաշում է պրոֆիլը, և հասցեն դառնում է հասանելի մեկ ուղով։ Երբ երկու ուղիներն իսկապես պետք է գոյակցեն, ամրացրեք աղբյուրը և սարքը քաղաքականության կանոնով՝ փոխարենը թուլացնելով ստուգումը ամեն ինտերֆեյսի վրա։ Սա պահում է խիստ զտումը մեքենայի մնացած ամեն ինչի համար և փաստագրում է բացառությունը այնտեղ, որտեղ հաջորդ ինժեները կփնտրի այն։
Ինչ ուղի էլ ընտրեք, գրանցեք այն sysctl drop-in-ում, ոչ թե կենդանի հրամանում։ Սահմանեք all և default բանալիները միասին, որպեսզի վերամիացումը չկարողանա լռելյայն վերականգնել խիստ ռեժիմը։
# /etc/sysctl.d/99-rp-filter.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
sysctl --system
Ինչից է հրաժարվում թույլ ռեժիմը, և որտեղ
Թույլ ռեժիմը դեռ մերժում է աղբյուրը, որին ոչ մի երթուղի չէր հասնի, և դադարում է մերժել կեղծ աղբյուրը, որը պատահաբար ուղղորդելի է։ Նոթբուքի վրա սա նեղ զիջում է։ Սարքի վրա, որը փոխանցում է իրեն չպատկանող երթևեկություն, նույն ընտրությունը շատ ավելի լայն է։ Ուստի նույն կարգավորումը կրում է երկու խիստ տարբեր իմաստ՝ կախված նրանից, թե որտեղ է աշխատում։
Ստուգումը ամբողջությամբ անջատելը հոսթի վրա, որը փոխանցում է այլ մարդկանց երթևեկությունը, այն միակ ուղղումն է, որից պետք է խուսափել։ Զրոն դեն է նետում այն ստուգումը, որը թույլ ռեժիմը խնամքով պահում է։ Եթե հոսթը փոխանցում է ուրիշների համար, փոխարենը պաշտպանեք նախորդ բաժնի քաղաքականության կանոնի տարբերակը։
Թողեք նշում, որը նշում է երկու ինտերֆեյսները, համընկնող նախածանցը և այն ճշգրիտ փորձը, որը հիմա հաջողվում է։ Սա ավելի օգտակար է հաջորդ ինժեների համար, քան այն տողը, որ զտումը ճշգրտվել է։