Docker పోర్ట్ ప్రచురణ మరియు VPN మూలాలు: మీరు కోల్పోయే రెండు సరిపోలికలు
VPN సర్వర్ IP ఎప్పుడూ Docker చూసే మూలం కాదు, DNAT తర్వాత పోర్ట్ ప్రచురిత పోర్ట్ కాదు. రెండు వాస్తవాలను నిజమైన మార్గంతో పోల్చండి.
నియమం చెబుతుంది VPN సర్వర్ చిరునామాను ప్రచురిత సేవకు అనుమతించండి, అయినా కనెక్షన్ తెగిపోతుంది. ఈ ఫలితం సాధారణం, అది Docker దోషం కాదు. రెండు వేర్వేరు సరిపోలికలు తప్పు: మీరు రాసిన మూలం హోస్ట్ స్వీకరించే మూలం కాకపోవచ్చు, మీరు రాసిన పోర్ట్ ఫిల్టర్ చూసే పోర్ట్ కాకపోవచ్చు. రెండింటినీ సరిచేయడానికి సేవా చిత్రం బదులు ప్యాకెట్ మార్గాన్ని చూడాలి.
అపోహ: VPN సర్వర్ను అనుమతించండి, పని పూర్తి
రూట్ చేసిన VPN క్లయింట్ టన్నెల్ చిరునామాను Docker హోస్ట్ వరకు నిలుపుకోగలదు. మూల అనువాదం చేసే గేట్వే ఆ చిరునామాను తన చిరునామాతో భర్తీ చేయగలదు. రెండు నిర్మాణాలు చెల్లుబాటు అవుతాయి, అవి ఒకే వినియోగదారు చర్యకు వేర్వేరు మూలాలను ఇస్తాయి.
అందువల్ల VPN సర్వర్ IP అనే పదబంధం ఊహను వివరిస్తుంది, పరిశీలనను కాదు. మీ ముందు ఏ నిర్మాణం ఉందో తెలిసే వరకు నియమం ఒక ఊహ.
మూలం: క్లయింట్ పూల్ లేక అనువదించిన గేట్వే
నాలుగు విషయాలను క్రమంగా తనిఖీ చేయండి. మొదటిది, క్లయింట్ చిరునామా పూల్, ఉదాహరణకు 10.90.0.0/24. రెండవది, గేట్వే ఆ పూల్ను హోస్ట్కు చేరే ముందు అనువదిస్తుందా. మూడవది, కొత్త కనెక్షన్ ఒకదానికి హోస్ట్ నిజంగా గమనించే మూలం. నాలుగవది, అప్లికేషన్ ప్రామాణీకరణ వ్యక్తిగత వినియోగదారులను వేరు చేస్తుందా, ఎందుకంటే పంచుకున్న అనువదిత చిరునామా దానిని చేయలేదు.
పూల్ నిలిచి ఉంటే, గేట్వే ప్రజా చిరునామాతో మాత్రమే సరిపోలే నియమం ప్రతి క్లయింట్ను కోల్పోతుంది. గేట్వే ఉద్దేశపూర్వకంగా అనువదిస్తే, అనువదిత చిరునామాను అనుమతించడం దాని వెనుక ఉన్న ప్రతి వినియోగదారుని లోపలికి పంపుతుంది, ఇది సొంత లాగిన్ ఉన్న సేవకు ఆమోదయోగ్యం మరియు మిగతా అన్నింటికీ ఆమోదయోగ్యం కాదు.
పోర్ట్: DNAT మీరు సరిపోల్చే సంఖ్యను మారుస్తుంది
Docker iptables తో సాధారణ Linux వంతెన ప్రచురణలో, 8443 నుండి కంటైనర్ పోర్ట్ 443 కి హోస్ట్ మ్యాపింగ్ ఫార్వార్డింగ్ ఫిల్టర్ నడవక ముందే అనువదించబడుతుంది. ప్యాకెట్ ఫిల్టర్కు గమ్య పోర్ట్ 443 తో చేరుతుంది. ఆ సమయంలో 8443 తో సరిపోలే నియమం ఎప్పటికీ సక్రియం కాదు, క్లయింట్ టైప్ చేసింది 8443 అయినా.
ప్రచురిత పోర్ట్ ఇప్పటికీ కనెక్షన్ ట్రాకింగ్లో ఉంది, కాబట్టి నిజంగా అవసరమైనప్పుడు అసలు గమ్యాన్ని అక్కడ సరిపోల్చవచ్చు.
ఏ సంఖ్య ఉద్దేశాన్ని వ్యక్తపరుస్తుందో నిర్ణయించండి. నియమం కంటైనర్ లోపలి సేవను రక్షిస్తున్నప్పుడు DNAT తర్వాత కంటైనర్ పోర్ట్తో సరిపోల్చండి. నియమం క్లయింట్ ఏమి అడిగిందో వివరించాల్సి ఉంటే conntrack ఎంపికతో అసలు గమ్యంతో సరిపోల్చండి, మరియు దానితో వచ్చే అదనపు సరిపోలిక ఖర్చు మరియు నియమ క్రమంపై శ్రద్ధను అంగీకరించండి.
గొలుసు: INPUT కాదు, DOCKER-USER
Docker iptables మార్గదర్శిని వినియోగదారు ఫార్వార్డింగ్ విధానాన్ని DOCKER-USER గొలుసులో ఉంచుతుంది, అది Docker సొంత ఫార్వార్డింగ్ నియమాలకు ముందే మూల్యాంకనం అవుతుంది. హోస్ట్ సేవ నుండి INPUT గొలుసుకు కాపీ చేసిన నియమం హోస్ట్కు చిరునామా చేసిన ట్రాఫిక్ను ఫిల్టర్ చేస్తుంది, కంటైనర్కు ఫార్వార్డ్ చేసే ట్రాఫిక్ను కాదు. ఆ పొరపాటు సరిగ్గా కనిపించే, కానీ కంటైనర్ మార్గంపై ఎలాంటి ప్రభావం లేని నియమాన్ని సృష్టిస్తుంది.
మూల శ్రేణి, ప్రభావవంత గమ్య పోర్ట్, ప్రోటోకాల్ మరియు లోపలికి వచ్చే ఇంటర్ఫేస్ను ఒకే నియమంలో కలిసి ఉంచండి. ప్రతి ఫార్వార్డ్ అయ్యే గమ్యానికి మూలం మాత్రమే ఆధారంగా అనుమతి ఒక ప్రచురిత సేవను అనుమతించడం కంటే విస్తృతం.
కొత్త కనెక్షన్లతో ధృవీకరించండి
కొత్త కనెక్షన్లతో రెండు దిశలను పరీక్షించండి: అనుమతించిన VPN క్లయింట్ ఒకటి మరియు తిరస్కరించబడి ఉండాల్సిన మూలం ఒకటి. ఉన్న కనెక్షన్ స్థితి విధానం మారిన తర్వాత కూడా సెషన్ను సజీవంగా ఉంచగలదు, కాబట్టి పాత కనెక్షన్ కొత్త నియమం గురించి ఏమీ నిరూపించదు. తర్వాత ప్రతిస్పందన మార్గాన్ని తనిఖీ చేయండి, ఎందుకంటే కంటైనర్ ఇప్పటికీ తాను చూసే మూలం వైపు తిరిగి మార్గం చేయాలి.
ఈ తనిఖీల వెనుక ఉన్న గొలుసు క్రమాన్ని మరియు పోర్ట్ అనువాద ప్రవర్తనను Docker iptables మార్గదర్శిని పత్రీకరిస్తుంది. ఏదైనా వంటకాన్ని కాపీ చేసే ముందు దాన్ని చదవండి, మరియు ఇన్స్టాల్ చేసిన Docker ఏ బ్యాకెండ్ ఉపయోగిస్తుందో నిర్ధారించండి, ఎందుకంటే nftables బ్యాకెండ్ విధానాన్ని వేరే విధంగా సమగ్రపరుస్తుంది.