1. pc端设定:
共享可上网的连接,选择共享给usb连接。此时usb连接的ip会提示变为192.168.0.1,确定即可。之后,ip不要去做任何修改,也不需要去设网关。此点和网上教程不一样,可以说更简单。
2.手机端设定:
先把APN关掉(设置->数据管理->数据传输->数据已启用),这样edge的default gw就没有了,省得再用网上教程的方法ifconfig rmnet0 down。用adb shell进入后,操作如下:
su //取得管理员权限
busybox route add default gw <usb连接的pc端的ip 192.168.0.1>
busybox route //检查route,usb连接后,会出现usb0的连接接口(如果要知道它的ip,可以用busybox ifconfig -a查看)。添加后,出现接口为usb0的default gw。
访问站点,失败。
想到是不是dns没有正确解析域名,试无线路由器的网页192.168.1.1,正常。说明网络正常,确实是dns问题。
起初对dns不了解,按照网上教程在usb连接pc端去设dns,同样失败。后来搞清楚了,当一个网址输入后,如果是域名,系统会把域名发给本地出口的网络连接中设定的dns ip进行域名解析,本地dns设定不正确,肯定无法解析。那手机端usb0的dns如何设定?查找后得知,可以用setprop net.dns1 <dns ip1>和setprop net.dns2 <dns ip2>。先用getprop查看当前的dns,未找到以上两项,设定setprop net.dns1 8.8.8.8,再次尝试,一切正常!
如果单位网络中有内网的域名和外网的域名都要访问,dns可以设为单位内部的dns,具体可以找台pc参考。此时,如果还是设8.8.8.8等外网的dns,内网域名将无法解析。
正常后,曾经重启过手机,再次查看dns发现已经有正常的dns1,dns2。此时,即使不设dns仅设default gw也能正常访问。之前两项丢失的原因不明。
每次设的dns会在重启后消失,所以可以按照网上教程,把以上命令做个脚本,方便执行。
有几点问题:
1. 不用busybox,单独的route命令也能用,但添加缺省网关,好像用busybox更简单点。route del 删除时有时删不了,如host路由。
2. ifconfig -a单独用不行,必须在busybox后面。
3.一旦设好default gw ,在用route命令查看时,会在网关显示前等很长时间。之前2.1没有。