कल, मैंने यहां एक प्रश्न पोस्ट किया था लेकिन मुझे लगता है कि मेरे शब्दों में पर्याप्त स्पष्ट नहीं था। BTW, यह प्रश्न डुप्लिकेट नहीं है।
मेरे पास नीचे की तरह AWS VPC सेटअप है।
लक्ष्य / समस्या : इंटरनेट से सर्वर ए पर एसएसएच। और यह काम नहीं कर रहा है।
सर्वर A निजी सबनेट में है और इसलिए मैं अपने नैट उदाहरण पर iptables NATing को सक्षम करना चाहता हूं ताकि मैं सीधे इंटरनेट से सेवर ए को ssh कर सकूं
मैं इसका और यही अनुसरण कर रहा हूं
मैं NAT उदाहरण पर कमांड से नीचे भागा:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
NAT उदाहरण पर IP अग्रेषण सक्षम किया गया है:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE NAT उदाहरण पर चल रहा है:
NAT# iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 6 packets, 312 bytes)
pkts bytes target prot opt in out source destination
199 16466 MASQUERADE all -- * eth0 10.0.0.0/16 0.0.0.0/0
इस परीक्षण मामले के लिए आवश्यक विभिन्न पहुँच की अनुमति देने के लिए AWS सुरक्षा समूहों को ठीक से कॉन्फ़िगर किया गया है।
समस्या निवारण:
मैं नेट 22 से सर्वर ए पर पोर्ट 22 पर टेलनेट कर सकता हूं। इसलिए एक्सेस अच्छा है।
जब मैं telnet 54.213.116.251 2222
अपने लैपटॉप पर चलता हूं, तो मैं NAT पर tcpdump में नीचे प्रविष्टि देखता हूं:
NAT# tcpdump -n -i eth0 dst 10.0.1.243 and port 22
09:59:13.738316 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:16.737009 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:22.775567 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,nop,sackOK], length 0
तो इसका मतलब है कि iptables पैकेट को रूट कर रहा है 10.0.1.243
। (BTW, xxx.xxx.xxx.xxx
मेरे लैपटॉप का सार्वजनिक आईपी पता है)
लेकिन जब मैं सर्वर A पर tcpdump चलाता हूं, तो मुझे ऐसा कुछ भी नहीं दिखता है 10.0.0.54
जिसमें से NAT का आंतरिक / निजी IP पता हो ( और मुझे लगता है कि यह समस्या है ):
Server A# tcpdump -n src 10.0.0.54
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
लेकिन अगर मैं NAT उदाहरण के लिए सर्वर A से टेलनेट करता हूं, तो मुझे सर्वर A पर tcpdump में अच्छा सामान दिखाई देता है ( इसका मतलब है, मेरा समग्र PREROUTING
नियम अपेक्षित रूप से काम नहीं कर रहा है ):
Server A# tcpdump -n src 10.0.0.54
05:01:47.500080 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [S], seq 2862522431, win 14600, options [mss 1460,sackOK,TS val 3013083 ecr 0,nop,wscale 7], length 0
05:01:47.501601 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 760676524, win 115, options [nop,nop,TS val 3013083 ecr 12074896], length 0
05:01:47.535720 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 22, win 115, options [nop,nop,TS val 3013092 ecr 12074928], length 0
निष्कर्ष:
NAT पर tcpdump आउटपुट से, ऐसा लगता है कि Iptables मेरे पैकेट को ठीक कर रहा है।
सर्वर ए पर टीसीपी डंप से, मुझे एनएटी से सर्वर ए तक अच्छी कनेक्टिविटी है।
लेकिन एंड-टू-एंड में, मैं अपने लैपटॉप से सर्वर ए से कनेक्ट करने में सक्षम नहीं हूं।
( BTW, मैं SSH सुरंग और अन्य अच्छी चीजें जानता हूं। लेकिन मैं केवल Iptables चाहता हूं कि मुझे इसके साथ मदद मिले। )
Disabled
NAT उदाहरण के लिए पहले से ही है ।