मेरे पीसी को एंड्रॉइड वाई-फाई हॉटस्पॉट से कनेक्ट करते समय, उसने 192.168.42.x
मेरे पीसी को एक पता सौंपा । मुझे वास्तव में इसे बदलने की आवश्यकता है क्योंकि यह हमारे एक काम सबनेट के साथ संघर्ष करता है - क्या यह संभव है?
मेरे पीसी को एंड्रॉइड वाई-फाई हॉटस्पॉट से कनेक्ट करते समय, उसने 192.168.42.x
मेरे पीसी को एक पता सौंपा । मुझे वास्तव में इसे बदलने की आवश्यकता है क्योंकि यह हमारे एक काम सबनेट के साथ संघर्ष करता है - क्या यह संभव है?
जवाबों:
दुर्भाग्य से, सिनोजेनमॉड में भी बिल्ट टेथरिंग सपोर्ट के लिए आईपी एड्रेस रेंज को बदलने का कोई तरीका नहीं है। वाई-फाई हॉटस्पॉट आईपी को Android.net.wifi.WifiStateMachine.startTethering () में हार्डकोड किया गया है ; USB टेदरिंग आईपी com.android.server.connectivity.Tethering में हार्डकोड किया गया है ।
हालाँकि, यदि आपका फोन रूट किया गया है, तो आप टेथरिंग के लिए थर्ड-पार्टी ऐप्स का उपयोग करने का प्रयास कर सकते हैं, जिसमें आईपी एड्रेस रेंज को बदलने का विकल्प होता है। उदाहरण के लिए, जब सैमसंग गैलेक्सी डब्ल्यू के लिए CyanogenMod अल्फ़ाज़ में बिल्ट यूएसबी टेथरिंग को तोड़ा गया था, तो मैंने रूट यूज़र्स के लिए वायर्ड टीथर का इस्तेमाल किया , जिसके पास ऐसा विकल्प है। वाई-फाई टेथरिंग के लिए आप उन्हीं लेखकों से वायरलेस टीथर रूट यूजर्स ऐप के लिए कोशिश कर सकते हैं , जिसमें आईपी एड्रेस रेंज बदलने का विकल्प भी है।
क्योंकि Google कोड बंद कर दिया गया था, इसलिए उपरोक्त लिंक अब काम नहीं करते हैं। कुछ लोगों ने उन रिपॉजिटरी से गीथहब तक स्रोत कोड का निर्यात किया:
हालांकि, आगे कोई विकास गतिविधि नहीं थी, और ऐप शायद हाल के एंड्रॉइड संस्करणों पर काम नहीं करते हैं।
बस अगर कोई उन अप्रचलित ऐप्स को आज़माना चाहता है, तो मैं Google कोड पुरालेख में कुछ एपीके फाइलें ढूंढने में सक्षम हूं :
एंड्रॉइड बिल्टिन वाईफाई टेथरिंग को सर्वर के रूप में 192.168.43.1/24 का उपयोग करने, टेथरिंग को netd
संभालने के साथ उपयोग करने के लिए डिज़ाइन किया गया है dnsmasq
। पहली DNS रेंज है 192.168.42.1-254
और दूसरी DNS रेंज है 192.168.43.1-254
।
नेटड को बदलना आसान नहीं है। इसके साथ संवाद करने के लिए एक सॉकेट की आवश्यकता होती है, और उस सॉकेट को तब लिया जाता है जब Android टेथरिंग शुरू करता है। लेकिन हम जिस स्रोत फ़ाइलों के माध्यम से जा रहे हैं Tethering.java
(मैंने Froyo का उपयोग किया) हम देखते हैं:
// 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;
}
Dhcp पर्वतमाला का मुख्य स्रोत 42 और 43 हार्डकोड नहीं है, लेकिन यह एक आंतरिक स्ट्रिंग सरणी array.config_tether_dhcp_range से पढ़ा जाता है। लेकिन यह वर्तमान में खाली है।
आप Android ढांचे को संपादित कर सकते हैं। मेरे फोन पर, यह है /system/framework/framework-res.apk
। संपादन फ्रेमवर्क- res.apk के लिए ऑनलाइन ट्यूटोरियल के एक टन हैं , सरल स्ट्रिंग्स से लेकर पूर्ण थीमिंग तक। अपने फ़ोन और Android संस्करण के लिए एक खोजें।
मुख्य बात आप बदलना चाहते हैं /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
। आपको (या समान) मिलना चाहिए:
/ system / bin / dnsmasq --no-daemon --no-poll -no-resolv --dccp-range = 192.168.50.5,192.168.50.99,1h
FWIW, मेरे WIFI टेथरिंग डिफ़ॉल्ट dnsmasq
रेंज का उपयोग करता है, फिर भी मेरा कंप्यूटर असाइन किया गया था 192.168.43.147/24
और गेटवे था 192.168.43.1/24
। निश्चित नहीं है कि आपका 42.x
पता किसी डिफ़ॉल्ट पर क्यों है ।
मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे लगा कि मैं एक अपडेट प्रदान करूंगा। यह एंड्रॉइड के कुछ निर्माताओं और संस्करणों को अब दिखाई देता है। वाईफाई हॉटस्पॉट सुविधा का उपयोग करते समय यूआई के माध्यम से डीएचसीपी सर्वर के लिए आईपी सबनेट रेंज को बदलने की अनुमति दें। यहां Android 6.0 पर चलने वाले एचटीसी वन M8 पर इसे ढूंढना है। YMMV।
मोबाइल हॉटस्पॉट स्क्रीन से, 3 डॉट्स आइकन (अधिक) पर क्लिक करें, उन्नत पर जाएं, फिर LAN सेटिंग्स। "स्थानीय आईपी" के तहत आईपी पते को अपने वांछित आईपी में बदल दें। "स्थानीय डीएचसीपी" के तहत अपने आईपी पते के सबनेट से मिलान करने के लिए शुरुआती आईपी को बदलें।
ट्रेंट
नोट: रूट की आवश्यकता है
डिफ़ॉल्ट डीएचसीपी आईपी पता रेंज हार्ड-कोडेड ( 1 ) है , आप इसे संशोधित स्रोत कोड के साथ रोम के पुनर्निर्माण के बिना नहीं बदल सकते। या थोड़ा हैक का उपयोग करें।
जब आप टेदरिंग पर स्विच करते हैं, तो क्या होता है (कम से कम):
hostapd
- डेमन जो पहुंच बिंदुओं का प्रबंधन करता है - शुरू किया जाता है।dnsmasq
- डीएचसीपी / डीएनएस सर्वर (पाई तक) - हार्ड-कोडेड कमांडलाइन तर्क ( 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 $*
अपने वाई-फाई इंटरफ़ेस ( 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
SELinux नियमों को भी परिभाषित करने की आवश्यकता है यदि (सभी या कुछ) पहले से परिभाषित नहीं हैं और यदि स्थिति है 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*
का आनंद लें!
या आप अपने स्वयं के प्रक्रियाओं को पूरा करके, कमांडलाइन से पूरा टेदरिंग सेटअप कर सकते हैं। इस उत्तर में निर्देश शामिल हैं, हालांकि प्रश्न अलग है।
सम्बंधित: