आप लिनक्स पर इंटरनेट पास-थ्रू (रिवर्स-टीथर) कैसे सेट करते हैं?


19

मेरे पास एक एचटीसी डिजायर एस है जिसमें यूएसबी के माध्यम से कनेक्ट करने और कंप्यूटर के इंटरनेट कनेक्शन का उपयोग करने का विकल्प है। यह विंडोज पर ठीक काम करता है, लेकिन मैं इसे उबंटू में स्थापित करने के लिए संघर्ष कर रहा हूं। जब मैं प्लग इन करता हूं और usb मेनू से इंटरनेट पास-थ्रू चुनता हूं, तो usb1 डिवाइस बन जाता है और मैं इसे आईपी एड्रेस पिंग कर सकता हूं। मैंने विभिन्न iptables कॉन्फ़िगरेशन और नेट सेट करने की कोशिश की है, लेकिन मुझे यकीन नहीं है कि अगर मैं इसे सही कर रहा हूं, या अगर कुछ अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता है ...

किसी भी मदद के लिए धन्यवाद।


मुझे trac.osuosl.org/trac/replicant/wiki/ReplicantUSBN Networking और Translate.googleusercontent.com/… से जानकारी के संयोजन का उपयोग करके यह काम करना पड़ा । नीचे उत्तर दें।
ब्लूग्रे

जवाबों:


11

निम्नलिखित थोड़ी देर के लिए काम करता है, लेकिन केवल ब्राउज़र के लिए।

जब आप अपने फोन में usb से प्लग इन करते हैं और इंटरनेट पास-थ्रू चुनते हैं, तो आपको एक नया RNDIS डिवाइस (usb0 या usb1) मिलना चाहिए। Ubuntu के लिए, संपादित करें / आदि / नेटवर्क / इंटरफेस और निम्नलिखित लाइनें जोड़ें:

iface usb0 inet dhcp
iface usb1 inet dhcp

जब डिवाइस जोड़ा जाता है तो यह स्वचालित रूप से एक आईपी असाइन करेगा। यदि कोई नेटवर्क पता usb0 या usb1 के लिए स्वचालित रूप से असाइन नहीं किया गया है, तो आपको इसे मैन्युअल रूप से करना होगा।

फिर आपको अपने लिनक्स कंप्यूटर पर NAT सेट करने की आवश्यकता है। कुछ इस तरह:

sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward 

आपको DNS सर्वर भी चाहिए:

sudo apt-get install bind9

यह कुछ मिनटों के लिए काम करता है, लेकिन थोड़ी देर के बाद फोन एचटीसी सिंक और डिस्कनेक्ट की तलाश में छोड़ देता है।

रूट किए गए फोन के लिए

यदि आपके पास कोई रूट किया हुआ फोन है (तो मेरे लिए फ्री 3वो काम किया है) आप स्थायी रूप से कनेक्ट कर सकते हैं। निम्नलिखित को अदब के साथ निष्पादित करें।

नेटवर्क और adb के लिए usb मोड सक्षम करें:

adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch

फोन पर usb0 डिवाइस के लिए एक आईपी असाइन करें:

adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up

एक डिफ़ॉल्ट मार्ग जोड़ें। IP को Linux में usb0 को दिया गया IP होना चाहिए:

adb shell route add default gw 192.168.99.1 dev usb0

DNS सर्वर सेट करें। यह google का खुला DNS सर्वर है, लेकिन अगर आपके पास DNS सर्वर है तो यह आपके लिनक्स कंप्यूटर का IP हो सकता है:

adb shell setprop net.dns1 8.8.8.8

2
किंवदंती के अनुसार, आप निम्न करके एचटीसी सिंक नकली कर सकते हैं: एचटीसी फोन पर, जब आप यूएसबी प्लग इन करते हैं और इंटरनेट पेसस्ट्रॉह का चयन करते हैं, तो यह एचटीसी सिंक का इंतजार करता है और हार मान लेता है। यह पोर्ट 6000 पर सुन रहा है। इसलिए आपको केवल नेटकैट के साथ एचटीसी सिंक नकली करने की आवश्यकता है। कमांड लाइन पर यह कोशिश करें: phoneip=$(arp -n | grep usb | awk '{print $1}') echo -n -e "\x00\x02\x00\x00" | nc $phoneip 6000 > /dev/null हेक्स मूल्य 00 02 00 00वह सब है जिसकी उसे तलाश है।
जिफचांग

@geffchang, धन्यवाद! विंडोज़ उपयोगकर्ताओं के लिए, जब मोबाइल यूएसबी के माध्यम से जुड़ने की कोशिश कर रहा है, तो आप netsh interface ip show configसभी इंटरफ़ेस नामों को देखने के लिए चला सकते हैं , और फिर netsh interface ip show config name="Local Area Connection #2"बस उस इंटरफ़ेस को प्राप्त करने के लिए, Local Area Connection #2जो भी नया एडेप्टर कहा जाता है। सुविधा के लिए आप इसका नाम बदल सकते हैं।
सैम हस्लर

3

सभी को स्वचालित करने के लिए इस छोटे से बैश को बनाया। बस अपने फोन को चार्जिंग मोड में अपने कंप्यूटर में प्लग करें और इस बैश को चलाएं।

#!/bin/bash
/opt/android-sdk-update-manager/platform-tools/adb shell 'echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch'
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell setprop net.dns1 8.8.8.8

get_ip ()
{
ifconfig usb0 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .
}

echo "waiting for IP on computer usb0"
while [[ `get_ip` < 192 ]];do sleep 2; done
ip=`get_ip`
echo "IP adress is $ip "
/opt/android-sdk-update-manager/platform-tools/adb shell route add default gw $ip dev usb0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

0

चूँकि मेरे पास लिनक्स मशीन की पहुँच नहीं है इसलिए मैं इस समाधान का परीक्षण नहीं कर सकता लेकिन आप यहाँ वर्णित चरणों (रूसी से Google अनुवाद) का प्रयास कर सकते हैं ।

टिप्पणियाँ के लिए अनुवाद:

  • "रूटोवैनीम" का अर्थ है निहित;
  • WB या BB का अर्थ है बिग ब्रदर (डेस्कटॉप);
  • smarta "smartphone" से संक्षिप्त नाम है।

सौभाग्य!


धन्यवाद, लेकिन इंटरफेस को ब्रिज करने की तुलना में एक आसान तरीका है।
ब्लूग्रे

0

ठीक है, यहां मैंने वही किया, जो एचटीसी की इच्छा नहीं थी:

सेटअप bind9 और NAT आदि ...

नोट: 1: यदि आप सिर्फ sudo echo 1> / proc / sys / net / ipv4 / ip_forward करते हैं, तो आपको एक अनुमति त्रुटि मिलेगी, इसलिए यहां प्रक्रिया 2 के लिए एक स्क्रिप्ट है: आप iptables को इसके बारे में और अधिक विशिष्ट बना सकते हैं, जिसके द्वारा यह काम करता है विशिष्ट उपकरणों के लिए पैरामीटर जोड़ना।


cd ~
echo '!/bin/bash
apt-get install bind9
iptables -A POSTROUTING -t nat -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward' > setup_bind9_nat.sh

chmod +x setup_bind9_nat.sh
sudo ./setup_bind9_nat.sh

अब आप फोन में प्लग इन करें और 'इंटरनेट पास' सेलेक्ट करें

डिवाइस के प्रदर्शित होने की प्रतीक्षा करें: ifconfig यह देखें कि यह भी इसमें है: arp

मैंने पाया कि मुझे डिवाइस को अनप्लग करना था फिर इसे फिर से आरपी में प्रदर्शित करने के लिए प्लग करें, अगर एआरपी डिवाइस को नहीं दिखाता है तो चीजें ठीक से काम नहीं करती हैं।

इसके बाद डिवाइस आपको सिंक करने के लिए HTC सिंक का इंतजार करने बैठेगा ताकि आपको HTC Syncs मैसेज को मॉक करना पड़े:


#change this line to be more specific if you have more than one usb network device
phone_usb_device="usb"
get_ip ()
{
    arp -n | grep $phone_usb_device | awk '{print $1}'
}

#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer usb"
while [[ `get_ip` < 192 ]];do sleep 2; done
phoneip=`get_ip`
echo "IP adress is $phoneip "

echo -n -e "\x00\x02\x00\x00" | nc -q 2 $phoneip 6000 > /dev/null

मैं डी-बस का उपयोग करके इसका एक संस्करण लिख सकता हूं ताकि बाद वाला हिस्सा स्वचालित रूप से निष्पादित हो जब डिवाइस आदि में प्लग किया गया हो ...।

ठीक है, यहाँ मेरा काम प्रगति पर है, मुझे डी-बस में कुछ भी 'जेनेरिक' नहीं मिला, इसलिए मैंने udv का उपयोग करके एक हैक समाधान का एक सा विकल्प चुना। यह सही नहीं है, उदाहरण के लिए कमांड दो बार चलती है, इसलिए मैं यह देखना होगा कि क्या मैं मिलान के मापदंडों को थोड़ा बेहतर फ़िल्टर कर सकता हूं, अंतिम स्क्रिप्ट पर एक टाइमआउट भी जोड़ सकता हूं, बस संलग्न करें और देखें कि क्या मैं कुछ बेहतर के साथ arp को बदल सकता हूं, कहिए / देख कर

यहाँ /etc/udev/rules.d से मेरी .rules फ़ाइल बनाई गई है


cat /etc/udev/rules.d/htc-desire.rules

आप इसे अपनी पसंद के अनुसार कुछ भी कह सकते हैं, लेकिन इसे एक नंबर के साथ शुरू न करें, इस तरह यह सभी के अंतिम भाग में चला जाता है।

फ़ाइल में निम्नलिखित को आप अपनी पसंद के संपादक के रूप में sudo के रूप में जोड़ें ... आदि।


#KERNEL=="usb?" or DRIVERS=="usb" not sure which is best, may need extra mode information too from usb device.
SUBSYSTEM=="net", DRIVERS=="usb", ATTRS{manufacturer}=="HTC", ATTRS{idProduct}=="0ffe", RUN+="/home/olli/chain_mock_htc_sync.sh $kernel"


Ubuntu is setup to create the file with the correct permissions already 


ls -lrt /etc/udev/rules.d/htc-desire.rules 
-rw-r--r-- 1 root root 248 Jun 26 22:09 htc-desire.rules

मूल रूप से, यदि आप उन 3 आर को नहीं देखते हैं,


sudo chmod a+r /etc/udev/rules.d/htc-desire.rules 

फिर आपको दो और फ़ाइलों की आवश्यकता होगी, एक को दूसरे से चेन करने के लिए, क्योंकि udv से RUN बाकी सब को ब्लॉक कर देगा (भले ही यह अंतिम चल रहा हो !!) ... hmm ... anyhow:

मैंने अपने होम डायरेक्टरी में अभी "/ home / olli /" के लिए फाइलें बनाई हैं ... इसलिए जहाँ भी आप फाइल बनाते हैं, '/ home / olli /' बिट को बदलना याद रखें:

तो मेरे लिए, मेरे घर निर्देशिका के लिए सीडी।


cd ~

नामक एक फ़ाइल बनाएँ


chain_mock_htc_sync.sh

निम्नलिखित शामिल हैं:



#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit

इसे अमल में लाएं


chmod +x chain_mock_htc_sync.sh

नामक एक अन्य फ़ाइल बनाएँ


mock_htc_sync.sh

निम्नलिखित के विपरीत


#!/bin/bash
#change this line to be more specific if you have more than one usb network device

phone_usb_device="$1"
get_ip ()
{
    arp -n | grep $phone_usb_device | awk '{print $1}'
}

#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer $phone_usb_device"
while [[ `get_ip`  /dev/null

इसे निष्पादित करें:

chmod +x mock_htc_sync.sh

उम्मीद है कि मेरे पास जल्द से जल्द एक अच्छा ख़बरदार संस्करण होना चाहिए। (संभवत: कल)।


0

बिना रूट किए Android और लिनक्स के साथ Usb रिवर्स टेथरिंग के लिए, यहां मेरा जवाब देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.