好奇心驱使,研究了一下,也实现了在UBUNTU下的这个功能。现分享如下:
一,通过在windows7下这个功能的表现,分析上网的原理:
首先在windows7下,测试了一下这个功能,发现原理不复杂。
1、只要windows下手机驱动安装正确,手机转到这种模式下以后,windows里面就会增加一个虚拟的网卡,ip192.168.137.1,掩码255.255.255.0。
2、这时,手机屏幕上有提示,要求将原有的网卡“共享”。共享完成后,就可以实现手机借助电脑来上网了。
二、在ubuntu下的尝试:
1、手机用usb链接ubuntu电脑,手机转到这种模式,用ifconfig查看,发现出现了一个新网卡,名字叫usb0,ip和子网掩码未设置。
2、ubuntu里面,网络共享肯定未打开。
基于以上两点,写了一个shell脚本:
代码: 全选
#!/bin/bash
#打开IP转发,1表示转发;0表示不转发
echo "1" > /proc/sys/net/ipv4/ip_forward
#上面这个命令也可以通过修改/etc/sysctl.conf实现,在文件中加上下面一行:net.ipv4.ip_forward = 1
#其余命令是:
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
#打开NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#设置usb网卡的 ip 和 子网掩码。
#由于未知原因,IP经常“丢失”,暂时用“死循环”不停“纠正”。
declare -i i=1
while ((i<=10))
do
ifconfig usb0 192.168.137.1 netmask 255.255.255.0
sleep 10
done