మనలో కొందరు ఒక కారణం లేదా మరొక కారణంగా VPN లేకుండా ఇంటర్నెట్ని ఉపయోగించరు: ఎవరికైనా ప్రత్యేక IP అవసరం, మరియు ప్రొవైడర్ నుండి చిరునామాను కొనుగోలు చేయడం కంటే రెండు IPలతో VPSని కొనుగోలు చేయడం సులభం మరియు చౌకైనది, ఎవరైనా అన్ని వెబ్సైట్లను యాక్సెస్ చేయాలనుకుంటున్నారు. , మరియు రష్యన్ ఫెడరేషన్ యొక్క భూభాగంలో అనుమతించబడిన వారికి మాత్రమే కాకుండా, ఇతరులకు IPv6 అవసరం, కానీ ప్రొవైడర్ దానిని అందించదు...
చాలా తరచుగా, ఒక నిర్దిష్ట క్షణంలో ఉపయోగించబడుతున్న పరికరంలోనే VPN కనెక్షన్ స్థాపించబడింది, ఇది మీకు ఒక కంప్యూటర్ మరియు ఒక ఫోన్ మాత్రమే ఉంటే మరియు వాటిని ఒకే సమయంలో అరుదుగా ఉపయోగిస్తే అర్ధమే. మీ హోమ్ నెట్వర్క్లో చాలా పరికరాలు ఉంటే, లేదా, ఉదాహరణకు, VPN కాన్ఫిగర్ చేయలేని వాటిలో కొన్ని ఉంటే, ప్రతి పరికరాన్ని విడిగా సెటప్ చేయడం గురించి ఆలోచించకుండా నేరుగా హోమ్ రౌటర్లో సొరంగం సృష్టించడం మరింత సౌకర్యవంతంగా ఉంటుంది. .
మీరు ఎప్పుడైనా మీ రౌటర్లో OpenVPNని ఇన్స్టాల్ చేసి ఉంటే, అది ఎంత వేగంగా పని చేస్తుందో మీరు బహుశా ఆశ్చర్యానికి గురికావచ్చు. ఈ పని కోసం ప్రత్యేకంగా రూపొందించిన ప్రత్యేక చిప్కు రూటింగ్ మరియు NAT ఫంక్షన్లను బదిలీ చేయడం వల్ల చౌకైన రౌటర్ల SoC లు గిగాబిట్ ట్రాఫిక్ను ఎటువంటి సమస్యలు లేకుండా దాటుతాయి మరియు అటువంటి రౌటర్ల యొక్క ప్రధాన ప్రాసెసర్లు చాలా బలహీనంగా ఉన్నాయి. వాటిపై ఆచరణాత్మకంగా ఎటువంటి లోడ్ లేదు. ఈ రాజీ రౌటర్ యొక్క అధిక వేగాన్ని సాధించడానికి మరియు పూర్తయిన పరికరం యొక్క ధరను గణనీయంగా తగ్గించడానికి మిమ్మల్ని అనుమతిస్తుంది - శక్తివంతమైన ప్రాసెసర్లతో కూడిన రౌటర్లు చాలా రెట్లు ఎక్కువ ఖర్చు అవుతాయి మరియు ఇంటర్నెట్ను పంపిణీ చేయడానికి పెట్టెగా మాత్రమే కాకుండా, NAS, టొరెంట్గా కూడా ఉంచబడతాయి. డౌన్లోడ్ మరియు హోమ్ మల్టీమీడియా సిస్టమ్.
నా రూటర్, TP-Link TL-WDR4300, కొత్తది అని పిలవబడదు - మోడల్ 2012 మధ్యలో కనిపించింది మరియు 560 MHz MIPS32 74Kc ఆర్కిటెక్చర్ ప్రాసెసర్ను కలిగి ఉంది, దీని శక్తి 20-23 Mb/s గుప్తీకరించిన ట్రాఫిక్కు మాత్రమే సరిపోతుంది. OpenVPN ద్వారా, ఇది ప్రమాణాల ప్రకారం ఆధునిక ఇంటి ఇంటర్నెట్ వేగం చాలా తక్కువగా ఉంది.
ఎన్క్రిప్టెడ్ టన్నెల్ వేగాన్ని మనం ఎలా పెంచవచ్చు? నా రౌటర్ చాలా ఫంక్షనల్గా ఉంది, 3x3 MIMOకి మద్దతిస్తుంది మరియు సాధారణంగా బాగా పనిచేస్తుంది, నేను దీన్ని మార్చకూడదనుకుంటున్నాను.
10-మెగాబైట్ ఇంటర్నెట్ పేజీలను తయారు చేయడం, node.jsలో డెస్క్టాప్ అప్లికేషన్లను వ్రాయడం మరియు వాటిని 100-మెగాబైట్ ఫైల్లో ప్యాక్ చేయడం, ఆప్టిమైజేషన్కు బదులుగా కంప్యూటింగ్ శక్తిని పెంచడం ఇప్పుడు ఆచారం కాబట్టి, మేము ఏదైనా భయంకరమైన పని చేస్తాము - మేము VPN కనెక్షన్ని బదిలీ చేస్తాము ఉత్పాదక సింగిల్-బోర్డ్ “కంప్యూటర్” ఆరెంజ్ పై వన్, మేము ఇప్పటికే ఉన్న నెట్వర్క్ మరియు USB పోర్ట్లను తీసుకోకుండా రూటర్ కేస్లో ఇన్స్టాల్ చేస్తాము, కేవలం $9.99*!
* + డెలివరీ, + పన్నులు, + బీర్ కోసం, + మైక్రో SD.
OpenVPN
రౌటర్ యొక్క ప్రాసెసర్ను పూర్తిగా బలహీనంగా పిలవలేము - ఇది 128 Mb/s వేగంతో AES-1-CBC-SHA50 అల్గారిథమ్ని ఉపయోగించి డేటాను గుప్తీకరించగలదు మరియు హ్యాష్ చేయగలదు, ఇది OpenVPN ఎలా పని చేస్తుందో దాని కంటే గమనించదగ్గ వేగవంతమైనది మరియు ఆధునిక CHACHA20 స్ట్రీమ్ POLY1305 హాష్తో ఉన్న సాంకేతికలిపి సెకనుకు 130 మెగాబిట్లకు కూడా చేరుకుంటుంది! VPN టన్నెల్ వేగం ఎందుకు తక్కువగా ఉంది? ఇది వినియోగదారు స్థలం మరియు కెర్నల్ స్థలం మధ్య సందర్భ మార్పిడికి సంబంధించినది: OpenVPN ట్రాఫిక్ను గుప్తీకరిస్తుంది మరియు వినియోగదారు సందర్భంలో బాహ్య ప్రపంచంతో కమ్యూనికేట్ చేస్తుంది మరియు రూటింగ్ కూడా కెర్నల్ సందర్భంలో జరుగుతుంది. అందుకున్న లేదా ప్రసారం చేయబడిన ప్రతి ప్యాకెట్ కోసం ఆపరేటింగ్ సిస్టమ్ నిరంతరం ముందుకు వెనుకకు మారవలసి ఉంటుంది మరియు ఈ ఆపరేషన్ నెమ్మదిగా ఉంటుంది. ఈ సమస్య TUN/TAP డ్రైవర్ ద్వారా నడుస్తున్న అన్ని VPN అప్లికేషన్లలో అంతర్లీనంగా ఉంటుంది మరియు తక్కువ వేగం యొక్క సమస్య పేలవమైన OpenVPN ఆప్టిమైజేషన్ వల్ల ఏర్పడిందని చెప్పలేము (అయితే, తిరిగి పని చేయవలసిన స్థలాలు ఉన్నాయి). నా ల్యాప్టాప్లో నిలిపివేయబడిన ఎన్క్రిప్షన్తో ఒక్క యూజర్స్పేస్ VPN క్లయింట్ కూడా గిగాబిట్ను అందించదు, బలహీనమైన ప్రాసెసర్ ఉన్న సిస్టమ్లను పక్కన పెట్టండి.
ఆరెంజ్ పై వన్
Xunlong నుండి సింగిల్-బోర్డ్ Orange Pi One ప్రస్తుతం పనితీరు/ధర నిష్పత్తి పరంగా అత్యుత్తమ ఆఫర్. $9.99*కి మీరు 7 MHz వద్ద పటిష్టమైన క్వాడ్-కోర్ ARM కార్టెక్స్-A1008 ప్రాసెసర్ రన్నింగ్ (స్థిరంగా) పొందుతారు మరియు దాని ధర-పాయింట్ పొరుగున ఉన్న రాస్ప్బెర్రీ పై జీరో మరియు నెక్స్ట్ థింగ్ CHIPలను స్పష్టంగా అధిగమిస్తుంది. ఇక్కడే ప్రయోజనాలు ముగుస్తాయి. Xunlong కంపెనీ దాని బోర్డుల సాఫ్ట్వేర్పై ఖచ్చితంగా సున్నా శ్రద్ధ చూపుతుంది మరియు వన్ అమ్మకానికి ప్రారంభించబడిన సమయంలో, ఇది రెడీమేడ్ చిత్రాలను పేర్కొనకుండా బోర్డు కాన్ఫిగరేషన్ ఫైల్ను కూడా అందించలేదు. Allwinner, ఒక SoC తయారీదారు, దాని ఉత్పత్తికి మద్దతు ఇవ్వడానికి ప్రత్యేకించి సున్నితంగా ఉండదు. వారు ఆండ్రాయిడ్ 4.4.4 OSలో కనిష్ట పనితీరుపై మాత్రమే ఆసక్తిని కలిగి ఉన్నారు, అంటే మేము ఆండ్రాయిడ్ ప్యాచ్లతో 3.4 కెర్నల్ను ఉపయోగించవలసి వస్తుంది. అదృష్టవశాత్తూ, డిస్ట్రిబ్యూషన్లను సమీకరించే, కెర్నల్ను సవరించే, మెయిన్లైన్ కెర్నల్లో బోర్డులకు మద్దతు ఇవ్వడానికి కోడ్ను వ్రాసే ఔత్సాహికులు ఉన్నారు, అనగా. వారు వాస్తవానికి తయారీదారు కోసం పని చేస్తారు, ఈ చెత్త పనిని ఆమోదయోగ్యంగా చేస్తారు. నా ప్రయోజనాల కోసం, నేను Armbian పంపిణీని ఎంచుకున్నాను; ఇది తరచుగా మరియు సౌకర్యవంతంగా నవీకరించబడుతుంది (కొత్త కెర్నల్లు నేరుగా ప్యాకేజీ మేనేజర్ ద్వారా ఇన్స్టాల్ చేయబడతాయి మరియు ఫైల్లను ప్రత్యేక విభజనకు కాపీ చేయడం ద్వారా కాదు, సాధారణంగా Allwinner విషయంలో వలె), మరియు ఇది చాలా వరకు మద్దతు ఇస్తుంది పెరిఫెరల్స్, ఇతరులకు భిన్నంగా.
రూటర్
రూటర్ యొక్క బలహీనమైన ప్రాసెసర్ను ఎన్క్రిప్షన్తో లోడ్ చేయకుండా మరియు మా VPN కనెక్షన్ని వేగవంతం చేయకుండా ఉండటానికి, మేము ఈ పనిని రౌటర్కి కనెక్ట్ చేయడం ద్వారా మరింత శక్తివంతమైన ఆరెంజ్ పై ప్రాసెసర్ యొక్క భుజాలకు మార్చవచ్చు. ఈథర్నెట్ లేదా USB ద్వారా కనెక్ట్ చేయడం గుర్తుకు వస్తుంది - ఈ రెండు ప్రమాణాలకు రెండు పరికరాల ద్వారా మద్దతు ఉంది, కానీ నేను ఇప్పటికే ఉన్న పోర్ట్లను తీసుకోవాలనుకోలేదు. అదృష్టవశాత్తూ, ఒక మార్గం ఉంది.
రూటర్లో ఉపయోగించే GL850G USB హబ్ చిప్, 4 USB పోర్ట్లకు మద్దతు ఇస్తుంది, వాటిలో రెండు వైర్డు కాదు. అధిక కరెంట్ వినియోగం (ఉదాహరణకు, హార్డ్ డ్రైవ్లు) ఉన్న 4 పరికరాలను ఒకేసారి కనెక్ట్ చేయకుండా వినియోగదారులను నిరోధించడానికి తయారీదారు వాటిని ఎందుకు అన్సోల్డర్ చేయలేదు అనేది అస్పష్టంగా ఉంది. రౌటర్ యొక్క ప్రామాణిక విద్యుత్ సరఫరా అటువంటి లోడ్ కోసం రూపొందించబడలేదు. ఏది ఏమైనప్పటికీ, ఇది మనకు ప్రయోజనకరంగా ఉంటుంది.
మరొక USB పోర్ట్ని పొందడానికి, మీరు 8(D-) మరియు 9(D+) లేదా 11(D-) మరియు 12(D+) పిన్లకు రెండు వైర్లను టంకం వేయాలి.
అయితే, కేవలం రెండు USB పరికరాలను ప్లగ్ చేయడం మాత్రమే సరిపోదు మరియు ఈథర్నెట్లో వలె ప్రతిదీ దాని స్వంతదానిపై పని చేస్తుందని ఆశిస్తున్నాము. ముందుగా, వాటిలో ఒకటి USB క్లయింట్ మోడ్లో పనిచేసేలా చేయాలి మరియు USB హోస్ట్ కాదు మరియు రెండవది, పరికరాలు ఒకదానికొకటి ఎలా గుర్తించాలో మనం నిర్ణయించుకోవాలి. USB గాడ్జెట్లు అని పిలవబడే (Linux కెర్నల్ సబ్సిస్టమ్ పేరు పెట్టబడిన) అనేక డ్రైవర్లు ఉన్నాయి, ఇవి వివిధ రకాల USB పరికరాలను అనుకరించడానికి మిమ్మల్ని అనుమతిస్తాయి: నెట్వర్క్ అడాప్టర్, ఆడియో కార్డ్, కీబోర్డ్ మరియు మౌస్, ఫ్లాష్ డ్రైవ్, కెమెరా, సీరియల్ ద్వారా కన్సోల్. ఓడరేవు మా పరికరం నెట్వర్క్తో పని చేస్తుంది కాబట్టి, ఈథర్నెట్ అడాప్టర్ను అనుకరించడం మాకు ఉత్తమమైనది.
మూడు ఈథర్నెట్-ఓవర్-USB ప్రమాణాలు ఉన్నాయి:
- రిమోట్ NDIS (RNDIS). Microsoft నుండి కాలం చెల్లిన ప్రమాణం, ప్రధానంగా Windows XP సమయంలో ఉపయోగించబడుతుంది.
- ఈథర్నెట్ కంట్రోల్ మోడల్ (ECM). USB ప్యాకెట్లలో ఈథర్నెట్ ఫ్రేమ్లను కప్పి ఉంచే ఒక సాధారణ ప్రమాణం. USB కనెక్షన్తో వైర్డు మోడెమ్లకు చాలా బాగుంది, ఇక్కడ ప్రాసెస్ చేయకుండా ఫ్రేమ్లను బదిలీ చేయడం సౌకర్యంగా ఉంటుంది, అయితే USB బస్ యొక్క సరళత మరియు పరిమితుల కారణంగా, ఇది చాలా వేగంగా ఉండదు.
- ఈథర్నెట్ ఎమ్యులేషన్ మోడల్ (EEM). USB పరిమితులను పరిగణనలోకి తీసుకుని, బహుళ ఫ్రేమ్లను ఉత్తమంగా ఒకదానిలో ఒకటిగా కలుపుతుంది, తద్వారా నిర్గమాంశ పెరుగుతుంది.
- నెట్వర్క్ కంట్రోల్ మోడల్ (NCM). సరికొత్త ప్రోటోకాల్. EEM యొక్క ప్రయోజనాలను కలిగి ఉంది మరియు బస్సు అనుభవాన్ని మరింత ఆప్టిమైజ్ చేస్తుంది.
ఈ ప్రోటోకాల్లలో దేనినైనా మా బోర్డులో పని చేయడానికి, ఎప్పటిలాగే, మేము కొన్ని సమస్యలను ఎదుర్కోవలసి ఉంటుంది. Allwinner కెర్నల్ యొక్క Android భాగాలపై మాత్రమే ఆసక్తి కలిగి ఉన్నందున, Android గాడ్జెట్ మాత్రమే సాధారణంగా పని చేస్తుంది - adbతో కమ్యూనికేషన్ను అమలు చేసే కోడ్, MTP ప్రోటోకాల్ ద్వారా పరికరాన్ని ఎగుమతి చేయడం మరియు Android పరికరాల్లో ఫ్లాష్ డ్రైవ్ను అనుకరించడం. ఆండ్రాయిడ్ గాడ్జెట్ కూడా RNDIS ప్రోటోకాల్కు మద్దతిస్తుంది, అయితే ఇది Allwinner కెర్నల్లో విభజించబడింది. మీరు ఏదైనా ఇతర USB గాడ్జెట్తో కెర్నల్ను కంపైల్ చేయడానికి ప్రయత్నిస్తే, మీరు ఏమి చేసినా పరికరం సిస్టమ్లో కనిపించదు.
సమస్యను సామరస్యంగా పరిష్కరించడానికి, డెవలపర్లు సవరించిన Android గాడ్జెట్ android.c కోడ్లో USB కంట్రోలర్ ప్రారంభించబడిన స్థలాన్ని మీరు కనుగొనాలి, అయితే కనీసం ఈథర్నెట్ ఎమ్యులేషన్ని చేయడానికి ఒక ప్రత్యామ్నాయం కూడా ఉంది. USB పని:
--- sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:40.427088792 +0300
+++ sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:45.339088792 +0300
@@ -57,7 +57,7 @@
static sunxi_udc_io_t g_sunxi_udc_io;
static u32 usb_connect = 0;
static u32 is_controller_alive = 0;
-static u8 is_udc_enable = 0; /* is udc enable by gadget? */
+static u8 is_udc_enable = 1; /* is udc enable by gadget? */
#ifdef CONFIG_USB_SUNXI_USB0_OTG
static struct platform_device *g_udc_pdev = NULL;
ఈ ప్యాచ్ USB క్లయింట్ మోడ్ను బలవంతం చేస్తుంది, Linux నుండి సాధారణ USB గాడ్జెట్లను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఇప్పుడు మీరు ఈ ప్యాచ్ మరియు అవసరమైన గాడ్జెట్తో కెర్నల్ను పునర్నిర్మించాలి. నేను EEMని ఎంచుకున్నాను ఎందుకంటే... పరీక్ష ఫలితాల ప్రకారం, ఇది NCM కంటే ఎక్కువ ఉత్పాదకతను కలిగి ఉంది.
Armbian జట్టు అందిస్తుంది userpatches/kernel/sun8i-default/otg.patch
, కొద్దిగా సవరించండి compile.sh
మరియు అవసరమైన గాడ్జెట్ను ఎంచుకోండి:
కెర్నల్ డెబ్ ప్యాకేజీగా కంపైల్ చేయబడుతుంది, దీని ద్వారా బోర్డులో ఇన్స్టాల్ చేయడం కష్టం కాదు dpkg
.
USB ద్వారా బోర్డుని కనెక్ట్ చేయడం మరియు DHCP ద్వారా చిరునామాను స్వీకరించడానికి మా కొత్త నెట్వర్క్ అడాప్టర్ను కాన్ఫిగర్ చేయడం మాత్రమే మిగిలి ఉంది. దీన్ని చేయడానికి, మీరు ఈ క్రింది వాటిని జోడించాలి /etc/network/interfaces
:
auto usb0
iface usb0 inet dhcp
hwaddress ether c2:46:98:49:3e:9d
pre-up /bin/sh -c 'echo 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role'
MAC చిరునామాను మాన్యువల్గా సెట్ చేయడం మంచిది, ఎందుకంటే... పరికరం రీబూట్ చేయబడిన ప్రతిసారీ ఇది యాదృచ్ఛికంగా ఉంటుంది, ఇది అసౌకర్యంగా మరియు సమస్యాత్మకంగా ఉంటుంది.
మేము MicroUSB కేబుల్ను OTG కనెక్టర్కు కనెక్ట్ చేస్తాము, రౌటర్ నుండి శక్తిని కనెక్ట్ చేస్తాము (ఇది దువ్వెన యొక్క పిన్స్ 2 మరియు 3కి సరఫరా చేయబడుతుంది మరియు పవర్ కనెక్టర్కు మాత్రమే కాదు).
రౌటర్ను కాన్ఫిగర్ చేయడం మాత్రమే మిగిలి ఉంది. EEM డ్రైవర్తో ప్యాకేజీని ఇన్స్టాల్ చేసి, మా కొత్త USB నెట్వర్క్ పరికరాన్ని స్థానిక ఫైర్వాల్ జోన్ వంతెనకు జోడించడం సరిపోతుంది:
opkg install kmod-usb-net-cdc-eem
అన్ని ట్రాఫిక్లను VPN టన్నెల్కు మళ్లించడానికి, మీరు రూటర్ వైపు బోర్డు యొక్క IP చిరునామాకు SNAT నియమాన్ని జోడించాలి లేదా బోర్డు చిరునామాను dnsmasq ద్వారా గేట్వే చిరునామాగా పంపిణీ చేయాలి. కింది పంక్తిని జోడించడం ద్వారా రెండోది చేయబడుతుంది /etc/dnsmasq.conf
:
dhcp-option = tag:lan, option:router, 192.168.1.100
పేరు 192.168.1.100
- మీ బోర్డు యొక్క IP చిరునామా. బోర్డులోని నెట్వర్క్ సెట్టింగ్లలో రూటర్ చిరునామాను నమోదు చేయడం మర్చిపోవద్దు!
రూటర్ పరిచయాల నుండి బోర్డు పరిచయాలను వేరుచేయడానికి మెలమైన్ స్పాంజ్ ఉపయోగించబడింది. ఇది ఇలా మారింది:
తీర్మానం
USB ద్వారా నెట్వర్క్ ఆశ్చర్యకరంగా త్వరగా పని చేస్తుంది: 100-120 Mb/s, నేను తక్కువ అంచనా వేసాను. OpenVPN దాదాపు 70 Mb/s గుప్తీకరించిన ట్రాఫిక్ గుండా వెళుతుంది, ఇది చాలా ఎక్కువ కాదు, కానీ నా అవసరాలకు సరిపోతుంది. రూటర్ మూత గట్టిగా మూసివేయబడదు, చిన్న ఖాళీని వదిలివేస్తుంది. ఈస్థీట్లు ఈథర్నెట్ మరియు USB హోస్ట్ కనెక్టర్లను బోర్డ్ నుండి తీసివేయవచ్చు, ఇది మూత పూర్తిగా మూసివేయడానికి అనుమతిస్తుంది మరియు ఇంకా కొంత ఖాళీ మిగిలి ఉంటుంది.
అటువంటి అశ్లీల చిత్రాలలో పాల్గొనకపోవడమే మరియు కొనుగోలు చేయకపోవడమే మంచిది
మూలం: www.habr.com