ip rule વડે નીતિ-નિયમ ઉમેરો, અને તે લિંક જાય ત્યાં સુધી કામ કરે છે; તે ક્ષણે તે સરળ રીતે ગાયબ છે. કંઈ જોરથી નિષ્ફળ ગયું નહીં: કર્નલની સ્થિતિ બદલાઈ, અને કોઈ કન્ફિગરેશન માલિકને ખબર ન હતી કે નિયમ હોવો જોઈએ. ટકી રહેતા નિયમ અને ન ટકતા નિયમ વચ્ચેનો આખો ફરક આ જ છે. systemd-networkd ધરાવતા હોસ્ટ પર ઉકેલ એ છે કે નિયમને માલિક આપો, દરેક ફરી જોડાણ પછી આદેશ ફરી ન ચલાવો.

નિયમ ત્યારે જ હોય છે જ્યારે કોઈ તેનો માલિક હોય

કર્નલની રૂટિંગ નીતિ સ્થિતિ છે, કન્ફિગરેશન નહીં. તે ચાલુ સિસ્ટમમાં રહે છે, અને જે ઇન્ટરફેસ પર તે આધાર રાખે છે તેને તોડી પાડે તેવું કંઈ પણ તેને સાથે લઈ જઈ શકે. શેલ આદેશ તે સ્થિતિ બદલે છે અને ઇરાદાનો કોઈ રેકોર્ડ છોડતો નથી.

નેટવર્ક મેનેજરો ઊલટું કામ કરે છે: તેઓ કન્ફિગરેશન વાંચે છે, લાગુ કરે છે, અને લિંક ઘટના અગાઉની સ્થિતિને અમાન્ય કરે ત્યારે ફરી લાગુ કરે છે. તેમના કન્ફિગરેશનમાં જાહેર કરેલો નિયમ ફરી બને છે, જ્યારે તેમની બાજુમાં ઉમેરેલો નિયમ માલિક વગરનો બહારનો પદાર્થ છે.

આ ભેદનું networkd માં નામ છે, અને કંઈ પણ સક્રિય કરતાં પહેલાં તે વાંચવા જેવું છે. તાજેતરના સંસ્કરણોમાં બહારના નિયમો ડિફોલ્ટથી દૂર થાય છે, જે તેમને આશ્ચર્યમાં મૂકે છે જેઓ માનતા હતા કે તેમની હાથે કરેલી એન્ટ્રીઓ રહેશે.

કોઈ સેટિંગ પર ભરોસો કરતાં પહેલાં સંસ્કરણ વાંચો

માલિકી-વર્તન networkd.conf ના એક સેટિંગથી નિયંત્રિત થાય છે, અને તે સેટિંગ જૂનાં systemd સંસ્કરણોમાં નથી. તેની આસપાસ રચના કરતાં પહેલાં સ્થાપિત સંસ્કરણ તપાસો, કારણ કે જૂનો હોસ્ટ તમે વાંચો છો તે દસ્તાવેજોથી અલગ રીતે વર્તે છે.

બે મૂલ્યો મહત્વના છે. એક નક્કી કરે છે કે networkd કન્ફિગરેશનમાં જાહેર ન કરેલા નિયમો દૂર થાય છે કે નહીં, અને બીજું રૂટ માટે એ જ કરે છે. બંને નીતિની સામગ્રી નહીં, માલિકી વિશે છે, અને બંને વર્તમાન સંસ્કરણોમાં ડિફોલ્ટથી કડક વર્તન પસંદ કરે છે. તેમને વૈશ્વિક રીતે બંધ કરવાથી દરેક બહારનો નિયમ જીવંત રહે છે, જે એક ઇચ્છિત VPN નીતિ જાહેર કરવા કરતાં ઘણો મોટો નિર્ણય છે.

systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null

તે grep તમને કહે છે કે સ્થાનિક રીતે શું સેટ છે અને વેન્ડરનું ડિફોલ્ટ શું છે. ગેરહાજરી પણ માહિતી છે, કારણ કે તેનો અર્થ છે કે કમ્પાઇલ થયેલું ડિફોલ્ટ લાગુ પડે છે. ડિફોલ્ટ તમારી નોંધમાં લખો જેથી આગલી વ્યક્તિએ તે ફરી શોધવો ન પડે.

નિયમ અને તે જે ટેબલ તરફ ઇશારો કરે છે તે જાહેર કરો

.network ફાઇલમાંનો નિયમ એક ટેબલનું નામ આપે છે, અને નામ જે કરે છે તે આટલું જ છે. તે તે ટેબલની અંદરના રૂટ બનાવતો નથી, અને તે અર્થપૂર્ણ છે કે નહીં તે તપાસતો નથી. રૂટ વગર નિયમ જાહેર કરવાથી એવી નીતિ બને છે જે ટ્રાફિકને મેળવે છે અને પછી તેને પડતો મૂકે છે.

રૂટ એ જ ફાઇલમાં જાહેર કરો, પહોંચી શકાય તેવા આગલા હોપ અને સાચા ટેબલ સાથે. જાહેર કરેલા નિયમમાં અગ્રતા રાખો જેથી તે ક્રમબદ્ધ યાદીમાં તમે જ્યાં અપેક્ષા રાખો ત્યાં પડે. ખોટા ટેબલ પર સમય પહેલાં પહોંચતો નિયમ તમે સુધારવા માંગતા હતા તે સેવા કરતાં વધુ ટ્રાફિક બદલે છે. નીચેનો ટુકડો સંપૂર્ણ ફાઇલ નહીં, આકાર તરીકે વાંચો, કારણ કે ઇન્ટરફેસ માલિકી અને બાકીનું જોડાણ હજી હાજર હોવું જોઈએ.

[RoutingPolicyRule]
Family=ipv4
IPProtocol=tcp
SourcePort=443
Table=100
Priority=1000

[Route]
Destination=10.80.0.0/24
Gateway=10.80.0.1
Table=100

પછી ફરી લોડ કરો અને ફાઇલને બદલે કર્નલની સ્થિતિ વાંચો. સ્વચ્છ રીતે પાર્સ થયેલું કન્ફિગરેશન પણ તમે ધાર્યું ન હોય તેવો નિયમ બનાવી શકે છે, અને બંને દૃશ્યો ત્યારે જ મળે છે જ્યારે જાહેરાત પૂરી હતી.

ઇન્ટરફેસ માટે એક જ માલિક પસંદ કરો

એક ટનલ પર બે મેનેજર એવી લડાઈ ઊભી કરે છે જે બંનેમાં બગ જેવી લાગે. ચાલુ wg-quick સેટઅપને networkd માં આયાત કરવું ઉમેરો નહીં, સ્થળાંતર છે, અને બંને ચલાવવાથી ઇન્ટરફેસ અને તેના નિયમો બે માલિકો હેઠળ રહે છે.

સ્થળાંતર એક જ વારમાં કરો: જૂનું યુનિટ થોભાવો, નિષ્ક્રિય કરો, networkd માં ઇન્ટરફેસ અને તેના રૂટ જાહેર કરો, પછી ફરી લોડ કરો. જૂનું યુનિટ બૂટ વખતે પાછું ન આવી શકે તે તપાસો. રિબૂટ પછી ફરી સક્રિય થતું બાકી રહેલું યુનિટ તમે હમણાં જાહેર કરેલી સ્થિતિ પર લખે છે. નવું એક ફરી જોડાણ ટકી જાય ત્યાં સુધી જૂની કન્ફિગરેશન ફાઇલ રાખો, પછી તેને નિવૃત્ત કરો.

માર્કની માલિકીને પણ એટલી જ કાળજી જોઈએ: જો નિયમ ફાયરવોલ માર્ક સાથે મળે, તો કોઈએ તે માર્ક સેટ કરવો પડે. જે નિયમ એવા માર્કનો ઉલ્લેખ કરે જે કોઈ સેટ કરતું નથી, તે મૃત કન્ફિગરેશન છે જે જાણે જાણી જોઈને કરેલું લાગે.

જીવનચક્રની ઘટનાઓની તાલીમ લો

કન્ફિગરેશન ઘટનાઓ દરમિયાન તેના વર્તન જેટલું જ સારું છે. લિંક નીચે ઉતારો, ઉપર લાવો, સેવા ફરી ચાલુ કરો અને સરનામું નવું કરો. દરેક પછી નિયમોની યાદી અને ટેબલની સામગ્રી વાંચો.

sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd

ઇચ્છિત પરિણામ એ છે કે એ જ માલિકીવાળી નીતિ ફરી બને અને જૂની સ્થિતિ નિવૃત્ત થાય, જે દરેક ફરી જોડાણ પછી શેલ નિયમ ફરી ઉમેરવા કરતાં વધુ ટકાઉ છે. ફેરફાર-રેકોર્ડમાં એક લીટી રાખો જે નિયમની માલિક ફાઇલ અને તેને ટેકો આપતું સંસ્કરણ બતાવે. પછી આગલો ઇજનેર શેલ ઇતિહાસ ખોદ્યા વગર નીતિ શોધી શકે. જે નિયમનો કોઈ માલિક નથી તે ફરી ગુમાવવાનો નિયમ છે.

સંબંધિત લેખો