上面的实践中我们实现了编译openwifi代码并在板子实际运行了一个wifi终端加入的试验。
在用手机看到openwifi这个接入点时候,我们可以看到不可上网的提示,如下:
在不可上外网的情况下我们只能访问一下openwifi的文件系统内置的页面,进行内网网络层的试验。我们这个blog要实现一个路由器功能,就是接入openwifi的手机可以通过openwifi来上网。
其实原理也是简单的,就是一个桥接的关系。
我们一点点琢磨。首先要保证sdrpi本身能够上网,模式的网络是192.168.10.我局域网的网段是10.16.13,设置eth0的ip地址为10.16.13.119
ifconfig the0 10.16.13.119
之后我们ping一下路由器确保正确连入局域网。我的路由器ip地址是10.16.13.1,运行截图如下:
IP层可以到达路由器,ctrl+c退出。
网关gateway简写gw这里就是路由器,内网通过网关访问外网。用下面命令设置网关为路由器地址。
route add default gw 192.168.31.1 eth0
之后我们尝试一下ping外网,我们尝试直接ping baidu.com,运行结果如下:
我们看到可以ping通外网,并且能够实现动态域名解析(因为我们直接ping的是baidu.com而不是实际的ip地址,这是因为系统自动将默认DNS服务器设置为了网关(即路由器),而路由器恰好支持。
此时SDRPI已经连通了外网,我们接下来要做的事情是将对sdr0这个网络接口的访问“”前递”到eth0,
ifconfig eth0 10.16.13.119
route add default gw 10.16.13.1 eth0
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo ip route add 10.16.13.0/24 via 10.16.13.119 dev eth0
这里的命令是我根据openwifi主页修改过来的,我们可以到这里面只有一个eth0以及他的ip,说明其他网口的网络数据都可以通过这个eth0连接外网。
运行这些命令行,后再用手机扫描openwifi网络,会发现openwifi热点上不再有不可上网的描述,如下图:
我们接入openwifi这个热点,之后手机就好像连入了家里的wifi,可以任意访问外网了。
=================================================
不好意思,刚才体验为了网速刷了一会儿视频,笑了半天没思路往下写了,就写到这里哈。不过网速确实还可以的说。