简述
想把RaspberryPi作为一个家庭服务器使用,家里使用的ADSL电信的接口,之前得用一个路由器,然后将RaspberryPi连接到路由器的LAN口,这样,就得给两个东东供电……改成一个就更好了,于是就想用运行Raspbian的RaspberryPi把两者的事情都一起做了。
参考资料
- 将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)
- RPI-Wireless-Hotspot
- 使用 PPPoEConf 连接 Internet
无线热点配置
硬件条件
首先RPi要插上一个无线网卡,我使用的无线网卡内部IC是RealTek的RTL8188,这样,通过RPi的Ethernet接口连接到家里的ADSL moderm进行PPPoE拨号,从Ethernet转发到Wifi,以无线热点的方式与其他wifi设备共享网络。如果不是用的这款无线网卡IC,要先确认下无线网卡是否支持Access Point模式。
需要打通的步骤
- 使能无线网卡作为Access Point
- 在有wifi设备(手机,平板……)连接到RPi wifi网络时,自动分配IP地址给这些设备
- 将Ethernet拨号网络与wifi网络使用网络地址转发方式整合,这样wifi网络才会真正连接到internet
必要软件安装
hostapd:使能和管理无线网卡作为Access Point用;
udhcpd:使无线网卡能动态分配IP地址给连接来的wifi设备。
这里有一点要特别补充,RTL8188并不被RPi官方的Debian系统所支持,hostapd使用它时要做如下额外的配置:
其实以上步骤就是对原来的hostapd做了些修改,用于能正常驱动RTL8188,如果没有进行这一步,后面的hostapd功能经测试使用是不能用的。
配置DHCP
修改其中的一些内容(我将其中的option dns,opt wins的内容都mask掉了):
使能DHCP server
注释掉其中的DHCPD_ENABLED=”no”这一行:
配置无线网卡
wlan0配置为静态IP
将wlan0的IP地址设置为上面的router地址:
然后还要确保下次boot时也会自动将wlan0的IP地址设置为该值,所以:
修改interfaces文件的内容为:
配置HostAPD
将其文件内容改为如下:
然后配置hostapd文件路径:
修改其中的DAEMON_CONF内容为:
配置NAT(网络地址转发)
NAT使多个网络设备能通过一个连接到internet的设备联网,Linux支持Netfilter (iptables)的方式进行网络地址转发。
内核的IP转向功能启动与配置
启动内核的IP转向功能:
为了在boot时自动配置启用IP转向功能,编辑/etc/sysctl.conf:
在最后添加一句(或找到文件中的这一句unmask掉):
内核的NAT使能
为便于下次reboot后不要每次都重新输入这些命令,将其保存下来:
然后在/etc/network/interfaces文件中的末尾添加如下一句:
开启Access Point
运行如下命令,将使之在之后reboot时自动开启Access Point:
配置结果
此时直接连接我的wlan0作为AP的无线网试了下,没有连接成功,于是reboot系统,然后就能连接成功了。
在reboot完,log中最后看到了My IP address,显示了eth0和wlan0的两个地址,看来配置OK了。
用pad测试可以连接上网!
windows下用putty的SSH连接到eth0 OK!
Raspbian的log
连接上网络的pad
PPPoE拨号
这个在Raspbian下配置还比较简单的,首先得想办法将RaspberryPi连上网,因为要下载一些安装包:
等到安装完成,此时将RaspberryPi的eth0接口连接到家里的电信ADSL的接口上,然后输入命令:
期间一直选择Yes项,然后还会让输入电信ADSL的账户名和密码,一直进行完就OK了。
然后用:
看下有没有ppp0的信息,有的话,一般就拨号成功咯。
重新做NAT
在PPPoE拨号成功后,需要重新设置下网络地址转发,因为之前的操作是将eth0转到wlan0了,而现在实际eth0是连接到电信接口的,实际使用的是ppp0,此时可以看到eth0的地址为169.254.xx.xx,表明是无效的IP,因此需要将ppp0转发到wlan0。我先将/etc/iptables.ipv4.nat删掉了,然后执行下面的:
为便于下次reboot后不要每次都重新输入这些命令,将其保存下来:
然后我用如下命令重启raspbian的network:
结果卡住了,我将其停止,然后重新启动了下hostapd和udhcpd,接着就可以用pad连接我的wifi了。OK!!!
开机自动PPPoE拨号
上面步骤过后,reboot系统如果发现没法联网了,用ifconfig看,没有ppp0的话,说明是pppoe没有起来,用pon dsl-provider:
问题记录
wlan0没法设置成静态IP
这个问题困扰比较久,因为将RPi当成路由器,需要将wlan0配成静态IP,但是修改/etc/network/interface文件,都是按照正常的步骤,修改也不会有问题,但是reboot之后,发现wlan0是没有IP地址的,因此导致后面操作都不会成功。
开始也怀疑是否网卡驱动,但是lsusb是可以看到的,而且也可以配成AP被搜索到,最后考虑到之前还对network相关做过一些其他的设置,想是不是其他配置文件有影响呢?另外Raspbian是否会有不太稳定的地方呢?于是没办法,只好重刷Raspbian系统了,然后配wlan0为静态IP,OK!!!
wlan0配成静态IP后,ssh无法接入
将wlan0配成静态IP,此时eth0是通过网线连接到我路由器的LAN口的,其方式是DHCP的(raspbian默认的),可以上网,然后将我window电脑使用Putty用SSH连接到eth0的地址,发现没法成功,只要将wlan0的静态IP方式恢复为系统默认manual方式,然后SSH可以接入了。为什么不能这样呢?