निम्नलिखित समस्या मेरे साथ एक बड़ी समस्या का एक टुकड़ा है। अन्य सभी तत्व अब तक काम कर रहे हैं, इसलिए मैं बहुत छोटे टुकड़े का वर्णन करने की कोशिश करूंगा, जिसकी मुझे समस्या है।
मुझे एक linux मशीन मिली है, जिसके साथ tun0 (टनलिंग इंटरफ़ेस) और eth0 (चुड़ैल इंटरनेट के लिए मेरा डिफ़ॉल्ट गेटवे है) है।
लक्ष्य: मेरा लक्ष्य tun0 से आने वाले पैकेट प्राप्त करना है, और उन्हें डिफ़ॉल्ट गेटवे पर अग्रेषित करना है। तो वास्तव में काफी सरल NAT मामला है, जहां मैं tun0 के साथ इंटरनेट को "साझा" करना चाहता हूं जो भौतिक इंटरफ़ेस को विफल करता है।
ट्यून का उपयोग कर बनाया गया है
sudo openvpn --mktun --dev tun0 --user USER
sudo ip addr add 10.2.0.1/24 dev tun0
sudo ip link set tun0 up
तो मेरे पास यह है और चल रहा है, मैं इसे पिंग कर सकता हूं आदि इसके अलावा, मेरे पास C ++ एप्लिकेशन है, जो इस TUN डिवाइस से जुड़ता है, इसे पढ़ सकता है और इसे लिख सकता है। (fti: यहाँ एक ट्यूटोरियल है जिसका मैंने अनुसरण किया है: http://backreference.org/2010/03/26/tuntap-interface-tutorial/ )
मैंने कुछ सही ICMP (पिंग) अनुरोध को 8.8.8.8 में बाइट सरणी में C ++ में डंप कर दिया। अब, अपने कार्यक्रम का उपयोग करके मैं इसे tun0 डिवाइस पर लिखता हूं। ICMP अनुरोध है
- स्रोत (10.2.0.10) - इसलिए कर्नेल मार्ग को वापस जानता है (एक ही सबनेट)
- गंतव्य (8.8.8.8) - Google का डीएनएस
- सही चेकसम आदि (Wireshark / TShark में यह ट्यून पर सही ढंग से दिखाई देता है)
फिर, मेरे पास निम्नलिखित मार्ग हैं:
iptables -F # flush
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface tun0 -j ACCEPT
और यहाँ मैं फँस गया :( पैकेट डिफ़ॉल्ट gw को अग्रेषित नहीं करता (tshark केवल tun0 पर इसे देखता है जैसा कि मुझे प्राप्त हुआ है जो मुझे लगता है कि यह सही है)
क्या कमी है? शायद कुछ वैकल्पिक दृष्टिकोण (लेकिन यह ट्यून डिवाइस का उपयोग करके किया जाना है, और मुझे इसे आर / डब्ल्यू करने में सक्षम होना चाहिए)। अतिरिक्त जानकारी:
- अग्रेषण सक्षम है (/ proc / sys / net / ipv4 / ip_forward)
- 8.8.8.8 eth0 (स्थानीय से) के माध्यम से उपलब्ध है
- डिफ़ॉल्ट गेटवे सही है (ISP से eth0 के माध्यम से)
- मैंने rp_tables (echo 0> / proc / sys / net / ipv4 / conf / eth5 / rp_filter) को बंद करने की कोशिश की है
- और बहुत सारे...
किसी भी संकेत के लिए अग्रिम धन्यवाद!