ఇద్దరు క్లయింట్లు ఇద్దరూ జంప్ హోస్ట్ను తెరవగలరు, అయినా ఒకరినొకరు తెరవడానికి వారికి ఎలాంటి పనీ ఉండకూడదు. సేవను చేరుకోవడం ఫార్వర్డింగ్ నిర్ణయం, పీర్ను చేరుకోవడం విధాన నిర్ణయం, మరియు చాలా VPN స్టాక్లు వాటిని వేర్వేరు వస్తువుల్లో ఉంచుతాయి. మొదటి దానికి మీరు కాన్ఫిగర్ చేసే ఏదీ రెండోదాన్ని అమలు చేయదు. కాబట్టి పని నియమాన్ని జోడించడం కాదు, ఈ సర్వర్లో పీర్ల మధ్య ట్రాఫిక్ను నిర్ణయించే వస్తువును కనుగొని, అక్కడ నిరాకరణ రాయడం మరియు క్లయింట్ నుండి దాన్ని రుజువు చేయడం.

పంచుకున్న సేవకు మార్గం పీర్ల మధ్య అనుమతి కాదు

క్లయింట్ సబ్నెట్ను ప్రకటించడం పీర్కు మరో క్లయింట్ చిరునామా వైపు ప్యాకెట్ను వైరుపై ఎలా ఉంచాలో చెబుతుంది. ఆ ప్యాకెట్ చేరుతుందా అనేది తర్వాత, దాన్ని ఫార్వర్డ్ చేసే దానిచే నిర్ణయించబడుతుంది. Linux గేట్వేలో అది FORWARD గొలుసు; వినియోగదారు స్థలంలోని డెమన్ లోపల అది టన్నెల్ సొంత సెషన్ పట్టిక. మార్గం చేరుకోగలిగే సామర్థ్యానికి సమాధానమిస్తుంది మరియు అనుమతిని తాకకుండా వదిలివేస్తుంది.

అందుకే మార్గాలను మాత్రమే చదివే ఒంటరితన పరిశీలన ఏమీ రుజువు చేయదు. /24 ప్రతి క్లయింట్కు పంపవచ్చు, అయితే పీర్ల మధ్య ప్రతి ప్యాకెట్ ఫార్వర్డ్ కొక్కెంలో పడవేయబడుతుంది. ప్రమాదకర స్థితి దానికి విరుద్ధం: స్పష్టమైన నియమం లేదు, అనుమతించే డిఫాల్ట్ ఉంది, ఎవరూ పరీక్షించనందున మాత్రమే ఒంటరితనం ఉంది.

టెర్మినల్ తెరవడానికి ముందు అవసరాన్ని ఒక వరుసలో రాయండి. సేవా బ్లాక్ మరియు జంప్ హోస్ట్ను చేరుకోండి, క్లయింట్ బ్లాక్ లోపల మరేదీ చేరుకోకండి.

పీర్ ప్యాకెట్ను నిజంగా ఎవరు ఫార్వర్డ్ చేస్తారో కనుగొనండి

సర్వర్ రెండు ప్రవర్తనలు క్లయింట్ వైపు నుండి ఒకేలా కనిపిస్తాయి, వేరే నియమాలు అవసరం. ఒకటి కెర్నల్ ప్యాకెట్ను మళ్లీ టన్నెల్ ఇంటర్ఫేస్ నుండి బయటకు ఫార్వర్డ్ చేస్తుంది, లేదా డెమన్ దాన్ని సెషన్ల మధ్య కాపీ చేస్తుంది, కెర్నల్ దాన్ని ఎప్పుడూ చూడదు.

WireGuard మొదటి గుంపుకు చెందుతుంది: పీర్ల మధ్య స్విచ్ లేదు, కాబట్టి 10.8.0.4 నుండి 10.8.0.5కి ప్యాకెట్ wg0పై వచ్చి, ఫార్వర్డ్ కొక్కెాన్ని తాకి, AllowedIPs రెండు చిరునామాలను కవర్ చేసినప్పుడు మళ్లీ wg0 నుండి మార్గమార్గం చేయబడుతుంది. OpenVPN రెండో గుంపు, సర్వర్ కాన్ఫిగ్లో client-to-client సెట్ అయినప్పుడు, ఎందుకంటే ఆ ఆదేశం ప్యాకెట్ను వినియోగదారు స్థలంలో సెషన్ల మధ్య అప్పగిస్తుంది. ఏదైనా రాసే ముందు లోడ్ అయిన కాన్ఫిగ్లో ఆ ఆదేశాన్ని తనిఖీ చేయండి. ట్రాఫిక్ను ఎప్పుడూ చూడని కెర్నల్ నియమాన్ని పనిచేసే నియమం నుండి వేరు చేయలేము, అలాగే ఒక అమరిక ఎలాంటి ఒంటరితనం లేకుండా ముగుస్తుంది.

లోడ్ అయిందని మీరు భావించే ఫైల్కు బదులు ప్రభావవంతమైన కాన్ఫిగ్ను చదవండి, ఎందుకంటే డిస్ట్రో ప్యాకేజీలు తమ సొంత చేరికలను తెస్తాయి. డెమన్ ఫార్వర్డ్ చేస్తే, నిరాకరణ దాని సొంత ప్రతి-క్లయింట్ నియంత్రణల్లో ఉంటుంది, హోస్ట్ ఫైర్వాల్ హోస్ట్కు పంపిన ట్రాఫిక్ను మాత్రమే వడపోస్తుంది. కెర్నల్ ఫార్వర్డ్ చేస్తే, ఫార్వర్డ్ కొక్కెం మాత్రమే ముఖ్యమైన స్థలం.

మార్గమార్గ మరియు అనువాద అమరికలకు మరో తనిఖీ కావాలి: దూర క్లయింట్ చూసే మూలం మీరు ఆశించినది కాకపోవచ్చు. అప్పుడు క్లయింట్ సబ్నెట్తో సరిపోలే నియమం ఏదీ సరిపోలదు. సరిపోలిక రాసే ముందు అనువాదం నుండి మిగిలే చిరునామాను గుర్తించండి, NAT చిరునామాలను ఊహించడం కంటే ఇంటర్ఫేస్ జతను సరిపోల్చడానికి ప్రాధాన్యం ఇవ్వండి.

ప్రతి చిరునామాకు ఒంటరిగా రద్దు చేయగల గుర్తింపు ఇవ్వండి

రెండు పరికరాలు ఒకే ఆధారాన్ని పంచుకున్న క్షణం ఒంటరితనం కూలిపోతుంది. ఆ గుర్తింపుకు కట్టుబడిన నియమం వాటిని వేరు చేయలేదు, పోయిన ల్యాప్టాప్ను రద్దు చేయడం మొత్తం సమూహాన్ని రద్దు చేస్తుంది. పరికరానికి ఒక సర్టిఫికేట్ లేదా పీర్కు ఒక కీ రద్దును స్థానికంగా, విధానాన్ని చదవగలిగేలా ఉంచుతాయి, ఎందుకంటే ప్రతి చిరునామా సరిగ్గా ఒక వ్యక్తి లేదా యంత్రానికి సరిపోతుంది. రూపకల్పన అలా చేయలేని చోట, నియమాన్ని సూక్ష్మమైనదిగా వర్ణించడం బదులు ఆపరేషన్ పుస్తకంలో చెప్పండి.

చిరునామా కేటాయింపు విధానంతో ఏకీభవించాలి. సేవలకు ఒక బ్లాక్, క్లయింట్లకు ఒక బ్లాక్ కేటాయించి, క్లయింట్ చిరునామాలను మీరు నియంత్రించే పూల్ నుండి ఇవ్వండి, మొదట వచ్చిన వారు తీసుకునే శ్రేణి నుండి కాదు. సర్వర్ అనువాదం లేదా వంతెన చేస్తే, మ్యాపింగ్ పట్టికను కాన్ఫిగ్ పక్కన ఉంచండి, ఎందుకంటే తదుపరి పాఠకుడికి నియమాన్ని మళ్లీ పొందడానికి ఆ పట్టికే కావాలి.

ప్యాకెట్ టన్నెల్ను దాటే చోట నిరాకరణను ఉంచండి

WireGuard ట్రాఫిక్ను ఫార్వర్డ్ చేసే గేట్వేలో రెండు నియమాలు ఈ స్థితిని కవర్ చేస్తాయి: సేవా బ్లాక్కు అనుమతి ఇవ్వండి, తర్వాత క్లయింట్ బ్లాక్ మిగిలిన భాగాన్ని పడవేయండి. ఇంటర్ఫేస్ జత చిరునామాలంత ముఖ్యం, ఎందుకంటే గమ్యస్థానంపై మాత్రమే సరిపోల్చడం LAN నుండి వచ్చే ట్రాఫిక్ను కూడా పట్టుకుంటుంది. అనుమతి మొదట అంచనా వేయబడేలా వాటిని ఆ క్రమంలో లోడ్ చేయండి.

nftablesతో జత ఉన్న inet filter పట్టికలోకి వెళ్తుంది, మొదట అనుమతి తర్వాత పడవేయడం. రెండు సరిపోలికలు చిరునామాలతో పాటు ఇంటర్ఫేస్ జతను పిన్ చేస్తాయి.

nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop

లోడ్ చేసిన తర్వాత నిష్క్రమణ స్థితిని నమ్మడం బదులు గొలుసును తిరిగి చదవండి, రెండు నియమాలు మీరు ఉద్దేశించిన క్రమంలో ఉన్నాయని నిర్ధారించండి. IPv6 పూల్ కోసం సరిపోలే ip6 నియమాలను జోడించండి, లేకపోతే ద్వి-స్టాక్ టన్నెల్లో v4 జత కేవలం అలంకారం. సర్వర్కు ఇప్పటికే అనుమతించే ఫార్వర్డ్ విధానం ఉంటే, గొలుసును పూర్తిగా మార్చడం బదులు పడవేయడాన్ని జోడించండి.

OpenVPN లో client-to-client ప్రారంభమైతే, ఈ ఫార్వర్డ్ నియమాలు పీర్ ట్రాఫిక్తో ఎప్పుడూ సరిపోలవు మరియు నిరాకరణ డెమన్ సొంత నియంత్రణల్లో ఉండాలి. హోస్ట్కు పంపిన ట్రాఫిక్ కోసం కెర్నల్ నియమాలను ఉంచండి, కానీ వాటిని ఒంటరితన నియంత్రణగా లెక్కించకండి.

నిరాకరణను సర్వర్ నుండి కాదు, క్లయింట్ నుండి రుజువు చేయండి

గేట్వే నుండి పరీక్ష ఏమీ రుజువు చేయదు, ఎందుకంటే స్థానికంగా సృష్టించిన ట్రాఫిక్ నిష్క్రమణ మార్గాన్ని తీసుకుని ఫార్వర్డ్ కొక్కెాన్ని ఎప్పుడూ దాటదు. రెండు నిజమైన క్లయింట్లను ఉపయోగించండి: సేవను చేరుకోవాల్సిన ఒకటి, నిరాకరించబడాల్సిన ఒకటి. మొదట అనుమతి సందర్భాన్ని అమలు చేయండి, విరిగిన టన్నెల్ పనిచేసే విధానంగా పొరపాటుగా భావించబడకుండా.

అనుమతించిన క్లయింట్ నుండి సేవ తన పోర్ట్లో సమాధానమిస్తుందని నిర్ధారించండి. అదే క్లయింట్ నుండి పీర్ చిరునామాను ప్రయత్నించి, నిరాకరణకు బదులు నిశ్శబ్ద పడవేయడాన్ని ఆశించండి:

ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5

పడవేసిన ప్యాకెట్ మరియు ఆఫ్లైన్ పీర్ రెండూ సమయం ముగిసినట్టు కనిపిస్తాయి, కాబట్టి ఏదైనా ముగింపుకు రాకముందు కౌంటర్లను తనిఖీ చేయండి. పీర్ స్పష్టంగా నడుస్తున్నప్పుడు పడవేత నియమం కౌంటర్ పెరుగుతుందని నిర్ధారించండి. IPv6లో పునరావృతం చేయండి, అక్కడ లేని ip6 నియమం v4 నిరాకరణను ప్రభావవంతంగా కనిపించేలా చేస్తుంది. అంగీకరించిన మరియు నిరాకరించిన ఫలితాలను తేదీతో ఆపరేషన్ పుస్తకంలో నమోదు చేయండి, ఎందుకంటే తదుపరి స్థలాంతరం నియమాన్ని మళ్లీ పొందుతుంది.

సంబంధిత వ్యాసాలు