wg-quick ఇంటర్ఫేస్ను ఆపినప్పుడు wg0.conf ను మళ్లీ ఎందుకు రాస్తుంది
SaveConfig అనేది ఆపివేసేటప్పుడు సేవ్ చేయడం, నేపథ్య సింక్ కాదు. టన్నెల్ పని చేస్తున్నప్పుడు ఫైల్ను సవరించండి, మళ్లీ ప్రారంభించడం పాత స్థితిని దానిపై రాయగలదు.
మీరు /etc/wireguard/wg0.conf కు ఒక peer జోడిస్తారు, systemctl restart wg-quick@wg0 ను అమలు చేస్తారు, మళ్లీ చూసినప్పుడు peer ఫైల్ నుండి మాయమైంది. ఏదీ ఏదీ పాడు చేయలేదు. మళ్లీ ప్రారంభించడం అనేది ఆపివేత తర్వాత ప్రారంభం, మరియు ఆపివేత దశ మీరు ఇప్పుడే సవరించిన ఫైల్పై ప్రస్తుత రన్టైమ్ స్థితిని రాయగలదు. బాధ్యతాయుత సెట్టింగ్ మీరు సవరిస్తున్న అదే ఫైల్లో ఉంటుంది, అందుకే ఈ లూప్ మొదటిసారి ఎదురైనప్పుడు ఇంత గందరగోళంగా ఉంటుంది.
రెండు స్థితులు, ఒక ఫైల్ మరియు ఆపివేసేటప్పుడు సేవ్
WireGuard యొక్క రన్టైమ్ స్థితి మరియు wg-quick కాన్ఫిగరేషన్ ఫైల్ సంబంధించినవి కానీ భిన్నమైనవి. ఫైల్ ఇన్పుట్: wg-quick దాన్ని చదివి, ఇంటర్ఫేస్ను సృష్టించి, చిరునామాలు మరియు మార్గాలను సెట్ చేసి peerలను కాన్ఫిగర్ చేస్తుంది. కెర్నల్ పరికరం జీవంతమైన వస్తువు, మరియు wg తో చేసిన అల్పస్థాయి మార్పులు ఎప్పటికీ తమంతట తాము తిరిగి రాయబడవు.
ఒక దిశను మినహాయించి. ఇంటర్ఫేస్ విభాగంలో SaveConfig = true ఉన్నప్పుడు, wg-quick ఇంటర్ఫేస్ను దించడంలో భాగంగా జీవంతమైన కాన్ఫిగరేషన్ను ఫైల్లో సేవ్ చేస్తుంది. wg-quick మాన్యువల్ సరిగ్గా దీని గురించి హెచ్చరిస్తుంది: ఇంటర్ఫేస్ పని చేస్తున్నప్పుడు ఫైల్కు చేసిన మార్పులు అది తీసివేయబడినప్పుడు పైన రాయబడవచ్చు. ఇది ఆపివేసేటప్పుడు సేవ్ చేయడం, నేపథ్య టైమర్ కాదు, కాబట్టి ఏదో ఇంటర్ఫేస్ను ఆపినప్పుడు మాత్రమే ఇది పని చేస్తుంది.
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
పట్టికను క్రమం గురించిన హెచ్చరికగా చదవండి. ఈ రంగంలో ప్రతి ఆకస్మిక నష్టం సేవ్ తర్వాత కాదు, దానికి ముందు జరిగిన సవరణ నుండి వస్తుంది.
మొదట ఆపండి, రెండవది సవరించండి, చివరగా ప్రారంభించండి
ఫైల్ మీ సత్యానికి మూలం అయితే, ఆశతో కాదు, నిర్మాణంతో ఫైల్ను అధికారికం చేయండి. ఇంటర్ఫేస్ను దించి, అది వెళ్లిపోయిందని నిర్ధారించి, తర్వాత సవరించి, తర్వాత దాన్ని మళ్లీ పైకి తీసుకురండి. నియమం సులభం: సేవ్ ఇంకా అమలు కాగలిగేంత వరకు ఎలాంటి సవరణ ఉండకూడదు.
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
బ్యాకప్ లైన్ కేవలం ఆచారం కాదు. టన్నెల్ ఈ మెషీన్కు చేరుకునే మీ మార్గం అయితే, దించే దశ మీ సెషన్ను ముగించవచ్చు, మరియు డిస్క్లోని కాపీతో పాటు కన్సోల్ లేదా బ్యాండ్ వెలుపలి మార్గం మాత్రమే పని చేసే ఏకైక రివర్సల్. రెండవ లైన్ను నమ్మే ముందు తనిఖీ చేయండి: నిశ్శబ్దంగా విఫలమయ్యే స్క్రిప్ట్లో పాత ఇంటర్ఫేస్ పేరే ప్రజలు ఇంకా సజీవంగా ఉన్న ఫైల్ను సవరించే విధానం.
సాధారణ దింపుకు ముందు SaveConfig = false సెట్ చేయడం మరొక ఆమోదయోగ్యమైన మార్గం, మరియు అది wg-quick నిజంగా చదివే ఫైల్లోనే చేయాలి. అది ఆ ఒక స్వయంచాలక సేవ్ను నిరోధిస్తుంది. అది ప్రత్యేక NetworkManager ప్రొఫైల్, రౌటర్ ఎగుమతి లేదా కంటైనర్ ఎంట్రీపాయింట్ మీ సవరణలను మళ్లీ లోడ్ చేయదు, ఎందుకంటే ఆ నిర్వాహకులు ఈ ఫైల్ను అసలు చదవరు.
ఇంటర్ఫేస్ను చిరగకుండా peer మార్పులను వర్తించండి
ప్రతి సవరణకు అంతరాయం అవసరం లేదు. ఫైల్ను కాన్ఫిగరేషన్గా మార్చి సింక్ చేయడం ద్వారా నడుస్తున్న ఇంటర్ఫేస్పై peer-స్థాయి మార్పులను వర్తించవచ్చు, ఇది దించే దశను పూర్తిగా నివారిస్తుంది మరియు అందువల్ల సేవ్ను కూడా నివారిస్తుంది:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip దశ ముఖ్యం. ఇది wg-quick కు మాత్రమే చెందిన కీలను తీసివేసి ఫైల్ను ముద్రిస్తుంది, తద్వారా చిరునామాలు, DNS మరియు రూటింగ్ సూచనలు వాటిని అర్థం చేసుకోని సాధనంలోకి వెళ్లవు. తర్వాత సింక్ ఇంటర్ఫేస్ను మళ్లీ సృష్టించకుండా peerలు మరియు కీలను సజీవ పరికరంపై వర్తిస్తుంది, కాబట్టి ఉన్న సెషన్లు మరియు మార్గాలు నిలిచి ఉంటాయి.
పరిమితుల గురించి ఖచ్చితంగా ఉండండి. peer సింక్ చేయడం ఇంటర్ఫేస్ చిరునామాను, wg-quick జోడించిన మార్గాలను లేదా రిజాల్వర్ కాన్ఫిగరేషన్ను మార్చదు, ఎందుకంటే వాటిలో ఏదీ WireGuard పరికరానికి చెందినది కాదు. AllowedIPs కు సబ్నెట్ జోడించి కెర్నల్ దాన్ని రూట్ చేస్తుందని ఆశించడం సాంప్రదాయిక తప్పు పఠనం; మార్గాన్ని పైకి లేపేటప్పుడు wg-quick లేదా మీరే జోడించాలి.
ఏదైనా సవరించే ముందు ఇంటర్ఫేస్ ఎవరిదో తనిఖీ చేయండి
కాన్ఫిగరేషన్ సిస్టమ్ నిర్వహించే డెస్క్టాప్ లేదా సర్వర్లో, ఫైల్ ఇన్పుట్ కాకుండా అవుట్పుట్ కావచ్చు. NetworkManager కనెక్షన్, రౌటర్ రూపొందించిన ప్రొఫైల్ లేదా కంటైనర్ స్టార్టప్ స్క్రిప్ట్ అన్నీ ఒకే ఇంటర్ఫేస్ పేరును కలిగి ఉండవచ్చు, ఆ సందర్భంలో లోపరహిత wg-quick క్రమం కూడా తప్పు వస్తువునే సవరిస్తుంది.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
మూడవ ఆదేశం సజీవ కాన్ఫిగరేషన్ను ఫైల్ వలె అదే ఫార్మాట్లో, ప్రైవేట్ కీతో సహా ముద్రిస్తుంది, ఇది పోల్చడానికి ఉపయోగకరం మరియు టికెట్లో ప్రమాదకరం. అతికించే ముందు దాన్ని కప్పండి; మద్దతు థ్రెడ్లో ప్రైవేట్ కీ శాశ్వత రాజీ, టైపో కాదు.
సేవా యూనిట్ నిష్క్రియంగా ఉన్నా ఇంటర్ఫేస్ ఉన్నట్లయితే, వేరే ఏదో దాన్ని సృష్టించింది మరియు ఫైల్ అధికారికం కాదు. ఆ ఒక పరిశీలన ఏదీ చదవని ఫైల్ను సవరించే ఒక గంటను ఆదా చేస్తుంది.
తదుపరి పునఃప్రారంభాన్ని ధృవీకరించి, తర్వాత రివర్సల్ ఉంచండి
సరిదిద్దును నిజంగా నిరూపించే పరీక్ష రెండవ పునఃప్రారంభం, ఎందుకంటే మొదటిసారి విఫలమైనది ఆ క్రమమే. peer దాని నుండి బయటపడుతుందని మరియు సజీవ కాన్ఫిగరేషన్ ఇంకా డిస్క్లో ఉన్నదానితో సరిపోలుతుందని నిర్ధారించండి:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
పునఃప్రారంభాన్ని రెండుసార్లు అమలు చేయండి. ఒకసారి శుభ్రంగా దాటడం అదృష్టం కావచ్చు: మొదటి పునఃప్రారంభం ఇంకా సేవ్ కాని రన్టైమ్ మార్పును వినియోగించవచ్చు, కాబట్టి రెండవది మొదటి చివరలో ఫైల్ మరియు రన్టైమ్ అంగీకరించాయని మీకు చెప్పేది.
ప్రక్రియ ప్రారంభం నుండి రెట్టింపు పునఃప్రారంభం పూర్తయ్యే వరకు బ్యాకప్ను ఉంచి, తర్వాత దాన్ని తొలగించండి లేదా కాన్ఫిగరేషన్ డైరెక్టరీ నుండి బయటకు తరలించండి. నిజమైన ఫైల్ పక్కన మిగిలిన wg0.conf.bak wg-quick కు హానికరం కాదు మరియు తదుపరి వ్యక్తికి గందరగోళం కలిగిస్తుంది, అతను చివరికి తప్పుదాన్ని సవరిస్తాడు.