Total Pageviews

Friday, 13 December 2013

树莓派做wifi热点或者连接wifi热点

做wifi热点
原帖地址:
1,http://elinux.org/RPI-Wireless-Hotspot
2,http://www.jenssegers.be/
首 先我的是树莓派B版,网卡是EDUP-N8508GS,其芯片是realtek RTL8188CUS,根据http://elinux.org/RPI-Wireless-Hotspot设置发现最后会hostapd segmentation fault.最后找到http://www.jenssegers.be/.
这篇文章也只是自己大概翻译一下这两个帖子,并且作为自己的一个记录.感谢在ickey上朋友帮抽中的树莓派,感谢我的好朋友.
假设你已经有了充足的配件,有网络连接(暂时没有的,如校园网用户,请看后面连接wifi热点),设置好ip地址,然后以pi身份登陆到上面去了.
系统版本是2013-02-09-wheezy-raspbian
(1) 先安装软件包
sudo apt-get install hostapd udhcpd (同这个网卡芯片型号的先不用安装hostapd)
(使用dnsmasq请看http://sirlagz.net/2012/08/09/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-1/)
(2) 编辑配置文件
sudo nano /etc/udhcpd.conf
如:
start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices.
end 192.168.42.20
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly.
opt lease 864000 # 10 day DHCP lease time in seconds
再编辑 /etc/default/udhcpd:
sudo nano   /etc/default/udhcpd

DHCPD_ENABLED="no"

#DHCPD_ENABLED="no"
(3) 分配静态ip
sudo ifconfig wlan0 192.168.42.1
要想开机自动设置
sudo nano /etc/network/interfaces
替换"iface wlan0 inet dhcp" (如果没有就直接写)到:
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
注释与wifi连接的行如
allow-hotplug wlan0
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet manual
到:
#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
(4) 设置hostapd(本网卡芯片型号的先不设置):
sudo nano /etc/hostapd/hostapd.conf
wpa加密的:
输入:
interface=wlan0
driver=nl80211
ssid=热点名称
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=热点密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
不加密的:
interface=wlan0
ssid=My_AP
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=0

sudo nano /etc/default/hostapd
把下面这句
#DAEMON_CONF=""
改为
DAEMON_CONF="/etc/hostapd/hostapd.conf"
(5) 设置NAT.
 sudo nano /etc/sysctl.conf
文件末尾加入:
net.ipv4.ip_forward=1
然后运行一下命令:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
要想开机自动设置,再输入:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
现在编辑网卡接口设置:
sudo nano /etc/network/interfaces
加入:
up iptables-restore < /etc/iptables.ipv4.nat
启动热点:
sudo service hostapd start
sudo service udhcpd start
开机自动启动热点:
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable
(6) 设置本网卡型号的hostapd:
如果你是我这个型号的,但是找着之前的教程安装会出现:
nl80211: 'nl80211' generic netlink not found
Failed to initialize driver 'nl80211'
rmdir[ctrl_interface]: No such file or directory
因为之前的教程使用nl80211这个驱动,有些网卡,比如我这张就不行.
其他网卡型号的待测试,建议先照之前的教程安装.不行在找网卡型号适合的hostapd和驱动装.
<1> 如果之前安装了hostapd包先用以下命令卸载:
sudo apt-get autoremove hostapd
<2> 下载专用的hostapd
wget https://github.com/segersjens/RTL8188-hostapd/archive/v1.1.tar.gz
解压:
tar -zxvf v1.0.tar.gz
(没有网络连接的可以用电脑下载再用u盘弄过去)
<3> 编译hostapd
cd RTL8188-hostapd-1.0/hostapd
sudo make install
<4> 设置hostapd.conf
sudo nano /etc/hostapd/hostapd.conf
像之前改下ssid,密码就好了.其他不知道就不要动.
<5> 重启服务:
sudo service hostapd restart
现在你应该能看到热点了.
连接wifi:
(1) 设置网卡接口:

sudo nano /etc/network/interfaces
设置成

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.137.108
netmask 255.255.255.0
gateway 192.168.137.1
dns-nameserver 202.116.0.1
wpa-ssid "热点名称"
wpa-psk "密码"
以上为分配静态地址的.请根据自己情况分配,我这里是魔方用电脑分享的wifi.注意双网卡时不能有两个网关,不然上不去外网,我之前就是那样.
有线连接校园网

(1) 下载njit-client,我的校园网使用h3c认证,锐捷用mentuhost
到https://github.com/gracece/njit-client_for_sysu(感谢开发者)
下载到,然后进入树莓派编译就好了.
然后用用户名,密码登录(绑定了mac地址要改地址后再拨号)

njit-client 12345 1234 eth0
如果失败,请在电脑上先拨一下,再直接插网线到树莓派拨号.之间用无线连接着先.
----------

树莓派做无线热点

今天我们决定使用官方的 Raspbian 系统来设置树莓派作为一个无线热点(Access Point)。

安装系统

首先从官网下载 Raspbian 系统,有三个版本可供下载选择:

  • Raspbian Buster with desktop and recommended software(1.9G)
  • Raspbian Buster with desktop(1.1G)
  • Raspbian Buster Lite(0.4G)

不同版本的区别在名字上已经写得很清楚了,大家可以自己选择。考虑到只是为了做一个无线热点,我们可以选择第三个版本 Lite 来减少树莓派的散热。

下载镜像之后解压,使用 dd 命令将镜像写入到 tf 卡(Windows 可以用 win32diskimager):

然后启动树莓派,因为 ssh 默认是关闭的,第一次使用需要外接显示器和键盘来处理一下。

使用默认账户 pi 和默认密码 raspberry 登陆系统,然后配置树莓派:

选择 Interfacing Options -> SSH -> YES,然后看一下树莓派的 ip 地址:

然后在我们的电脑上就可以通过 ssh 来登陆啦。

修改 apt 源

考虑到国内特殊的网络环境,我们可以将树莓派的 apt 软件源修改一下,提高以后软件下载速度。

先修改 Raspbian 的源,参考科大源

修改之后大概是这样子:

 再修改 Raspberrypi 的源,参考科大源

修改之后大概是这样子:

更新:

配置无线热点

为了设置无线热点,我们的树莓派必须拥有一个无线网卡,如果 3B 以上型号则可以使用板载的 wifi 模块,而我手上的是一个2B+的树莓派,因此需要一个USB无线网卡。刚好也有一个闲置的迷你网卡 RT5370,插到USB口即可被识别:

设置无线热点,我们可以有两种方案:

  • 设置为独立的NAT网络
  • 桥接原来的网络

NAT网络

要配置为独立的NAT网络,我们主要使用 DNSMasq 和 HostAPD 这两个软件,直接安装:

接着给 wlan0 配置一个静态 IP,假设我们使用 192.168.2.x 的网段,修改 dhcpcd 配置:

 然后重启一下 dhcpcd 让 wlan0 的配置生效:

配置 DHCP 服务器(dnsmasq)

dnsmasq默认的配置文件有详细的注释说明,我们这里提供一个最简单的配置:

然后重启一下 dnsmasq:

配置无线热点(hostapd)

首先给 hostapd 创建一个配置文件:

如果我们使用的是 5G 的无线网卡,可以将 hw_mode 改为 a,它的取值有4种:

  • a = IEEE 802.11a (5 GHz)
  • b = IEEE 802.11b (2.4 GHz)
  • g = IEEE 802.11g (2.4 GHz)
  • ad = IEEE 802.11ad (60 GHz)

然后告诉系统我们使用这个配置文件:

然后开启 hostapd:

配置路由转发

修改 /etc/sysctl.conf 文件:

修改 iptables:

保存 iptables 规则:

在开机的时候加载:

至此就大功告成了,重启树莓派,手机上应该可以搜到新建的热点信号并可以上网。

桥接网络

在上面的方式中,手机连上后可以看到分配到的ip地址是 192.168.2.x,它跟我们路由器的ip并不在同一个NAT网络中。如果想要在同一个网络中,可以使用桥接网络的方式。

配置桥接网络的wifi热点,我们需要使用 hostapd 和 bridge-utils:

因为我们要将 eth0 和 wlan0 进行桥接,所以不需要 dhcpcd 为这两个接口分配 ip 地址:

配置桥接

然后创建一个 bridge:

连接 eth0:

配置热点

hostapd 的配置文件和之前的类似,只需要额外指定 bridge=br0 并去掉 driver=xxx:

然后开启 hostapd 就可以了:

参考:

-------------------------------------------------