
నేను మూడు భౌగోళికంగా రిమోట్ అపార్ట్మెంట్లలో నెట్వర్క్లను కలపడం గురించి నా అనుభవాన్ని పంచుకోవాలనుకుంటున్నాను, వీటిలో ప్రతి ఒక్కటి ఓపెన్డబ్ల్యుఆర్టితో ఉన్న రౌటర్లను గేట్వేగా, ఒక సాధారణ నెట్వర్క్గా ఉపయోగిస్తుంది. సబ్నెట్ రూటింగ్తో L3 మరియు బ్రిడ్జింగ్తో L2 మధ్య నెట్వర్క్లను కలపడానికి ఒక పద్ధతిని ఎంచుకున్నప్పుడు, అన్ని నెట్వర్క్ నోడ్లు ఒకే సబ్నెట్లో ఉన్నప్పుడు, రెండవ పద్ధతికి ప్రాధాన్యత ఇవ్వబడింది, ఇది కాన్ఫిగర్ చేయడం చాలా కష్టం, కానీ ఎక్కువ అవకాశాలను అందిస్తుంది. వేక్-ఆన్-లాన్ మరియు DLNA సృష్టించబడుతున్న నెట్వర్క్లో టెక్నాలజీల పారదర్శక ఉపయోగం ప్రణాళిక చేయబడింది.
పార్ట్ 1: నేపథ్యం
ఈ పనిని అమలు చేయడానికి ఎంచుకున్న ప్రోటోకాల్ ప్రారంభంలో OpenVPNఎందుకంటే, మొదటిది, ఇది ఎలాంటి సమస్యలు లేకుండా బ్రిడ్జ్కు జోడించగల ట్యాప్ పరికరాన్ని సృష్టించగలదు, మరియు రెండవది, OpenVPN ఇది TCPకి మద్దతు ఇస్తుంది, ఇది కూడా ముఖ్యమైనదే, ఎందుకంటే ఏ అపార్ట్మెంట్కు ప్రత్యేకమైన IP చిరునామా లేదు. నేను STUNను ఉపయోగించలేకపోయాను, ఎందుకంటే నా ISP, ఏదో కారణం చేత, దాని నెట్వర్క్ల నుండి వచ్చే UDP కనెక్షన్లను బ్లాక్ చేస్తుంది. SSH ఉపయోగించి అద్దెకు తీసుకున్న VPSకు VPN సర్వర్ పోర్ట్ను ఫార్వార్డ్ చేయడానికి TCP నాకు వీలు కల్పించింది. డేటా డబుల్-ఎన్క్రిప్ట్ చేయబడినందున, ఈ విధానం గణనీయమైన ఓవర్హెడ్ను సృష్టించినప్పటికీ, మూడవ పక్షాలు దానిపై నియంత్రణ సాధించే ప్రమాదం ఉన్నందున నేను VPSను నా ప్రైవేట్ నెట్వర్క్లో విలీనం చేయాలనుకోలేదు. అందువల్ల, నా హోమ్ నెట్వర్క్లో అలాంటి పరికరం ఉండటం ఏమాత్రం ఇష్టం లేదు, కాబట్టి భద్రత కోసం గణనీయమైన ఓవర్హెడ్ను చెల్లించాలని నేను నిర్ణయించుకున్నాను.
సర్వర్ను అమర్చాలనుకున్న రౌటర్లో పోర్ట్ను ఫార్వార్డ్ చేయడానికి, నేను sshtunnel ప్రోగ్రామ్ను ఉపయోగించాను. దాని కాన్ఫిగరేషన్ వివరాల్లోకి నేను వెళ్లను—అది చాలా సులభం. రౌటర్ నుండి VPSకు TCP పోర్ట్ 1194ను ఫార్వార్డ్ చేయడమే దాని ఉద్దేశ్యం అని మాత్రమే నేను ప్రస్తావిస్తాను. ఆ తర్వాత, నేను సర్వర్ను కాన్ఫిగర్ చేశాను. OpenVPN br-lan బ్రిడ్జ్కి కనెక్ట్ చేయబడిన tap0 పరికరంలో, నా ల్యాప్టాప్ నుండి కొత్తగా సృష్టించిన సర్వర్కు కనెక్షన్ను పరీక్షించిన తర్వాత, పోర్ట్ ఫార్వార్డింగ్ ఆలోచన ఫలించిందని స్పష్టమైంది. భౌతికంగా రౌటర్ నెట్వర్క్లో భాగం కాకపోయినప్పటికీ, నా ల్యాప్టాప్ కూడా అందులో సభ్యురాలిగా మారింది.
ఇక చేయవలసిందిల్లా, ఐపీ చిరునామాలు ఒకదానితో ఒకటి విభేదించకుండా వేర్వేరు అపార్ట్మెంట్లలో వాటిని పంపిణీ చేసి, రౌటర్లను ఈ విధంగా కాన్ఫిగర్ చేయడమే. OpenVPN-క్లయింట్లు.
కింది రూటర్ IP చిరునామాలు మరియు DHCP సర్వర్ పరిధులు ఎంచుకోబడ్డాయి:
- 192.168.10.1 పరిధితో 192.168.10.2 - 192.168.10.80 సర్వర్ కోసం
- 192.168.10.100 పరిధితో 192.168.10.101 - 192.168.10.149 అపార్ట్మెంట్ నంబర్ 2లో రూటర్ కోసం
- 192.168.10.150 పరిధితో 192.168.10.151 - 192.168.10.199 అపార్ట్మెంట్ నంబర్ 3లో రూటర్ కోసం
ఈ చిరునామాలను క్లయింట్ రౌటర్లకు కేటాయించడం కూడా అవసరమైంది. OpenVPN-సర్వర్, దాని కాన్ఫిగరేషన్కు కింది లైన్ను జోడించడం ద్వారా:
ifconfig-pool-persist /etc/openvpn/ipp.txt 0మరియు క్రింది పంక్తులను /etc/openvpn/ipp.txt ఫైల్కు జోడించడం:
flat1_id 192.168.10.100
flat2_id 192.168.10.150
ఇక్కడ flat1_id మరియు flat2_id అనేవి కనెక్ట్ చేయడానికి సర్టిఫికేట్లను సృష్టించేటప్పుడు పేర్కొన్న పరికర పేర్లు. OpenVPN
తరువాత, రౌటర్లు కాన్ఫిగర్ చేయబడ్డాయి OpenVPN- క్లయింట్లు, రెండు వైపులా ఉన్న tap0 పరికరాలు br-lan బ్రిడ్జ్కు జోడించబడ్డాయి. ఈ దశలో, అంతా సవ్యంగానే ఉన్నట్లు అనిపించింది, ఎందుకంటే మూడు నెట్వర్క్లు ఒకదానికొకటి చూసుకోగలిగాయి మరియు ఒకే యూనిట్గా పనిచేయగలిగాయి. అయితే, ఒక ఇబ్బందికరమైన విషయం బయటపడింది: కొన్నిసార్లు పరికరాలు తప్పుడు రౌటర్ నుండి IP చిరునామాను పొందేవి, దానివల్ల అనేక పరిణామాలు ఎదురయ్యేవి. ఏదో కారణం చేత, అపార్ట్మెంట్లలో ఒకదానిలోని రౌటర్ DHCPDISCOVERకు సమయానికి స్పందించడంలో విఫలమైంది, మరియు ఆ పరికరం తప్పుడు చిరునామాను పొందింది. ప్రతి రౌటర్లోని tap0లో అటువంటి అభ్యర్థనలను ఫిల్టర్ చేయాలని నేను గ్రహించాను, కానీ తీరా చూస్తే, ఒక పరికరం బ్రిడ్జ్లో భాగంగా ఉంటే iptables దానితో పనిచేయదు, కాబట్టి నేను ebtablesను ఉపయోగించాల్సి వచ్చింది. దురదృష్టవశాత్తు, నా ఫర్మ్వేర్లో అది లేదు, కాబట్టి నేను ప్రతి పరికరానికి ఇమేజ్లను తిరిగి నిర్మించాల్సి వచ్చింది. ఇలా చేసి, ప్రతి రౌటర్లోని /etc/rc.localలో కింది లైన్లను జోడించిన తర్వాత, సమస్య పరిష్కరించబడింది:
ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ఈ కాన్ఫిగరేషన్ మూడు సంవత్సరాల పాటు కొనసాగింది.
భాగం 2: పరిచయం WireGuard
ఇటీవల, ఇంటర్నెట్లో దీని గురించి చర్చ పెరుగుతోంది WireGuardదాని కాన్ఫిగరేషన్ సౌలభ్యం, అధిక బదిలీ వేగం, తక్కువ పింగ్ మరియు పోల్చదగిన భద్రతను మెచ్చుకున్నాను. దాని గురించి అదనపు సమాచారం కోసం వెతకగా, అది బ్రిడ్జ్ మెంబర్ లేదా TCP ప్రోటోకాల్ సపోర్ట్ను కలిగి లేదని తెలిసింది, దీనివల్ల వేరే ప్రత్యామ్నాయం లేదని నేను నమ్మాను. OpenVPN నాకు ఇంకా ఆ విషయం బోధపడలేదు. అందుకే తెలుసుకోవడాన్ని వాయిదా వేశాను. WireGuard.
కొన్ని రోజుల క్రితం, ఐటీ రంగానికి సంబంధించిన వివిధ వర్గాలలో ఒక వార్త ఏదో ఒక విధంగా వ్యాపించింది. WireGuard చివరకు కెర్నల్లో చేర్చబడుతుంది Linuxవెర్షన్ 5.6 నుండి ప్రారంభించి, ఎప్పటిలాగే వార్తా కథనాలు ప్రశంసించబడ్డాయి. WireGuardమంచి పాతదాని స్థానంలో కొత్త మార్గాలను వెతకడంలో నేను మరోసారి మునిగిపోయాను. OpenVPNఈసారి నేను ఎదురుపడ్డాను . ఇది GREని ఉపయోగించి L3పై ఈథర్నెట్ సొరంగం సృష్టించడం గురించి మాట్లాడింది. ఈ వ్యాసం నాకు ఆశను కలిగించింది. UDP ప్రోటోకాల్తో ఏమి చేయాలో అస్పష్టంగానే ఉంది. UDP పోర్ట్ను ఫార్వార్డ్ చేయడానికి SSH టన్నెల్తో కలిపి సోకాట్ని ఉపయోగించడం గురించి కథనాలకు శోధన నన్ను దారితీసింది, అయినప్పటికీ, ఈ విధానం ఒకే కనెక్షన్ మోడ్లో మాత్రమే పనిచేస్తుందని, అంటే, అనేక VPN క్లయింట్ల పని అసాధ్యం అని వారు గుర్తించారు. నేను VPSలో VPN సర్వర్ను ఇన్స్టాల్ చేసి క్లయింట్ల కోసం GREని సెటప్ చేయాలనే ఆలోచనతో ముందుకు వచ్చాను, కానీ అది ముగిసినట్లుగా, GRE ఎన్క్రిప్షన్కు మద్దతు ఇవ్వదు, ఇది మూడవ పార్టీలు సర్వర్కు ప్రాప్యతను పొందినట్లయితే వాస్తవం దారి తీస్తుంది , నా నెట్వర్క్ల మధ్య ట్రాఫిక్ అంతా వారి చేతుల్లోనే ఉంటుంది, ఇది నాకు ఏమాత్రం సరిపోదు.
మరోసారి, ఈ క్రింది పథకాన్ని ఉపయోగించి VPN ద్వారా VPNని ఉపయోగించడం ద్వారా పునరావృత గుప్తీకరణకు అనుకూలంగా నిర్ణయం తీసుకోబడింది:
స్థాయి 1 VPN:
VP లను ఇది సర్వర్ అంతర్గత చిరునామా 192.168.30.1తో
కుమారి ఇది క్లయింట్ అంతర్గత చిరునామాతో VPS 192.168.30.2
MK2 ఇది క్లయింట్ అంతర్గత చిరునామాతో VPS 192.168.30.3
MK3 ఇది క్లయింట్ అంతర్గత చిరునామాతో VPS 192.168.30.4
రెండవ స్థాయి VPN:
కుమారి ఇది సర్వర్ బాహ్య చిరునామా 192.168.30.2 మరియు అంతర్గత 192.168.31.1తో
MK2 ఇది క్లయింట్ కుమారి 192.168.30.2 చిరునామాతో మరియు అంతర్గత IP 192.168.31.2 ఉంది
MK3 ఇది క్లయింట్ కుమారి 192.168.30.2 చిరునామాతో మరియు అంతర్గత IP 192.168.31.3 ఉంది
* కుమారి - అపార్ట్మెంట్ 1లో రూటర్-సర్వర్, MK2 - అపార్ట్మెంట్ 2 లో రూటర్, MK3 - అపార్ట్మెంట్ 3 లో రూటర్
* పరికర కాన్ఫిగరేషన్లు కథనం చివర స్పాయిలర్లో ప్రచురించబడతాయి.
కాబట్టి, నెట్వర్క్ నోడ్లు 192.168.31.0/24 మధ్య పింగ్లు నడుస్తున్నాయి, ఇది GRE టన్నెల్ను సెటప్ చేయడానికి వెళ్లవలసిన సమయం. దీనికి ముందు, రౌటర్లకు ప్రాప్యతను కోల్పోకుండా ఉండటానికి, పోర్ట్ 22ని VPSకి ఫార్వార్డ్ చేయడానికి SSH టన్నెల్లను సెటప్ చేయడం విలువైనది, ఉదాహరణకు, అపార్ట్మెంట్ 10022 నుండి రౌటర్ VPS యొక్క పోర్ట్ 2లో అందుబాటులో ఉంటుంది మరియు అపార్ట్మెంట్ 11122 నుండి రౌటర్ పోర్ట్ 3 అపార్ట్మెంట్ XNUMX నుండి రూటర్లో అందుబాటులో ఉంటుంది. అదే sshtunnelని ఉపయోగించి ఫార్వార్డింగ్ని కాన్ఫిగర్ చేయడం ఉత్తమం, ఎందుకంటే అది విఫలమైతే సొరంగంను పునరుద్ధరిస్తుంది.
సొరంగం కాన్ఫిగర్ చేయబడింది, మీరు ఫార్వార్డ్ చేసిన పోర్ట్ ద్వారా SSHకి కనెక్ట్ చేయవచ్చు:
ssh root@МОЙ_VPS -p 10022తరువాత మీరు నిలిపివేయాలి OpenVPN:
/etc/init.d/openvpn stopఇప్పుడు అపార్ట్మెంట్ 2 నుండి రూటర్లో GRE టన్నెల్ని సెటప్ చేద్దాం:
ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set grelan0 up
మరియు వంతెనకు సృష్టించిన ఇంటర్ఫేస్ను జోడించండి:
brctl addif br-lan grelan0
సర్వర్ రూటర్లో ఇదే విధానాన్ని అమలు చేద్దాం:
ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set grelan0 up
మరియు వంతెనకు సృష్టించిన ఇంటర్ఫేస్ను కూడా జోడించండి:
brctl addif br-lan grelan0
ఈ క్షణం నుండి, పింగ్లు విజయవంతంగా కొత్త నెట్వర్క్కి వెళ్లడం ప్రారంభిస్తాయి మరియు నేను సంతృప్తితో కాఫీ తాగడానికి వెళ్తాను. అప్పుడు, లైన్ యొక్క మరొక చివరలో నెట్వర్క్ ఎలా పని చేస్తుందో విశ్లేషించడానికి, నేను అపార్ట్మెంట్ 2లోని కంప్యూటర్లలో ఒకదానిలోకి SSH చేయడానికి ప్రయత్నిస్తాను, అయితే పాస్వర్డ్ కోసం ప్రాంప్ట్ చేయకుండా ssh క్లయింట్ స్తంభింపజేస్తుంది. నేను పోర్ట్ 22లో టెల్నెట్ ద్వారా ఈ కంప్యూటర్కు కనెక్ట్ చేయడానికి ప్రయత్నిస్తున్నాను మరియు కనెక్షన్ ఏర్పాటు చేయబడిందని, SSH సర్వర్ ప్రతిస్పందిస్తోందని నేను అర్థం చేసుకోగలిగే లైన్ని నేను చూస్తున్నాను, కానీ కొన్ని కారణాల వల్ల అది నన్ను లాగిన్ చేయమని ప్రాంప్ట్ చేయలేదు లో
$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1
నేను VNC ద్వారా దానికి కనెక్ట్ చేసి బ్లాక్ స్క్రీన్ని చూడటానికి ప్రయత్నిస్తున్నాను. రిమోట్ కంప్యూటర్తో సమస్య ఉందని నేను నన్ను ఒప్పించాను, ఎందుకంటే నేను అంతర్గత చిరునామాను ఉపయోగించి ఈ అపార్ట్మెంట్ నుండి రౌటర్కి సులభంగా కనెక్ట్ చేయగలను. అయితే, నేను రౌటర్ ద్వారా ఈ కంప్యూటర్ యొక్క SSHకి కనెక్ట్ చేయాలని నిర్ణయించుకున్నాను మరియు కనెక్షన్ విజయవంతమైందని మరియు రిమోట్ కంప్యూటర్ చాలా సాధారణంగా పని చేస్తుందని చూసి ఆశ్చర్యపోయాను, కానీ అది నా కంప్యూటర్కు కూడా కనెక్ట్ కాలేదు.
నేను గ్రెలాన్0 పరికరాన్ని బ్రిడ్జ్ నుండి తీసివేసి దాన్ని రన్ చేస్తాను OpenVPN అపార్ట్మెంట్ 2లోని రౌటర్లో, నెట్వర్క్ మళ్లీ సరిగ్గా పనిచేస్తోందని మరియు కనెక్షన్లు డ్రాప్ అవ్వడం లేదని నేను నిర్ధారించుకున్నాను. వెతకగా, ఇలాంటి సమస్యల గురించే ప్రజలు ఫిర్యాదు చేస్తున్న ఫోరమ్లు నాకు కనిపించాయి, అక్కడ వారికి MTUను పెంచమని సలహా ఇవ్వబడింది. చెప్పడమే ఆలస్యం, ఆ పని చేసేశాను. అయితే, gretap పరికరాల కోసం MTUను తగినంత ఎక్కువగా—7000—సెట్ చేసే వరకు, నేను TCP కనెక్షన్లు డ్రాప్ అవ్వడం లేదా తక్కువ ట్రాన్స్ఫర్ వేగాన్ని ఎదుర్కొన్నాను. gretap కోసం అధిక MTU కారణంగా, కనెక్షన్ల కోసం MTU... WireGuard మొదటి మరియు రెండవ స్థాయిలను వరుసగా 8000 మరియు 7500 గా నిర్ణయించారు.
నేను అపార్ట్మెంట్ 3 నుండి రౌటర్లో ఇదే విధమైన సెటప్ను చేసాను, ఒకే తేడా ఏమిటంటే grelan1 అనే రెండవ గ్రేటాప్ ఇంటర్ఫేస్ సర్వర్ రౌటర్కు జోడించబడింది, అది కూడా br-lan వంతెనకు జోడించబడింది.
అంతా పని చేస్తోంది. ఇప్పుడు మీరు గ్రెటాప్ అసెంబ్లీని స్టార్టప్లో ఉంచవచ్చు. దీని కొరకు:
నేను అపార్ట్మెంట్ 2లోని రూటర్లో /etc/rc.localలో ఈ లైన్లను ఉంచాను:
ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0
ఇది అపార్ట్మెంట్ 3లోని రూటర్లో /etc/rc.localకి జోడించబడింది:
ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0
మరియు సర్వర్ రూటర్లో:
ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0
ip link add grelan1 type gretap remote 192.168.31.3 local 192.168.31.1
ip link set dev grelan1 mtu 7000
ip link set grelan1 up
brctl addif br-lan grelan1
క్లయింట్ రౌటర్లను రీబూట్ చేసిన తర్వాత, అవి ఏదో కారణం చేత సర్వర్కు కనెక్ట్ కావడం లేదని నేను కనుగొన్నాను. వాటి SSHకి కనెక్ట్ అయిన తర్వాత (అదృష్టవశాత్తూ, నేను దీనికోసం ముందే sshtunnelను కాన్ఫిగర్ చేసి ఉన్నాను), నేను కనుగొన్నది ఏమిటంటే WireGuard ఏదో కారణం చేత, ఇది ఎండ్పాయింట్ కోసం ఒక రూట్ను సృష్టిస్తుంది, కానీ అది తప్పుగా ఉంది. ఉదాహరణకు, 192.168.30.2 కోసం, రూట్ టేబుల్ pppoe-wan ఇంటర్ఫేస్ ద్వారా, అంటే ఇంటర్నెట్ ద్వారా ఒక రూట్ను నిర్దేశించింది, అయితే దానికి వెళ్లే రూట్ wg0 ఇంటర్ఫేస్ ద్వారా మళ్లించబడి ఉండాలి. ఈ రూట్ను తొలగించిన తర్వాత, కనెక్షన్ పునరుద్ధరించబడింది. దీన్ని బలవంతంగా ఎలా చేయాలో సూచనలు ఎక్కడైనా దొరుకుతాయా? WireGuard నేను ఈ రూట్లను సృష్టించకుండా ఉండలేకపోయాను. అంతేకాకుండా, ఇది OpenWRT యొక్క ఫీచరా లేక మరేదైనానా అనేది కూడా నాకు అర్థం కాలేదు. WireGuardసమస్యను కనుక్కోవడానికి ఎక్కువ సమయం వెచ్చించకుండా, నేను రెండు రౌటర్లలోని టైమర్-లూప్ స్క్రిప్ట్లో ఈ రూట్ను తొలగించే ఒక లైన్ను జోడించాను:
route del 192.168.30.2
సారాంశం
పూర్తి తిరస్కరణ OpenVPN నేను ఇంకా దీన్ని సాధించలేదు, ఎందుకంటే నేను అప్పుడప్పుడు ల్యాప్టాప్ లేదా ఫోన్ నుండి కొత్త నెట్వర్క్కు కనెక్ట్ అవ్వాల్సి వస్తుంది, మరియు వాటిపై గ్రేటాప్ పరికరాన్ని సెటప్ చేయడం సాధారణంగా అసాధ్యం. అయినప్పటికీ, అపార్ట్మెంట్ల మధ్య డేటా బదిలీ వేగంలో నేను ఒక ప్రయోజనాన్ని పొందాను, మరియు ఉదాహరణకు, VNCని ఉపయోగించడం ఇప్పుడు ఇబ్బంది లేకుండా ఉంది. పింగ్ కొద్దిగా తగ్గింది కానీ మరింత స్థిరంగా మారింది:
ఉపయోగించి OpenVPN:
[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=133 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=125 ms
--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19006ms
rtt min/avg/max/mdev = 124.722/126.152/136.907/3.065 ms
ఉపయోగించి WireGuard:
[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=124 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=124 ms
--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19003ms
rtt min/avg/max/mdev = 123.954/124.423/126.708/0.675 ms
ఇది VPSకి అధిక పింగ్ ద్వారా ఎక్కువగా ప్రభావితమవుతుంది, ఇది దాదాపు 61.5 ms.
అయితే, వేగం గణనీయంగా పెరిగింది. కాబట్టి, రౌటర్-సర్వర్ ఉన్న అపార్ట్మెంట్లో నాకు 30 Mbps ఇంటర్నెట్ కనెక్షన్ వేగం ఉండగా, ఇతర అపార్ట్మెంట్లలో అది 5 Mbpsగా ఉంది. అంతేకాకుండా, వినియోగ సమయంలో OpenVPN iperf రీడింగ్ల ప్రకారం, నేను నెట్వర్క్ల మధ్య 3,8 Mbps కంటే ఎక్కువ డేటా బదిలీ వేగాన్ని సాధించలేకపోయాను, అయితే WireGuard దానిని అదే 5 Mbit/sec కు పెంచారు.
ఆకృతీకరణ WireGuard VPSలో[Interface]
Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>
[పీర్]
పబ్లిక్ కీ = <VPN_1_MS_PUBLIC_KEY>
అనుమతించబడిన IPలు = 192.168.30.2/32
[పీర్]
పబ్లిక్ కీ = <VPN_2_MK2_PUBLIC_KEY>
అనుమతించబడిన IPలు = 192.168.30.3/32
[పీర్]
పబ్లిక్ కీ = <VPN_2_MK3_PUBLIC_KEY>
అనుమతించబడిన IPలు = 192.168.30.4/32
ఆకృతీకరణ WireGuard MSలో (/etc/config/networkకు జోడించబడింది)
#VPN первого уровня - клиент
config interface 'wg0'
option proto 'wireguard'
list addresses '192.168.30.2/24'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МС'
option auto '1'
option mtu '8000'
config wireguard_wg0
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
option endpoint_port '51820'
option route_allowed_ips '1'
option persistent_keepalive '25'
list allowed_ips '192.168.30.0/24'
option endpoint_host 'IP_АДРЕС_VPS'
#VPN второго уровня - сервер
config interface 'wg1'
option proto 'wireguard'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
option listen_port '51821'
list addresses '192.168.31.1/24'
option auto '1'
option mtu '7500'
config wireguard_wg1
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
list allowed_ips '192.168.31.2'
config wireguard_wg1ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
list allowed_ips '192.168.31.3'
ఆకృతీకరణ WireGuard MK2లో (/etc/config/networkకు జోడించబడింది)
#VPN первого уровня - клиент
config interface 'wg0'
option proto 'wireguard'
list addresses '192.168.30.3/24'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК2'
option auto '1'
option mtu '8000'
config wireguard_wg0
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
option endpoint_port '51820'
option persistent_keepalive '25'
list allowed_ips '192.168.30.0/24'
option endpoint_host 'IP_АДРЕС_VPS'
#VPN второго уровня - клиент
config interface 'wg1'
option proto 'wireguard'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
list addresses '192.168.31.2/24'
option auto '1'
option listen_port '51821'
option mtu '7500'
config wireguard_wg1
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
option endpoint_host '192.168.30.2'
option endpoint_port '51821'
option persistent_keepalive '25'
list allowed_ips '192.168.31.0/24'
ఆకృతీకరణ WireGuard MK3లో (/etc/config/networkకు జోడించబడింది)
#VPN первого уровня - клиент
config interface 'wg0'
option proto 'wireguard'
list addresses '192.168.30.4/24'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК3'
option auto '1'
option mtu '8000'
config wireguard_wg0
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
option endpoint_port '51820'
option persistent_keepalive '25'
list allowed_ips '192.168.30.0/24'
option endpoint_host 'IP_АДРЕС_VPS'
#VPN второго уровня - клиент
config interface 'wg1'
option proto 'wireguard'
option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
list addresses '192.168.31.3/24'
option auto '1'
option listen_port '51821'
option mtu '7500'
config wireguard_wg1
option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
option endpoint_host '192.168.30.2'
option endpoint_port '51821'
option persistent_keepalive '25'
list allowed_ips '192.168.31.0/24'
రెండవ స్థాయి VPN కోసం వివరించిన కాన్ఫిగరేషన్లలో, నేను క్లయింట్లకు సూచిస్తాను WireGuard పోర్ట్ 51821. క్లయింట్ ఏదైనా ఖాళీగా ఉన్న, ప్రత్యేకాధికారం లేని పోర్ట్ నుండి కనెక్షన్ను ఏర్పాటు చేసుకుంటుంది కాబట్టి ఇది అవసరం కాకూడదు, కానీ పోర్ట్ 51821కి వచ్చే UDP కనెక్షన్లు మినహా, అన్ని రౌటర్ల యొక్క wg0 ఇంటర్ఫేస్లపైకి వచ్చే అన్ని కనెక్షన్లను నిరాకరించడానికి వీలుగా నేను దీన్ని ఈ విధంగా చేశాను.
వ్యాసం ఎవరికైనా ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను.
PS అలాగే, నా నెట్వర్క్లో కొత్త పరికరం కనిపించినప్పుడు WirePusher అప్లికేషన్లో నా ఫోన్కి పుష్ నోటిఫికేషన్ను పంపే నా స్క్రిప్ట్ను నేను షేర్ చేయాలనుకుంటున్నాను. స్క్రిప్ట్కి లింక్ ఇక్కడ ఉంది: .
నవీకరించు: ఆకృతీకరణ OpenVPN- సర్వర్లు మరియు క్లయింట్లు
OpenVPN- సర్వర్
client-to-client
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn-server.crt
dh /etc/openvpn/server/dh.pem
key /etc/openvpn/server/vpn-server.key
dev tap
ifconfig-pool-persist /etc/openvpn/ipp.txt 0
keepalive 10 60
proto tcp4
server-bridge 192.168.10.1 255.255.255.0 192.168.10.80 192.168.10.254
status /var/log/openvpn-status.log
verb 3
comp-lzoOpenVPN-క్లయింట్
client
tls-client
dev tap
proto tcp
remote VPS_IP 1194 # Change to your router's External IP
resolv-retry infinite
nobind
ca client/ca.crt
cert client/client.crt
key client/client.key
dh client/dh.pem
comp-lzo
persist-tun
persist-key
verb 3 నేను సర్టిఫికేట్లను రూపొందించడానికి ఈజీ-ఆర్ఎస్ఏని ఉపయోగించాను
మూలం: www.habr.com
