অ্যান্ড্রয়েড ওয়াই-ফাই হটস্পটে আমার পিসি সংযুক্ত করার সময়, এটি 192.168.42.x
আমার পিসিকে একটি ঠিকানা বরাদ্দ করেছে । আমাদের সত্যিই এটি পরিবর্তন করা দরকার কারণ এটি আমাদের কাজের সাবনেটগুলির সাথে বিরোধ করে - এটি কি সম্ভব?
অ্যান্ড্রয়েড ওয়াই-ফাই হটস্পটে আমার পিসি সংযুক্ত করার সময়, এটি 192.168.42.x
আমার পিসিকে একটি ঠিকানা বরাদ্দ করেছে । আমাদের সত্যিই এটি পরিবর্তন করা দরকার কারণ এটি আমাদের কাজের সাবনেটগুলির সাথে বিরোধ করে - এটি কি সম্ভব?
উত্তর:
দুর্ভাগ্যক্রমে, সায়ানোজেনমডে এমনকি বিল্টিন টিথারিং সমর্থনগুলির জন্য আইপি ঠিকানা পরিসরটি পরিবর্তনের কোনও উপায় নেই। Wi-Fi হটস্পট আইপিটি android.net.wifi.WifiStateMachine.startTethering () এ হার্ডকোডযুক্ত ; ইউএসবি টিথারিং আইপি com.android.server.connectivity.Therhering এ হার্ডকোডযুক্ত ।
তবে, যদি আপনার ফোনটি রুট করা থাকে, তবে আপনি টিথারিংয়ের জন্য তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি ব্যবহার করতে চেষ্টা করতে পারেন যা আইপি ঠিকানা পরিসর পরিবর্তন করার বিকল্প রয়েছে have উদাহরণস্বরূপ, যখন স্যামসাং গ্যালাক্সি ডব্লিউয়ের জন্য সায়ানোজেনমড আলফাসে বিল্টিন ইউএসবি টিথারিংটি ভেঙে দেওয়া হয়েছিল, আমি রুট ব্যবহারকারীদের জন্য ওয়্যার্ড টেদার ব্যবহার করেছি , যার মধ্যে এই জাতীয় বিকল্প রয়েছে। ওয়াই-ফাই টিথারিংয়ের জন্য আপনি একই লেখক থেকে ওয়্যারলেস টিথার ফর রুট ব্যবহারকারী অ্যাপ্লিকেশনটি চেষ্টা করতে পারেন , এতে আইপি অ্যাড্রেস রেঞ্জ পরিবর্তন করার বিকল্প রয়েছে।
গুগল কোড বন্ধ হয়ে যাওয়ার কারণে উপরের লিঙ্কগুলি আর কাজ করে না। কিছু লোক rep সংগ্রহস্থলগুলি থেকে গিটহাবের কাছে উত্স কোডটি রফতানি করে:
তবে এর পরে আর কোনও বিকাশ কার্যকলাপ ছিল না এবং অ্যাপ্লিকেশনগুলি সম্ভবত সাম্প্রতিক অ্যান্ড্রয়েড সংস্করণগুলিতে আর কাজ করবে না।
কেউ যদি এই অপ্রচলিত অ্যাপ্লিকেশনগুলি চেষ্টা করতে চান তবে আমি গুগল কোড সংরক্ষণাগারটিতে কিছু APK ফাইল সন্ধান করতে সক্ষম হয়েছি :
অ্যান্ড্রয়েড বিল্টইন ওয়াইফাই টিথারিংটি টিথারিংটি 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
ঠিকানায় কেন ডিফল্ট হয়েছিল তা নিশ্চিত নয় ।
আমি জানি এটি একটি পুরানো পোস্ট, তবে আমি একটি আপডেট সরবরাহ করব thought এটি অ্যান্ড্রয়েডের কিছু নির্মাতারা এবং সংস্করণগুলিতে প্রদর্শিত হয় যখন ডাব্লুওয়াইফাই হটস্পট বৈশিষ্ট্যটি ব্যবহার করার সময় ইউআইয়ের মাধ্যমে ডিএইচসিপি সার্ভারের জন্য আইপি সাবনেট পরিসর পরিবর্তন করার অনুমতি দেয়। এইচটিসি ওয়ান এম 8 চলমান অ্যান্ড্রয়েড 6.0 এ এটি কোথায় পাবেন তা এখানে। YMMV।
মোবাইল হটস্পট স্ক্রীন থেকে, 3 ডট আইকন (আরও) ক্লিক করুন, উন্নত, তারপরে ল্যান সেটিংসে যান। "লোকাল আইপি" এর আওতায় আইপি ঠিকানাটি আপনার পছন্দসই আইপিতে পরিবর্তন করুন। "স্থানীয় ডিএইচসিপি" এর অধীনে আপনার আইপি ঠিকানার সাবনেটের সাথে মেলে শুরুর আইপিটি পরিবর্তন করুন।
ট্রেন্ট
দ্রষ্টব্য: রুট প্রয়োজন।
ডিফল্ট ডিএইচসিপি আইপি অ্যাড্রেস পরিসীমা হার্ড কোডড ( 1 ) , আপনি পরিবর্তিত উত্স কোড সহ রম পুনর্নির্মাণ ব্যতীত এটিকে পরিবর্তন করতে পারবেন না। অথবা একটু হ্যাক ব্যবহার করুন।
আপনি যখন টিথারিং চালু করেন, তখন কী ঘটে (কমপক্ষে):
hostapd
- ডেমন যা অ্যাক্সেস পয়েন্টগুলি পরিচালনা করে - শুরু হয়।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
সম্পর্কিত: