অ্যান্ড্রয়েডে ওয়াইফাই টিথারিং (হটস্পট) এর ডিএইচসিপি সেটিংস কীভাবে কনফিগার করবেন?


27

অ্যান্ড্রয়েড ওয়াই-ফাই হটস্পটে আমার পিসি সংযুক্ত করার সময়, এটি 192.168.42.xআমার পিসিকে একটি ঠিকানা বরাদ্দ করেছে । আমাদের সত্যিই এটি পরিবর্তন করা দরকার কারণ এটি আমাদের কাজের সাবনেটগুলির সাথে বিরোধ করে - এটি কি সম্ভব?


2
আমার মোবাইল রুট করা আছে। প্রয়োজনে সিস্টেম ফাইলগুলি পরিবর্তন করতে আমার আপত্তি নেই।
ভিভিকে

উপরের দুর্দান্ত উত্তরের কিছুটিতে যেমন স্নাতকের প্রতিক্রিয়া, তেমনি আমার অনুশীলনে 192.168.43.0/24 পরিসরটি ওয়াইফাই টিথারিংয়ের জন্য অ্যান্ড্রয়েড / বিক্রেতার ডিফল্ট দ্বারা নির্ধারিত এবং ইউএসবি টিথারিংয়ের জন্য 192.168.42.0/24 হয়।
জিম ক্লেমভ

উত্তর:


25

দুর্ভাগ্যক্রমে, সায়ানোজেনমডে এমনকি বিল্টিন টিথারিং সমর্থনগুলির জন্য আইপি ঠিকানা পরিসরটি পরিবর্তনের কোনও উপায় নেই। Wi-Fi হটস্পট আইপিটি android.net.wifi.WifiStateMachine.startTethering () এ হার্ডকোডযুক্ত ; ইউএসবি টিথারিং আইপি com.android.server.connectivity.Therhering এ হার্ডকোডযুক্ত ।

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


গুগল কোড বন্ধ হয়ে যাওয়ার কারণে উপরের লিঙ্কগুলি আর কাজ করে না। কিছু লোক rep সংগ্রহস্থলগুলি থেকে গিটহাবের কাছে উত্স কোডটি রফতানি করে:

তবে এর পরে আর কোনও বিকাশ কার্যকলাপ ছিল না এবং অ্যাপ্লিকেশনগুলি সম্ভবত সাম্প্রতিক অ্যান্ড্রয়েড সংস্করণগুলিতে আর কাজ করবে না।

কেউ যদি এই অপ্রচলিত অ্যাপ্লিকেশনগুলি চেষ্টা করতে চান তবে আমি গুগল কোড সংরক্ষণাগারটিতে কিছু APK ফাইল সন্ধান করতে সক্ষম হয়েছি :


তথ্যের জন্য +1। আমার ডিভাইসটি মূলযুক্ত, তবে রুট ব্যবহারকারীদের জন্য ওয়্যারলেস টিথার অ্যাপটি আমার মোবাইলটিতে কাজ করছে না। মূলযুক্ত ফোনে আইপি রেঞ্জটি পরিবর্তন করার কিছু উপায় থাকতে হবে, সিমন ম্যান! অ্যান্ড্রয়েড সর্বোপরি একটি ওপেন ওএস।
ভিভিকে

@ ভিভিকে একটি উপায় আছে। কেবল উত্সটি পুনরায় সংকলন করুন।
সায়াকুর রহমান

আপনার উল্লিখিত অ্যাপ্লিকেশনগুলির আর অস্তিত্ব নেই বলে মনে হচ্ছে। আপনি যে কোনও নতুন সংস্করণ অনলাইনে খুঁজে পেতে পারেন, যেহেতু আপনি প্রকাশকদের নাম জানেন? আমি অন্য কয়েকজনকে পেয়েছি, কিন্তু তাদের মধ্যে কেউই
নিখরচায়

@pgr কিছু কার্যকারী লিঙ্ক খুঁজে পেয়েছে, তবে নতুনতর কোনও সংস্করণ নেই।
সের্গেই ভ্লাসভ

21

অ্যান্ড্রয়েড বিল্টইন ওয়াইফাই টিথারিংটি টিথারিংটি netdহ্যান্ডলিং করে, ব্যবহার করে সার্ভার হিসাবে 192.168.43.1/24 ব্যবহার করার জন্য ডিজাইন করা হয়েছে dnsmasq। প্রথম ডিএনএস ব্যাপ্তিটি 192.168.42.1-254এবং দ্বিতীয় ডিএনএস ব্যাপ্তি 192.168.43.1-254

নেটড পরিবর্তন করা সহজ নয়। এটির সাথে যোগাযোগের জন্য এটি একটি সকেট প্রয়োজন, এবং অ্যান্ড্রয়েড টিচারিং শুরু করার পরে সেই সকেটটি নেওয়া হয়। তবে উত্স ফাইলগুলির মধ্য দিয়ে যাচ্ছি Tethering.java(আমি ফ্রয়েও ব্যবহার করেছি) আমরা দেখতে পাই:

// usb client will be provided 192.168.42.129
private static final String USB_NEAR_IFACE_ADDR      = "192.168.42.129";
private static final String USB_NETMASK              = "255.255.255.0";

// FYI - the default wifi is 192.168.43.1 and 255.255.255.0

private String[] mDhcpRange;
private static final String DHCP_DEFAULT_RANGE1_START = "192.168.42.2";
private static final String DHCP_DEFAULT_RANGE1_STOP  = "192.168.42.254";
private static final String DHCP_DEFAULT_RANGE2_START = "192.168.43.2";
private static final String DHCP_DEFAULT_RANGE2_STOP  = "192.168.43.254";

এবং পরে আমরা দেখতে পাই সেই ব্যাপ্তিগুলি, যেমন ব্যাকপিএপিএস

    mDhcpRange = context.getResources().getStringArray(
            com.android.internal.R.array.config_tether_dhcp_range);
    if ((mDhcpRange.length == 0) || (mDhcpRange.length % 2 ==1)) {
        mDhcpRange = new String[4];
        mDhcpRange[0] = DHCP_DEFAULT_RANGE1_START;
        mDhcpRange[1] = DHCP_DEFAULT_RANGE1_STOP;
        mDhcpRange[2] = DHCP_DEFAULT_RANGE2_START;
        mDhcpRange[3] = DHCP_DEFAULT_RANGE2_STOP;
    }

ডিএইচসিপি রেঞ্জের প্রধান উত্স হার্ডকডযুক্ত 42 এবং 43 নয়, তবে এটি একটি অভ্যন্তরীণ স্ট্রিং অ্যারে অ্যারে.কনফিগ_ট্যাটার_ড্যাচসিপি_রেঞ্জ থেকে পড়ুন। তবে এটি বর্তমানে খালি।

আপনি অ্যান্ড্রয়েড কাঠামো সম্পাদনা করতে পারে। আমার ফোনে, এটা /system/framework/framework-res.apk। একটি আছে টন টিউটোরিয়াল সম্পাদনা ফ্রেমওয়ার্ক-res.apk পূর্ণ theming সহজ স্ট্রিং থেকে, জন্য অনলাইন। আপনার ফোন এবং অ্যান্ড্রয়েড সংস্করণের জন্য একটি সন্ধান করুন।

আপনি যে জিনিসটি পরিবর্তন করতে চান তা হ'ল /res/values/arrays.xml

খোঁজা <array name="config_tether_dhcp_range" />

পরিবর্তন:

<string-array name="config_tether_dhcp_range">
     <item>192.168.x.y</item>
     <item>192.168.x.z</item>
</string-array>

প্রয়োজন অনুসারে সংকলন / জিপ / সাইন করুন (একটি টিউটোরিয়াল অনুসরণ করুন), তারপরে পুনরায় ইনস্টল করুন।

আপনি যদি একাধিক ব্যাপ্তি চান তবে কেবল দুটি আইটেমটি বারবার অনুলিপি করুন। আপনাকে সর্বদা প্রতিটি ব্যাপ্তির জন্য একটি শুরু এবং একটি স্টপ সরবরাহ করতে হবে। এটি একই / 24 তে রাখার চেষ্টা করুন, অর্থাত্ 192.168.50.5 এবং 192.168.50.99বা যা কিছু হোক। আপনি এটির সাথে কাজ করছে busybox ps | grep dnsmasqকিনা তা নিশ্চিত করতে পারেন বা আপনার যদি ps dnsmasqব্যস্তবক্স না থাকে তবে পিড ইন ব্যবহার করুন cat /proc/pid/cmdline। আপনার পাওয়া উচিত (বা অনুরূপ):

/ সিস্টেম / বিন / ডেনসম্যাক - নো-ডেমন - নো-পোল -না-রেজোলভ - ডিএইচসিপি-রেঞ্জ = 192.168.50.5,192.168.50.99,1 ঘন্টা

এফডব্লিউআইডাব্লু, আমার ওয়াইফাই টিথারিং ডিফল্ট dnsmasqব্যাপ্তিগুলি ব্যবহার করে , তবুও আমার কম্পিউটার নির্ধারিত 192.168.43.147/24এবং গেটওয়ে 192.168.43.1/24। আপনার 42.xঠিকানায় কেন ডিফল্ট হয়েছিল তা নিশ্চিত নয় ।


2
42 ইউএসবিএনটের জন্য 43 ওয়াইফাইয়ের জন্য
জিব্রি

খুজে পাচ্ছ, তুমি কোথায় দেখছ?
সিডিডি

1
কারণ আপনি যদি ইউএসবি দ্বারা টিথার করেন তবে আপনি 42 পাবেন
you

5

আমি জানি এটি একটি পুরানো পোস্ট, তবে আমি একটি আপডেট সরবরাহ করব thought এটি অ্যান্ড্রয়েডের কিছু নির্মাতারা এবং সংস্করণগুলিতে প্রদর্শিত হয় যখন ডাব্লুওয়াইফাই হটস্পট বৈশিষ্ট্যটি ব্যবহার করার সময় ইউআইয়ের মাধ্যমে ডিএইচসিপি সার্ভারের জন্য আইপি সাবনেট পরিসর পরিবর্তন করার অনুমতি দেয়। এইচটিসি ওয়ান এম 8 চলমান অ্যান্ড্রয়েড 6.0 এ এটি কোথায় পাবেন তা এখানে। YMMV।

মোবাইল হটস্পট স্ক্রীন থেকে, 3 ডট আইকন (আরও) ক্লিক করুন, উন্নত, তারপরে ল্যান সেটিংসে যান। "লোকাল আইপি" এর আওতায় আইপি ঠিকানাটি আপনার পছন্দসই আইপিতে পরিবর্তন করুন। "স্থানীয় ডিএইচসিপি" এর অধীনে আপনার আইপি ঠিকানার সাবনেটের সাথে মেলে শুরুর আইপিটি পরিবর্তন করুন।

ট্রেন্ট


আপনি কি জানেন যে নতুন এইচটিসি ফোনগুলিতেও এই বিকল্প রয়েছে কিনা?
আর্য

1

দ্রষ্টব্য: রুট প্রয়োজন।

ডিফল্ট ডিএইচসিপি আইপি অ্যাড্রেস পরিসীমা হার্ড কোডড ( 1 ) , আপনি পরিবর্তিত উত্স কোড সহ রম পুনর্নির্মাণ ব্যতীত এটিকে পরিবর্তন করতে পারবেন না। অথবা একটু হ্যাক ব্যবহার করুন।

আপনি যখন টিথারিং চালু করেন, তখন কী ঘটে (কমপক্ষে):

  • hostapd - ডেমন যা অ্যাক্সেস পয়েন্টগুলি পরিচালনা করে - শুরু হয়।
  • নেটওয়ার্ক ইন্টারফেস সেট আপ করা হয়েছে, আইপি অ্যাড্রেসটি ওয়াই-ফাই ইন্টারফেসে যুক্ত করা হয়েছে (অ্যান্ড্রয়েড পাই ( 2 , 3 ) এর আগে হার্ড-কোডড , এর পরে এলোমেলোভাবে ( 4 ) ), এবং রাউটিং টেবিলটি স্থানীয় নেটওয়ার্কের জন্য ( 5 ) যুক্ত করা হয়েছে ( 6 )
  • dnsmasq-, DHCP / DNS সার্ভার (আপ পাই করার) - হার্ড কোডেড কমান্ড আর্গুমেন্ট সহ শুরু হয় ( 7 ) (যার মাধ্যমে নির্ধারণ করা যাবে /etc/dnsmasq.conf ( 8 ) অন্যথায়)।

সুতরাং আমরা /system/bin/dnsmasqএর মধ্যে প্রক্রিয়াটির নিয়ন্ত্রণ গ্রহণ করে একটি কাস্টম শেল স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করতে পারি । আসল বাইনারিটির অন্য কোনও নামকরণ করুন:

# mv /system/bin/dnsmasq /system/bin/dnsmasq.bin

স্ক্রিপ্ট তৈরি করুন /system/bin/dnsmasq:

#!/system/bin/sh

OLD_SUBNET='192.168.43'
NEW_SUBNET='192.168.1'
WIFI_INTERFACE='wlan0'
LOCAL_TABLE='97'

export PATH=/system/bin

# delete old route, add new
ip route del ${OLD_SUBNET}.0/24 dev ${WIFI_INTERFACE} table $LOCAL_TABLE
ip route add ${NEW_SUBNET}.0/24 dev ${WIFI_INTERFACE} table $LOCAL_TABLE

# set new IP address on Wi-Fi interface
ip address add ${NEW_SUBNET}.1/24 dev $WIFI_INTERFACE

# inject new subnet in hard-coded arguments received from netd
set -- $(printf '%s' "$*" | sed 's/'${OLD_SUBNET}'/'${NEW_SUBNET}'/g')
unset OLD_SUBNET NEW_SUBNET WIFI_INTERFACE LOCAL_TABLE

# execute original binary with new arguments
exec dnsmasq.bin $*

আপনার Wi-Fi ইন্টারফেসের নাম নিশ্চিত করুন ( wlan0সাধারণত)। ip linkবা সাথে চেক করুন ls /sys/class/net/

এছাড়াও নিশ্চিত আপনার স্থানীয় নেটওয়ার্কের রাউটিং টেবিল 97: grep local_network /data/misc/net/rt_tables। অ্যান্ড্রয়েডের রাউটিং একটি জগাখিচুড়ি, প্রতিটি নতুন প্রকাশের সাথে আরও জটিল। সুতরাং আমি নিশ্চিত নই যে এটি অবিচল ছিল কি না। কোনও পরিবর্তন করার আগে, আপনার স্ক্রিপ্টে আপনাকে কী রাখা উচিত তা নির্ধারণের জন্য আপনার রাউটিং নীতি এবং সারণীগুলি পরীক্ষা করুন:

~# RULES="$(ip rule | grep -vE 'unreachable|local')"
~# echo "$RULES"
~# for t in $(echo "$RULES" | awk '{print $NF}' | uniq); do ip r s table $t; done

সেলইনক্স বিধিগুলিরও সংজ্ঞা দেওয়া দরকার যদি (সমস্ত বা কিছু) ইতিমধ্যে সংজ্ঞায়িত না হয় এবং যদি স্থিতি থাকে enforcing। Magisk এর suploicyবা অন্য কিছু অনুরূপ সরঞ্জাম ব্যবহার করুন sepolicy-inject:

# execute binaries from /system/bin
allow netd system_file dir { read open getattr search }
allow netd system_file file { read gettattr open execute execute_no_trans }

# execute /system/bin/sh
allow netd shell_exec file { read getattr open execute execute_no_trans }

# execute /system/bin/toolbox and its applets
allow netd toolbox_exec file { read gettattr open execute execute_no_trans }

# configure RPDB rules / routing tables
allow netd netd capability { sys_admin }

* পুনরায় বুট জুড়ে ক্রমাগত না, কিছু ব্যবহার init.dস্ক্রিপ্ট অথবা প্রতিস্থাপন /sepolicyমধ্যেramdisk

ফাইলগুলিতে অনুমতি সেট করুন:

~# chown 0.0 /system/bin/dnsmasq*
~# chmod 0755 /system/bin/dnsmasq*
~# chcon u:object_r:dnsmasq_exec:s0 /system/bin/dnsmasq*

উপভোগ করুন!

অথবা আপনি নিজের প্রক্রিয়াগুলি চালিয়ে কমান্ডলাইন থেকে সম্পূর্ণ টিথারিং সেটআপ করতে পারেন। এই উত্তরটি নির্দেশাবলী অন্তর্ভুক্ত করে, যদিও প্রশ্নটি আলাদা is

সম্পর্কিত:

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