केवल SSH का उपयोग करके कैसे बनाएं / सेटअप vpn?


9

यहाँ समस्या मैं हल करने की कोशिश कर रहा हूँ। एक सर्वर ("रिमोट सिस्टम") है जिसे मैं अपने स्थानीय कंप्यूटर से ssh करने में सक्षम हूं लेकिन इस रिमोट सिस्टम में इंटरनेट कनेक्शन नहीं है। मैं ssh आधारित वीपीएन का उपयोग करके अपने स्थानीय कंप्यूटर के माध्यम से इंटरनेट तक पहुंच के साथ रिमोट सिस्टम प्रदान करना चाहता हूं। मैं इसे कैसे पूर्ण करूं? मैंने निम्नलिखित कोशिश की है, जो आंशिक रूप से काम करता है। 'आंशिक रूप से काम' से मेरा तात्पर्य यह है कि कनेक्शन पैकेट (सिंक पैकेट) मेरे स्थानीय कंप्यूटर पर भेजे जाते हैं लेकिन इंटरनेट से कनेक्शन स्थापित करने में विफल रहते हैं। मैं स्थानीय कंप्यूटर पर पैकेट कैप्चर करने के लिए tcpdump का उपयोग कर रहा हूं। स्थानीय कंप्यूटर और रिमोट सिस्टम दोनों चल रहे हैं सेंटो 7।

सेटअप - नोट: नीचे दिए गए आदेश क्रम में चलाए जा रहे हैं। उपयोगकर्ता @ दूरस्थ कमांड दूरस्थ सर्वर पर चलाए जाते हैं और उपयोगकर्ता @ स्थानीय कमांड स्थानीय कंप्यूटर पर चलाए जाते हैं।

[उपयोगकर्ता @ रिमोट ~] $ आईपी Addr शो
1: lo: mtu 65536 qdisc noqueue राज्य UNKNOWN 
    लिंक / लूपबैक 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 स्कोप होस्ट लो
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
    inet6 :: 1/128 स्कोप होस्ट 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
2: eth0: mtu 1500 qdisc pfifo_fast स्थिति UP qlen 1000
    लिंक / ईथर AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 गुंजाइश वैश्विक गतिशील eth0
       valid_lft 1785sec पसंदीदा_lft 1785sec
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 गुंजाइश 
       मान्य_लिफ्ट २५ ९ १ ९ ecs preferred preferred_से ६०४ecec। preferred___
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 स्कोप लिंक 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
[उपयोगकर्ता @ स्थानीय ~] $ आईपी Addr शो
1: lo: mtu 65536 qdisc noqueue राज्य UNKNOWN 
    लिंक / लूपबैक 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 स्कोप होस्ट लो
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
    inet6 :: 1/128 स्कोप होस्ट 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
2: eth0: mtu 1500 qdisc pfifo_fast स्थिति UP qlen 1000
    लिंक / ईथर AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 गुंजाइश वैश्विक गतिशील eth0
       valid_lft 1785sec पसंदीदा_lft 1785sec
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 गुंजाइश 
       मान्य_लिफ्ट २५ ९ १ ९ ecs preferred preferred_से ६०४ecec। preferred___
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 स्कोप लिंक 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए

रिमोट सिस्टम पर tun0 इंटरफ़ेस बनाएँ ।

[उपयोगकर्ता @ रिमोट ~] $ sudo ip tuntap ट्यून मोड ट्यून जोड़ें
[उपयोगकर्ता @ रिमोट ~] $ आईपी Addr शो
1: lo: mtu 65536 qdisc noqueue राज्य UNKNOWN 
    लिंक / लूपबैक 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 स्कोप होस्ट लो
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
    inet6 :: 1/128 स्कोप होस्ट 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
2: eth0: mtu 1500 qdisc pfifo_fast स्थिति UP qlen 1000
    लिंक / ईथर AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 गुंजाइश वैश्विक गतिशील eth0
       valid_lft 1785sec पसंदीदा_lft 1785sec
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 गुंजाइश 
       मान्य_लिफ्ट २५ ९ १ ९ ecs preferred preferred_से ६०४ecec। preferred___
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 स्कोप लिंक 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
3: tun0: mtu 1500 qdisc noop स्थिति DOWN qlen 500
    लिंक / कोई भी 

स्थानीय सिस्टम पर tun0 इंटरफ़ेस बनाएँ ।

[उपयोगकर्ता @ स्थानीय ~] $ sudo ip tuntap में tun0 मोड ट्यून जोड़ें
[उपयोगकर्ता @ स्थानीय ~] $ आईपी Addr शो
1: lo: mtu 65536 qdisc noqueue राज्य UNKNOWN 
    लिंक / लूपबैक 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 स्कोप होस्ट लो
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
    inet6 :: 1/128 स्कोप होस्ट 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
2: eth0: mtu 1500 qdisc pfifo_fast स्थिति UP qlen 1000
    लिंक / ईथर AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 गुंजाइश वैश्विक गतिशील eth0
       valid_lft 1785sec पसंदीदा_lft 1785sec
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 गुंजाइश 
       मान्य_लिफ्ट २५ ९ १ ९ ecs preferred preferred_से ६०४ecec। preferred___
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 स्कोप लिंक 
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
3: tun0: mtu 1500 qdisc noop स्थिति DOWN qlen 500
    लिंक / कोई भी

Tun0 के लिए एक आईपी पता निर्दिष्ट करें और इसे लाएं:

[user @ local ~] $ sudo ip addr add 10.0.2.1/30 dev tun0
[user @ local ~] $ sudo ip लिंक सेट dev tun0 अप
[उपयोगकर्ता @ स्थानीय ~] $ ip addr शो tun0
3: tun0: mtu 1500 qdisc pfifo_fast स्थिति डाउनलोड qlen 500
    लिंक / कोई भी 
    inet 10.0.2.1/30 स्कोप ग्लोबल ट्यून
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए
[उपयोगकर्ता @ रिमोट ~] $ sudo ip Addr 10.0.2.2/30 देव ट्यून जोड़ें
[उपयोगकर्ता @ रिमोट ~] $ sudo ip लिंक सेट dev tun0 अप
[उपयोगकर्ता @ रिमोट ~] $ ip addr शो tun0
3: tun0: mtu 1500 qdisc pfifo_fast स्थिति डाउनलोड qlen 500
    लिंक / कोई भी 
    inet 10.0.2.2/30 स्कोप ग्लोबल ट्यून
       valid_lft हमेशा के लिए पसंद_lft हमेशा के लिए

सुरंग को सक्षम करने के लिए दूरस्थ और स्थानीय दोनों प्रणालियों पर sshd_config संशोधित करें:

[उपयोगकर्ता @ रिमोट ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config 
PermitTunnel पॉइंट-टू-पॉइंट
[उपयोगकर्ता @ स्थानीय ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config 
PermitTunnel पॉइंट-टू-पॉइंट

Ssh सुरंग बनाएं:

[उपयोगकर्ता @ स्थानीय ~] $ sudo ssh -f -w0: 0 रूट @ रिमोट सच
रूट @ रिमोट का पासवर्ड: 
[उपयोगकर्ता @ स्थानीय ~] $ ps aux | grep रूट @ रिमोट
रूट 1851 0.0 0.0 76112 1348? Ss 23:12 0:00 ssh -f -w0: 0 रूट @ रिमोट सच

नए आईपी पते का उपयोग कर दोनों सर्वर पर टेस्ट पिंग:

[उपयोगकर्ता @ स्थानीय ~] $ ping 10.0.2.2 -c 2
पिंग 10.0.2.2 (10.0.2.2) 56 (84) डेटा का बाइट्स।
10.0.2.2 से 64 बाइट्स: icmp_seq = 1 ttl = 64 समय = 1.68 एमएस
10.0.2.2 से 64 बाइट्स: icmp_seq = 2 ttl = 64 समय = 0.861 एमएस

--- 10.0.2.2 पिंग आँकड़े ---
2 पैकेट प्रेषित, 2 प्राप्त, 0% पैकेट नुकसान, समय 1002ms
आरटी मिनट / एवीजी / अधिकतम / महादेव = 0.861 / 1.274 / 1.688 / 0.415 एमएस
[उपयोगकर्ता @ रिमोट ~] $ ping 10.0.2.1 -c 2
पिंग 10.0.2.1 (10.0.2.1) 56 (84) डेटा का बाइट्स।
10.0.2.1 से 64 बाइट्स: icmp_seq = 1 ttl = 64 समय = 0.589 एमएस
10.0.2.1 से 64 बाइट्स: icmp_seq = 2 ttl = 64 समय = 0.889 एमएस

--- 10.0.2.1 पिंग आँकड़े ---
2 पैकेट प्रेषित, 2 प्राप्त, 0% पैकेट नुकसान, समय 1000ms
आरटी मिनट / एवीजी / अधिकतम / महादेव = 0.589 / 0.739 / 0.889 / 0.150 एमएस
[उपयोगकर्ता @ रिमोट ~] $ मार्ग
कर्नेल आईपी रूटिंग टेबल
डेस्टिनेशन गेटवे जेनमस्क फ्लैग्स मेट्रिक रेफरी इफ़ेक्ट
डिफ़ॉल्ट गेटवे 0.0.0.0 UG 100 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0
AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[उपयोगकर्ता @ रिमोट ~] $ आईपी मार्ग शो
AAA.BBB.CCC.1 देव eth0 प्रोटो स्टेटिक मैट्रिक 100 के माध्यम से डिफ़ॉल्ट 
10.0.2.0/30 देव टुन 0 प्रोटो कर्नेल स्कोप लिंक src 10.0.2.2 
AAA.BBB.CCC.0 / 24 देव eth0 प्रोटो कर्नेल स्कोप लिंक src AAA.BBB.CCC.31 मीट्रिक 100 

Google ip पते प्राप्त करें:

[उपयोगकर्ता @ स्थानीय ~] $ nslookup google.com
सर्वर: सर्वर
पता: सर्वर # 53

गैर-आधिकारिक उत्तर:
नाम: google.com
पता: 173.194.219.101
नाम: google.com
पता: 173.194.219.100
नाम: google.com
पता: 173.194.219.113
नाम: google.com
पता: 173.194.219.102
नाम: google.com
पता: 173.194.219.139
नाम: google.com
पता: 173.194.219.138

महत्वपूर्ण: मैंने एक अलग समय पर उपरोक्त आदेश चलाया और एक अलग परिणाम प्राप्त किया। यह मत मानिए कि आपकी प्रतिक्रिया उपरोक्त nslookup के लिए मेरी ही होगी।

चूँकि Google के सभी IP पते 173.194.219 से शुरू होते हैं, इन सभी IP पतों को स्थानीय कंप्यूटर के माध्यम से रूट करने देता है।

[उपयोगकर्ता @ रिमोट ~] $ सुडो आईपी मार्ग 173.194.219.0/24 देव ट्यून जोड़ें
[उपयोगकर्ता @ रिमोट ~] $ मार्ग
कर्नेल आईपी रूटिंग टेबल
डेस्टिनेशन गेटवे जेनमस्क फ्लैग्स मेट्रिक रेफरी इफ़ेक्ट
डिफ़ॉल्ट गेटवे 0.0.0.0 UG 100 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0
AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
173.194.219.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
[उपयोगकर्ता @ रिमोट ~] $ आईपी मार्ग शो
AAA.BBB.CCC.1 देव eth0 प्रोटो स्टेटिक मैट्रिक 100 के माध्यम से डिफ़ॉल्ट 
10.0.2.0/30 देव टुन 0 प्रोटो कर्नेल स्कोप लिंक src 10.0.2.2 
AAA.BBB.CCC.0 / 24 देव eth0 प्रोटो कर्नेल स्कोप लिंक src AAA.BBB.CCC.31 मीट्रिक 100 
173.194.219.0/24 देव ट्यून 0 गुंजाइश लिंक 

Ip_forwarding सक्षम करें:

[उपयोगकर्ता @ स्थानीय ~] $ grep ip_forward /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[उपयोगकर्ता @ स्थानीय ~] $ sudo सेवा नेटवर्क पुनः आरंभ
रिस्टार्टिंग नेटवर्क (सिस्टमएक्टएल के माध्यम से): [ठीक है]

Tcpdump का उपयोग करके स्थानीय कंप्यूटर पर सेटअप पैकेट कैप्चर करें:

[user @ local ~] $ sudo tcpdump -nn -vv 'port not 22' -i any
tcpdump: किसी भी पर, लिंक-प्रकार LINUX_SLL (लिनक्स पका हुआ) सुनकर, आकार 65535 बाइट कैप्चर करें

दूरस्थ सर्वर से Google से कनेक्ट करने का प्रयास करें।

[उपयोगकर्ता @ रिमोट ~] $ opensl s_client -connect google.com:443
सॉकेट: होस्ट करने के लिए कोई मार्ग नहीं
कनेक्ट: errno = 113

जैसे ही रिमोट सर्वर पर खुलता कमांड चलता है, tcpdump कुछ पैकेटों को कैप्चर करता है:

    10.0.2.2.52768> 173.194.219.102.443: झंडे [S], cksum 0x8702 (सही), seq 994650730, 29200 जीतें, विकल्प [mss 1460, ssok, TS val 7701438 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.247753 IP (tos 0x0, ttl 64, id 46037, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.48774> 173.194.219.100.443: झंडे [S], cksum 0x47a7 (सही), seq 2218733674, 29200 जीतें, विकल्प [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.247883 IP (tos 0xc0, ttl 64, id 9538, ऑफसेट 0, झंडे [कोई नहीं], प्रोटो ICMP (1), लंबाई 88)
    10.0.2.1> 10.0.2.2: ICMP होस्ट 173.194.219.100 अगम्य - व्यवस्थापक निषिद्ध, लंबाई 68
    IP (tos 0x0, ttl 63, id 46037, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.48774> 173.194.219.100.443: झंडे [S], cksum 0x47a7 (सही), seq 2218733674, 29200 जीतें, विकल्प [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.253068 IP (tos 0x0, ttl 64, id 26282, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.51312> 173.194.219.101.443: झंडे [S], cksum 0x6ff8 (सही), seq 2634016105, 29200 जीत, विकल्प [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.254771 IP (tos 0xc0, ttl 64, id 9539, ऑफसेट 0, झंडे [कोई नहीं], प्रोटो ICMP (1), लंबाई 88)
    10.0.2.1> 10.0.2.2: ICMP होस्ट 173.194.219.101 अप्राप्य - व्यवस्थापक निषिद्ध, लंबाई 68
    IP (tos 0x0, ttl 63, id 26282, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.51312> 173.194.219.101.443: झंडे [S], cksum 0x6ff8 (सही), seq 2634016105, 29200 जीत, विकल्प [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.258805 IP (tos 0x0, ttl 64, id 9293, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.33686> 173.194.219.139.443: झंडे [S], cksum 0x542b (सही), seq 995927943, 29200 जीतें, विकल्प [mss 1460, ssok, TS val 7701450 ecr 0, nop, wscale 7], लंबाई 0]।
00: 49: 33.258845 IP (tos 0xc0, ttl 64, id 9540, ऑफसेट 0, झंडे [कोई नहीं], प्रोटो ICMP (1), लंबाई 88)
    10.0.2.1> 10.0.2.2: ICMP होस्ट 173.194.219.139 अप्राप्य - व्यवस्थापक निषिद्ध, लंबाई 68
    IP (tos 0x0, ttl 63, id 9293, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.33686> 173.194.219.139.443: झंडे [S], cksum 0x542b (सही), seq 995927943, 29200 जीतें, विकल्प [mss 1460, ssok, TS val 7701450 ecr 0, nop, wscale 7], लंबाई 0]।
^ सी
13 पैकेट पकड़े गए
13 पैकेट फ़िल्टर द्वारा प्राप्त
0 पैकेट गिरी कर्नेल द्वारा

Tcpdump का उपयोग करके कैप्चर किए गए पैकेट बताते हैं कि कनेक्शन स्थापित करने का प्रयास किया गया है (सिंक पैकेट भेजे गए हैं) लेकिन कुछ भी प्राप्त नहीं हुआ है। इसके अलावा एक संदेश है 10.0.2.1 > 10.0.2.2: ICMP host 173.194.219.139 unreachable - admin prohibited, length 68जो एक समस्या का सुझाव देता है।

इस मुद्दे के आसपास काम करने के बारे में कोई सुझाव? क्या iptable नियम हैं जिन्हें जोड़ने की आवश्यकता है? कोई फ़ायरवॉल समस्याएँ (फ़ायरवॉल-डी?)।


नोट # 1
आउटपुट से iptables-save:

[उपयोगकर्ता @ स्थानीय ~] $ sudo iptables -t nat-POSTROUTING -s 10.0.2.2/32! -d 10.0.2.1/30 -j MASQUERADE -o eth0
[उपयोगकर्ता @ स्थानीय ~] $ sudo iptables-save
# Satt 15 01:40:57 2017 को iptables-save v1.4.21 द्वारा जनरेट किया गया
* नेट
: स्वीकृति के बारे में [35: 8926]
: INPUT ACCEPT [1:84]
: OUTPUT ACCEPT [6: 439]
: पोस्टिंग खाता [6: 439]
: OUTPUT_direct - [0: 0]
: POSTROUTING_ZONES - [0: 0]
: POSTROUTING_ZONES_SOURCE - [0: 0]
: POSTROUTING_direct - [0: 0]
: POST_public - [0: 0]
: POST_public_allow - [0: 0]
: POST_public_deny - [0: 0]
: POST_public_log - [0: 0]
: PREROUTING_ZONES - [0: 0]
: PREROUTING_ZONES_SOURCE - [0: 0]
: PREROUTING_direct - [0: 0]
: PRE_public - [0: 0]
: PRE_public_allow - [0: 0]
: PRE_public_deny - [0: 0]
: PRE_public_log - [0: 0]
-एक PREROUTING -j PREROUTING_direct
-एक PREROUTING -j PREROUTING_ZONES_SOURCE
-एक PREROUTING -j PREROUTING_ZONES
-आउटपुत -ज ओटपुट_गले
-एक पोस्टिंग -j POSTROUTING_direct
-एक पोस्टिंग -j POSTROUTING_ZONES_SOURCE
-एक पोस्टिंग -j POSTROUTING_ZONES
-एक पोस्टिंग 10.0 -.2.2/32! -d 10.0.2.0/30 -j MASQUERADE
-A POSTROUTING_ZONES -o eth0 -g POST_public
-एक POSTROUTING_ZONES -g POST_public
-एक POST_public -j POST_public_log
-एक POST_public -j POST_public_deny
-एक POST_public -j POST_public_allow
-एक PREROUTING_ZONES -i eth0 -g PRE_public
-एक PREROUTING_ZONES -g PRE_public
-एक PRE_public -j PRE_public_log
-एक PRE_public -j PRE_public_deny
-एक PRE_public -j PRE_public_allow
COMMIT
# शनि १५ 01:40:57 2017 को पूर्ण हुआ
# Satt 15 01:40:57 2017 को iptables-save v1.4.21 द्वारा जनरेट किया गया
* वध करना
: स्वीकृति के बारे में [१६ ९: १ ]६ AC AC]
: INPUT ACCEPT [144: 11583]
: फॉरवर्ड ACCEPT [0: 0]
: OUTPUT ACCEPT [80: 8149]
: पोस्टिंग खाता [80: 8149]
: FORWARD_direct - [0: 0]
: INPUT_direct - [0: 0]
: OUTPUT_direct - [0: 0]
: POSTROUTING_direct - [0: 0]
: PREROUTING_ZONES - [0: 0]
: PREROUTING_ZONES_SOURCE - [0: 0]
: PREROUTING_direct - [0: 0]
: PRE_public - [0: 0]
: PRE_public_allow - [0: 0]
: PRE_public_deny - [0: 0]
: PRE_public_log - [0: 0]
-एक PREROUTING -j PREROUTING_direct
-एक PREROUTING -j PREROUTING_ZONES_SOURCE
-एक PREROUTING -j PREROUTING_ZONES
-एक INPUT -j INPUT_direct
-एक FORWARD -j FORWARD_direct
-आउटपुत -ज ओटपुट_गले
-एक पोस्टिंग -j POSTROUTING_direct
-एक PREROUTING_ZONES -i eth0 -g PRE_public
-एक PREROUTING_ZONES -g PRE_public
-एक PRE_public -j PRE_public_log
-एक PRE_public -j PRE_public_deny
-एक PRE_public -j PRE_public_allow
COMMIT
# शनि १५ 01:40:57 2017 को पूर्ण हुआ
# Satt 15 01:40:57 2017 को iptables-save v1.4.21 द्वारा जनरेट किया गया
* सुरक्षा
: INPUT ACCEPT [2197: 163931]
: फॉरवर्ड ACCEPT [0: 0]
: OUTPUT ACCEPT [1229: 185742]
: FORWARD_direct - [0: 0]
: INPUT_direct - [0: 0]
: OUTPUT_direct - [0: 0]
-एक INPUT -j INPUT_direct
-एक FORWARD -j FORWARD_direct
-आउटपुत -ज ओटपुट_गले
COMMIT
# शनि १५ 01:40:57 2017 को पूर्ण हुआ
# Satt 15 01:40:57 2017 को iptables-save v1.4.21 द्वारा जनरेट किया गया
*कच्चा
: प्रेसिंग के बारे में [2362: 184437]
: OUTPUT ACCEPT [1229: 185742]
: OUTPUT_direct - [0: 0]
: PREROUTING_direct - [0: 0]
-एक PREROUTING -j PREROUTING_direct
-आउटपुत -ज ओटपुट_गले
COMMIT
# शनि १५ 01:40:57 2017 को पूर्ण हुआ
# Satt 15 01:40:57 2017 को iptables-save v1.4.21 द्वारा जनरेट किया गया
* फिल्टर
: खाता स्वीकार करें [0: 0]
: फॉरवर्ड ACCEPT [0: 0]
: OUTPUT ACCEPT [80: 8149]
: FORWARD_IN_ZONES - [0: 0]
: FORWARD_IN_ZONES_SOURCE - [0: 0]
: FORWARD_OUT_ZONES - [0: 0]
: FORWARD_OUT_ZONES_SOURCE - [0: 0]
: FORWARD_direct - [0: 0]
: FWDI_public - [0: 0]
: FWDI_public_allow - [0: 0]
: FWDI_public_deny - [0: 0]
: FWDI_public_log - [0: 0]
: FWDO_public - [0: 0]
: FWDO_public_allow - [0: 0]
: FWDO_public_deny - [0: 0]
: FWDO_public_log - [0: 0]
: INPUT_ZONES - [0: 0]
: INPUT_ZONES_SOURCE - [0: 0]
: INPUT_direct - [0: 0]
: IN_public - [0: 0]
: IN_public_allow - [0: 0]
: IN_public_deny - [0: 0]
: IN_public_log - [0: 0]
: OUTPUT_direct - [0: 0]
-एक INPUT- एम कॉनट्रैक -क्टस्टेट संबंधित, एस्टैब्लिशड -j ACCEPT
-एक INPUT -i लो -j ACCEPT
-एक INPUT -j INPUT_direct
-एक INPUT -j INPUT_ZONES_SOURCE
-एक INPUT -j INPUT_ZONES
-एएनपीयूटी-एम कॉनट्रैक - एक्टस्टेट इन्वालिड -जे डीआरओपी
-एक INPUT -J REJECT --reject-with icmp-host-निषिद्ध है
-एक फॉरवर्ड-एम कॉनट्रैक -स्टेटस्टेट संबंधित, इस्टैब्लिशड -j ACCEPT
-ए फॉरवर्ड -आई लो-जे एसीसीपीटी
-एक FORWARD -j FORWARD_direct
-एक फ़ोरवर्ड -j फॉरवर्ड_IN_ZONES_SOURCE
-ए फॉरवर्ड -जे फॉरवर्ड_आईएन_जोन
-एक फ़ोरवर्ड -j फॉरवर्ड_बस_ज़ोन_सौर
-एक फ़ोरवर्ड -j फॉरवर्ड_बस_जोन
-ए फॉरवर्ड -एम कॉनट्रैक - एक्टस्टेट INVALID -j DROP
-जवाब -j REJECT --reject-with icmp-host-निषिद्ध है
-आउटपुत -ज ओटपुट_गले
-एक FORWARD_IN_ZONES -i eth0 -g FWDI_public
-एक FORWARD_IN_ZONES -g FWDI_public
-एक FORWARD_OUT_ZONES -o eth0 -g FWDO_public
-एक FORWARD_OUT_ZONES -g FWDO_public
-एक FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-एक FWDI_public -j FWDI_public_allow
-एक FWDI_public -p icmp -j ACCEPT
-एक FWDO_public -j FWDO_public_log
-एक FWDO_public -j FWDO_public_deny
-एक FWDO_public -j FWDO_public_allow
-एक INPUT_ZONES -i eth0 -g IN_public
-एक INPUT_ZONES -g IN_public
-एएन_पोलिस -ज आईएन_पोलिस_लॉग
-एएन_पोलिस -ज आईएन_पोलिस_डेन
-एएन_पोलिस -ज आईएन_पोलिस_लो
-एक IN_public -p icmp -j ACCEPT
-एक IN_public_allow -p tcp -m tcp --dport 22 -m conjtrack --ctstate NEW -j ACCEPT
COMMIT
# शनि १५ 01:40:57 2017 को पूर्ण हुआ


नोट # 2:
मैं एक अपाचे वेबसर्वर को एक अलग होस्ट पर सेट करता हूं जो केवल स्थानीय सर्वर तक पहुंच है। मैं वेबसर्वर पर tcpdump को पोर्ट 80 पर सुन रहा था। जब मैं दौड़ता telnet webserver 80हूं तो मैं निम्नलिखित पैकेटों को पकड़ लेता हूं । टीसीपी कनेक्शन स्थापित होने के बाद से यह अपेक्षित व्यवहार है (S, S-Ack, Ack)।

[उपयोगकर्ता @ वेबसर्वर ~] $ sudo tcpdump -nn -vv 'पोर्ट नहीं 22 और 80' -i0 
tcpdump: eth0, लिंक-टाइप EN10MB (इथरनेट) को सुनकर, 65535 बाइट्स कैप्चर करें
07: 17: 30.411474 आईपी (टोस 0x10, टीटीएल 64, आईडी 34376, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    local.server.46710> web.server.80: Flags [S], cksum 0x8412 (गलत -> 0x6d96), seq 3018586542, 29200 जीतें, विकल्प [mss 1460, sackOK, TS val 3047398 ecr 0, nop, wscale 7]। , लंबाई 0
07: 17: 30.411557 आईपी (टोस 0x0, टीटीएल 64, आईडी 0, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    web.server.80> local.server.46710: झंडे [एस], cksum 0x8412 (गलत -> 0x9114), seq 2651711943, ack 3018586543, 28860 जीतें, विकल्प [mss 1460, sackOK, TS val 37704524 ecr 3047398, nopop8। , wscale 7], लंबाई 0
07: 17: 30.411725 आईपी (टोस 0x10, टीटीएल 64, आईडी 34377, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 52)
    local.server.46710> web.server.80: Flags [।], cksum 0x840a (गलत -> 0x301c), seq 1, ack 1, 229 जीतें, विकल्प [nop, nop, TS val 3047398 ecr 37704524], लंबाई 0

जब मैं स्थानीय सर्वर के माध्यम से दूरस्थ सर्वर से वेबसर्वर से कनेक्ट करने का प्रयास करता हूं, तो वेबसर्वर पर tcpdump किसी भी पैकेट (प्रारंभिक सिंक भी नहीं) पर कब्जा नहीं करता है, लेकिन स्थानीय सर्वर वेबसर्वर (नीचे देखें) को भेजे जा रहे सिंक पैकेट को पकड़ लेता है। यह मुझे विश्वास दिलाता है कि कुछ पैकेटों को वेबसर्वर पर भेजे जाने से रोका जा रहा है - शायद एक गलत धारणा या फ़ायरवॉल।

[उपयोगकर्ता @ स्थानीय ~] $ sudo tcpdump -nn -vv 'पोर्ट नहीं 22 और 80' -आई कोई
tcpdump: किसी भी पर, लिंक-प्रकार LINUX_SLL (लिनक्स पका हुआ) सुनकर, आकार 65535 बाइट कैप्चर करें
02: 24: 09.135842 आईपी (टोस 0x10, टीटीएल 64, आईडी 38062, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.50558> web.server.80: फ्लैग्स [S], cksum 0x668d (सही), seq 69756226, 29200 जीतें, विकल्प [mss 1460, sackOK, TS 780524 ecr 0, nop, wscale 7], लंबाई 0।

महत्वपूर्ण: पैकेट को eth0 के माध्यम से रूट नहीं किया जा रहा है, लेकिन इसके बजाय पैकेट को tun0 (जो विफल रहता है) के माध्यम से वेबसर्वर को भेजने का प्रयास किया जाता है। मैं tun0 इंटरफ़ेस पर tcpdump चलाकर इसकी पुष्टि कर सकता हूं:

[उपयोगकर्ता @ स्थानीय ~] $ sudo tcpdump -nn -vv 'पोर्ट नहीं 22 और 80' -i tun0
tcpdump: ट्यून 0, लिंक-टाइप RAW (रॉ IP) को सुनकर, 65535 बाइट्स कैप्चर करें
02: 28: 10.295972 IP (tos 0x10, ttl 64, id 46976, ऑफसेट 0, झंडे [DF], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.50560> webserver.80: फ्लैग्स [S], cksum 0xd560 (सही), seq 605366388, 29200 जीतें, विकल्प [mss 1460, sackOK, TS val 5051684 ecr 0, nop, wscale 7], लंबाई 0।


नोट # 3:
मैंने स्थानीय कंप्यूटर में फ़ायरवॉल को बंद कर दिया और वेबसर्वर द्वारा सिंक पैकेट प्राप्त किए गए।

[उपयोगकर्ता @ स्थानीय ~] $ sudo systemctl फ़ायरवॉल को रोकते हैं
[उपयोगकर्ता @ वेबसर्वर ~] $ sudo tcpdump -nn -vv 'पोर्ट नहीं 22 और 80' -i0
tcpdump: eth0, लिंक-टाइप EN10MB (इथरनेट) को सुनकर, 65535 बाइट्स कैप्चर करें
08: 25: 17.390912 आईपी (टोस 0x10, टीटीएल 63, आईडी 61767, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.50580> web.server.80: फ्लैग्स [S], cksum 0x30dc (सही), seq 2601927549, 29200 जीतें, विकल्प [mss 1460, sackOK, TS val12123514 ecr 0, nop, wscale 7], लंबाई 0।
08: 25: 17.391003 आईपी (टोस 0x0, टीटीएल 64, आईडी 0, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    web.server.80> 10.0.2.2.50580: झंडे [एस], cksum 0x4e23 (गलत -> 0xa316), seq 959115533, ack 2601927550, 28960 जीतें, विकल्प [mss 1460, sackOK, TS val 41771503 ecr 7123514, nop। , wscale 7], लंबाई 0
08: 25: 17.391192 आईपी (टोस 0x0, टीटीएल 128, आईडी 60032, ऑफसेट 0, झंडे [कोई नहीं], प्रोटो टीसीपी (6), लंबाई 40)
    10.0.2.2.50580> web.server.80: झंडे [आर], cksum 0x7339 (सही), seq 2601927550, 8192 जीत, लंबाई 0
08: 25: 18.393794 आईपी (टोस 0x10, टीटीएल 63, आईडी 61768, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    10.0.2.2.50580> web.server.80: फ्लैग्स [S], cksum 0x2cf1 (सही), seq 2601927549, 29200 जीतें, विकल्प [mss 1460, sackOK, TS 7124517 ecr 0, nop, wscale 7], लंबाई 0।
08: 25: 18.393898 आईपी (टोस 0x0, टीटीएल 64, आईडी 0, ऑफसेट 0, झंडे [डीएफ], प्रोटो टीसीपी (6), लंबाई 60)
    web.server.80> 10.0.2.2.50580: झंडे [एस], cksum 0x4e23 (गलत -> 0x7e71), seq 974785773, ack 2601927550, 28960 जीतें, विकल्प [mss 1460, sackOK, TS val 41772506 ecr 7124517, nop 71717 , wscale 7], लंबाई 0
08: 25: 18.394003 IP (tos 0x0, ttl 128, id 60033, ऑफसेट 0, झंडे [कोई नहीं], प्रोटो टीसीपी (6), लंबाई 40)
    10.0.2.2.50580> web.server.80: फ्लैग्स [R], cksum 0x566a (सही), seq 2601927550, 8192 जीत, लंबाई 0

अब स्पष्ट रूप से, वेबसर्वर को पैकेट भेजे जाने से पहले स्थानीय सर्वर के आईपी पते से मेल करने के लिए स्रोत आईपी को अपडेट करने की आवश्यकता होती है। जैसा कि @xin ने सुझाव दिया, NAT को स्थानीय सर्वर पर सेटअप करने की आवश्यकता है।


नोट # 4:
एक बार जब मैं वेबसर्वर से कनेक्ट करने का प्रयास करता हूं, तो मैं देख सकता हूं कि नियम 9 के लिए pkts की गिनती 1 से ऊपर जाती है (जैसा कि नीचे देखा गया है)।

[उपयोगकर्ता @ स्थानीय ~] $ sudo iptables -nvL --line-नंबर
..........
चेन फॉरवर्ड (पॉलिसी ACCEPT 0 पैकेट, 0 बाइट्स)
संख्या pkts बाइट्स लक्ष्य विरोध आउट सोर्स गंतव्य में चुनते हैं         
1 0 0 ACCEPT सब - * * 0.0.0.0/0 0.0.0.0/0 cststate संबंधित, पढ़े-लिखे
2 0 0 सभी स्वीकार करें - लो * 0.0.0.0/0 0.0.0.0/0           
3 1 60 FORWARD_direct सभी - * * 0.0.0.0/0 0.0.0.0/0           
4 1 60 FORWARD_IN_ZONES_SOURCE सभी - * * 0.0.0.0/0 0.0.0.0/0           
5 1 60 FORWARD_IN_ZONES सभी - * * 0.0.0.0/0 0.0.0.0/0           
6 1 60 FORWARD_OUT_ZONES_SOURCE सभी - * * 0.0.0.0/0 0.0.0.0/0           
7 1 60 FORWARD_OUT_ZONES सभी - * * 0.0.0.0/0 0.0.0.0/0           
8 0 0 DROP सभी - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
९ १ ६० ६० सबके सामने - * * ०.०.०.०.०३ ०.०.०.००३ अस्वीकार-आईसीएफएम-होस्ट-निषिद्ध
..........
[उपयोगकर्ता @ स्थानीय ~] $ sudo iptables -D FORWARD 9

एक बार FORWARD श्रृंखला से नियम 9 हटा दिया गया है (ऊपर से, जैसा कि @xin ने सुझाव दिया है), मैं वेबसर्वर से कनेक्ट करने में सक्षम हूं।

[उपयोगकर्ता @ स्थानीय ~] $ sudo iptables -nvL --line-नंबर
..........
चेन फॉरवर्ड (पॉलिसी ACCEPT 1 पैकेट, 60 बाइट्स)
संख्या pkts बाइट्स लक्ष्य विरोध आउट सोर्स गंतव्य में चुनते हैं         
1 12 5857 ACCEPT सब - * * 0.0.0.0/0 0.0.0.0/0 cststate संबंधित, मान्यता प्राप्त
2 0 0 सभी स्वीकार करें - लो * 0.0.0.0/0 0.0.0.0/0           
3 2 120 FORWARD_direct सभी - * * 0.0.0.0/0 0.0.0.0/0           
4 2 120 FORWARD_IN_ZONES_SOURCE सभी - * * 0.0.0.0/0 0.0.0.0/0           
5 2 120 FORWARD_IN_ZONES सभी - * * 0.0.0.0/0 0.0.0.0/0           
6 2 120 FORWARD_OUT_ZONES_SOURCE सभी - * * 0.0.0.0/0 0.0.0.0/0           
7 2 120 FORWARD_OUT_ZONES सभी - * * 0.0.0.0/0 0.0.0.0/0           
8 0 0 DROP सभी - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
..........

जवाबों:


4

पैकेट के स्रोत पते को स्थानीय मशीन के पते में से एक द्वारा प्रतिस्थापित किया जाना चाहिए ताकि स्थानीय मशीन द्वारा उत्तर प्राप्त किए जा सकें, अन्यथा इन पैकेटों को अगले राउटर में भेजने का कोई (अच्छा) कारण नहीं है, फिर भी उत्तर को पकड़ा नहीं जा सकता है। इन पैकेटों के स्रोत पते को बदलने के लिए iptables MASQUERADEऔर SNATउपयोगी हैं:

[user@local ~]$ iptables -t nat -A POSTROUTING -s 10.0.2.2/32 ! -d 10.0.2.1/30 -j MASQUERADE -o eth0

@ प्रतिक्रिया के लिए धन्यवाद। मैंने आपके द्वारा प्रदान की गई कमांड को चलाया, लेकिन मुझे अभी भी वही प्रतिक्रिया मिली है। मैंने eth0 और tun0 पर tcpdump को चलाया। पैकेट को eth0 पर रूट नहीं किया गया है। tun0 अभी भी Google तक पहुंचने की कोशिश कर रहा है। क्या मुझे किसी प्रकार से पैकेट को eth0 पर t0 से रूट करने की आवश्यकता है?
अली

1
यदि स्थानीय मशीन इंटरनेट से कनेक्ट करने के लिए इंटरफ़ेस eth0 का उपयोग करती है, तो पैकेट को इस कमांड के बिना भी eth0 पर जाना चाहिए। तो शायद कुछ फ़ायरवॉल सेटिंग शामिल है। क्या आप iptables-saveस्थानीय मशीन का आउटपुट डाल सकते हैं ?
रीथ

मैंने iptables- आउटपुट को मूल पोस्ट में जोड़ा है।
अली

फायरवॉल को बंद करने की जरूरत थी। फायरवालड को बंद करने के बाद मैंने आपकी आज्ञा चलाई, और कनेक्शन ने काम करना शुरू कर दिया! आपकी सहायता की सराहना! प्रगति देखने के लिए मूल पोस्ट में चेकआउट नोट्स।
अली

1
बहुत बढ़िया। यह लग रहा है समस्या iptable नियम है -A FORWARD -j REJECT --reject-with icmp-host-prohibited। आपकी मशीन पर आने वाले पैकेट और आपकी मशीन से गंतव्य का पता निकलता है, फ़ोरवर्ड श्रृंखला में जाएगा, इसलिए इस नियम को छोड़ दें।
रीथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.