আপনি কীভাবে লিনাক্সে ইন্টারনেট পাস-থ্রো (বিপরীত-টিথার) সেট আপ করবেন?


19

আমার কাছে এইচটিসি ডিজায়ার এস রয়েছে যাতে ইউএসবি মাধ্যমে সংযোগ স্থাপন এবং কম্পিউটারের ইন্টারনেট সংযোগ ব্যবহার করার বিকল্প রয়েছে। এটি উইন্ডোজে দুর্দান্ত কাজ করে তবে আমি এটি উবুন্টুতে সেট আপ করার জন্য লড়াই করছি। আমি যখন ইউএসবি মেনু থেকে ইন্টারনেট পাস-মাধ্যমে প্লাগ ইন করি এবং নির্বাচন করি তখন ইউএসবি 1 ডিভাইস তৈরি হয় এবং আমি এটির আইপি ঠিকানাটি পিন করতে পারি। আমি বিভিন্ন iptables কনফিগারেশন এবং নাট সেট আপ করার চেষ্টা করেছি, তবে আমি নিশ্চিত না যে আমি এটি সঠিকভাবে করছি কিনা, বা যদি কিছু অতিরিক্ত কনফিগারেশন প্রয়োজন হয় ...

কোন সাহায্যের জন্য ধন্যবাদ।


আমি এটি trac.osuosl.org/trac/replicant/wiki/ReplicantUSB নেটওয়াকিং এবং অনুবাদ অনুবাদকালে ব্যবহারকারী ব্যবহারকারীর কাছ থেকে তথ্যের সংমিশ্রণটি ব্যবহার করে কাজ করেছি । নীচে উত্তর দিন।
ব্লুগ্রায়

উত্তর:


11

নিম্নলিখিতটি কিছুক্ষণের জন্য কাজ করে তবে কেবল ব্রাউজারের জন্য।

আপনি যখন ইউএসবির মাধ্যমে আপনার ফোনে প্লাগ ইন করেন এবং ইন্টারনেট পাস-থ্রো নির্বাচন করেন, আপনার একটি নতুন আরএনডিআইএস ডিভাইস পাওয়া উচিত (ইউএসবি 0 বা ইউএসবি 1)। উবুন্টুর জন্য, সম্পাদনা করুন / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস এবং নিম্নলিখিত লাইনগুলি যুক্ত করুন:

iface usb0 inet dhcp
iface usb1 inet dhcp

ডিভাইস যুক্ত হওয়ার পরে এটি স্বয়ংক্রিয়ভাবে একটি আইপি বরাদ্দ করবে। কোনও নেটওয়ার্ক ঠিকানা যদি ইউএসবি 0 বা ইউএসবি 1 তে স্বয়ংক্রিয়ভাবে বরাদ্দ না করা হয় তবে আপনাকে এটি ম্যানুয়ালি করতে হবে।

তারপরে আপনার লিনাক্স কম্পিউটারে আপনাকে NAT সেট আপ করতে হবে। কিছুটা এইরকম:

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

আপনার একটি ডিএনএস সার্ভারও দরকার:

sudo apt-get install bind9

এটি কয়েক মিনিটের জন্য কাজ করে, তবে কিছুক্ষণ পরে ফোনটি এইচটিসি সিঙ্ক এবং সংযোগ বিচ্ছিন্ন করতে সন্ধান করে।

মূলযুক্ত ফোনগুলির জন্য

যদি আপনার কাছে কোনও রুটযুক্ত ফোন থাকে তবে আপনি স্থায়ীভাবে সংযোগ করতে পারেন (fre3vo আমার পক্ষে কাজ করেছে)। অ্যাডবি দিয়ে নিম্নলিখিতটি কার্যকর করুন।

নেটওয়ার্ক এবং অ্যাডবির জন্য ইউএসবি মোড সক্ষম করুন:

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

একটি ডিফল্ট রুট যুক্ত করুন। আইপি লিনাক্সে ইউএসবি 0-কে দেওয়া আইপি হওয়া উচিত:

adb shell route add default gw 192.168.99.1 dev usb0

ডিএনএস সার্ভার সেট করুন। এটি গুগলের ওপেন ডিএনএস সার্ভার, তবে আপনার ডিএনএস সার্ভার থাকলে এটি আপনার লিনাক্স কম্পিউটারের আইপি হতে পারে:

adb shell setprop net.dns1 8.8.8.8

2
কিংবদন্তি অনুসারে, আপনি নিম্নলিখিতটি করে এইচটিসি সিঙ্কটি নকল করতে পারেন: এইচটিসি ফোনগুলিতে আপনি যখন ইউএসবি প্লাগ করেন এবং ইন্টারনেট পাসথ্রু নির্বাচন করেন, এটি এইচটিসি সিঙ্কের জন্য অপেক্ষা করে এবং ছেড়ে দেয়। এটি 6000 পোর্টে শোনা যাচ্ছে So সুতরাং আপনাকে কেবল নেটকাটের সাথে জাল এইচটিসি সিঙ্ক করতে হবে। কমান্ড লাইনে এটি ব্যবহার করে দেখুন: phoneip=$(arp -n | grep usb | awk '{print $1}') echo -n -e "\x00\x02\x00\x00" | nc $phoneip 6000 > /dev/null এর হেক্স মানটি 00 02 00 00এটি সন্ধান করছে।
গেফচ্যাং

@ জেফচ্যাং, ধন্যবাদ! উইন্ডোজ ব্যবহারকারীদের জন্য, যখন মোবাইল ইউএসবি-র মাধ্যমে সংযোগ দেওয়ার চেষ্টা করছে আপনি 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

যেহেতু নিজেই লিনাক্স মেশিনে আমার অ্যাক্সেস নেই আমি এই সমাধানটি পরীক্ষা করতে পারছি না তবে আপনি এখানে বর্ণিত পদক্ষেপগুলি চেষ্টা করতে পারেন (রাশিয়ান থেকে গুগল অনুবাদ)

অনুবাদটিতে মন্তব্যসমূহ:

  • "রুটোভেনেম" এর অর্থ মূলযুক্ত;
  • ডাব্লুবি বা বিবি অর্থ বড় ভাই (ডেস্কটপ);
  • স্মার্টটি হ'ল "স্মার্টফোন" থেকে সংক্ষেপণ।

শুভকামনা!


ধন্যবাদ, তবে ইন্টারফেসগুলি ব্রিজ করার চেয়ে সহজ উপায় আছে।
ব্লুগ্রায়

0

ঠিক আছে, এখানে আমি ঠিক ঠিক কী করেছি, এইচটিসি-র কোনও প্রয়োজন নেই:

সেটআপ বাইন্ড 9 এবং NAT ইত্যাদি ...

দ্রষ্টব্য: 1: আপনি যদি কেবলমাত্র sudo প্রতিধ্বনি 1> / proc / sys / নেট / ipv4 / ip_forward করতে চান তবে আপনি অনুমতি ত্রুটি পাবেন, সুতরাং প্রক্রিয়া 2 এর জন্য এখানে একটি স্ক্রিপ্ট রয়েছে: আপনি আইপটবেলগুলি কীভাবে এটি করে তা আরও নির্দিষ্ট করে তুলতে পারেন নির্দিষ্ট ডিভাইসগুলির জন্য পরামিতি যুক্ত করা।


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

আমি দেখতে পেলাম যে আমার ডিভাইসটি আনপ্লাগ করতে হবে তারপরে এটি আরপটিতে উপস্থিত হওয়ার জন্য আবার এটি প্লাগ ইন করতে হবে, আরপ ডিভাইসটি না দেখালে জিনিসগুলি সঠিকভাবে কাজ করে না।

ডিভাইসটি এইচটিসি সিঙ্কটি এটি বার্তা প্রেরণের জন্য অপেক্ষা করবে যাতে আপনাকে এইচটিসি সিঙ্কস বার্তাটিকে উপহাস করতে হবে:


#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

আমি ডি-বাস ব্যবহার করে এর একটি সংস্করণ লিখতে পারি যাতে ডিভাইস ইত্যাদি প্লাগ ইন করা অবস্থায় পরবর্তী অংশটি স্বয়ংক্রিয়ভাবে কার্যকর হয় ....

ঠিক আছে এখানে আমার কাজ চলছে, আমি ডি-বাসে 'জেনেরিক' কিছু খুঁজে পাইনি তাই আমি ইউদেব ব্যবহার করে কিছুটা হ্যাক সলিউশন বেছে নিয়েছি .. এটি নিখুঁত নয়, উদাহরণস্বরূপ কমান্ডটি দু'বার চালিত হয়, তাই আমি 'দেখতে পেলাম যে আমি মিলে যাওয়া পরামিতিগুলি আরও কিছুটা ভাল ফিল্টার করতে পারি, শেষ স্ক্রিপ্টে একটি টাইমআউটও যুক্ত করতে পারি, কেবল উত্তেজিত করে দেখুন এবং আমি আরও ভাল কিছু দিয়ে আরপ প্রতিস্থাপন করতে পারি কিনা, দেখুন / প্রোকে অনুসন্ধান করুন

আমি তৈরি করেছি /etc/udev/rules.d থেকে আমার .rules ফাইলটি এখানে রয়েছে


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

আপনি এটিকে নিজের পছন্দের যেকোন কিছু বলতে পারেন তবে এটি একটি সংখ্যার সাথে শুরু করবেন না, এইভাবে এটি শেষের দিকে চলে run

আপনার পছন্দসই ইত্যাদি সম্পাদক ব্যবহার করে সূডো হিসাবে ফাইলটিতে নিম্নলিখিতটি যুক্ত করুন ....


#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 

তারপরে আপনার আরও দুটি ফাইলের প্রয়োজন হবে, একটিতে অন্যটিকে শৃঙ্খলাবদ্ধ করার জন্য, যেহেতু উদেব থেকে আসা আরএন সব কিছু ব্লক করে দেবে (যদিও এটি শেষের দিকে চালিত হয় !!) ... হুম ... যাইহোক:

আমি এখনই আমার হোম ডিরেক্টরিতে ফাইলগুলি "/ 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

নিম্নলিখিত containg


#!/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

ইউএসবি বিপরীতে টিথেরিংয়ের জন্য অ্যান্ড্রয়েড এবং লিনাক্সের সাথে শিকড় ছাড়াই এখানে আমার উত্তরটি দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.