(3)用树莓派建立一个无线热点AP

开机自动建立一个AP热点
树莓派开机自动建立一个AP热点,可以方便电脑来SSH连接,从而进行操作。这里主要用到了无线网卡驱动、hostapd、dnsmaq、systemctl等,有关连接到其他无线网络的操作可以查看archlinux wiki主页wireless network configuration的iwconfig wlan0 scan/connect、wap_supplicant。

ifconfig wlan0 up 或者 ip link set dev wlan0 up
查看无线网卡
PCI网卡lspci,USB网卡用lsusb,本网卡是Realtek无线网卡

ethtool -i wlan0 查看无线网卡驱动信息,本网卡的驱动是 rtl8192cu

iwconfig wlan0 mode master查看是否支持AP模式

iwconfig查看无线网卡信息

ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 , 给无线网卡设置一个静态IP。或者 ip addr add 192.168.0.1/24 broadcast 192.168.0.255 dev wlan0

安装hostapd
 pacman -S --needed hostapd
配置/etc/hostapd/hostapd.conf文件,主流的driver是nl80211

interface=wlan0
driver=nl80211
ssid=wbyxu
hw_mode=g
channel=11dtim_period=1rts_threshold=2347fragm_threshold=2346macaddr_acl=0auth_algs=3ieee80211n=0wpa=3wpa_passphrase=* #设置密码wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

然后 hostapd -B /etc/hostapd/hostapd.conf启动,当nl80211驱动不支持会报nl80211的错,这时需要到Realtek官网下载对应的驱动包,如8192cu,ftp://WebUser:[email protected]/cn/wlan/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
用realtek官网的驱动包编译安装hostapd,
解压,进入wpa_supplicant_hostapd/,再解压wpa_supplicant_hostapd-0.8_rtw_xxx.tar.gz,进入到hostapd文件夹下,然后make。cp hostapd /usr/bin/hostapd,重新启动hostapd,这时候就没问题了,可以用其他设备搜索到开启的AP。

安装DHCP服务
pacman -S dnsmasq,编辑/etc/dnsmasq.conf来进行配置。dnsmasq的DHCP服务用的是67端口UDP协议,DNS服务用的是53端口的TCP和UDP协议,注意在iptables让这几个端口的INPUT打开。
listen-address=192.168.0.1 # 监听地址,同你想设置的网关地址
interface=wlan0 # 无线网卡的设备名
bind-interfaces 
dhcp-range=192.168.0.100,192.168.0.200,12h # DHCP 分配 IP 的起止段和租约时间,这里是 12 小时
dhcp-option=6,8.8.8.8,8.8.4.4 # 推送给客户端的 DNS 服务器

然后直接 dnsmasq启动,如果报地址已经被使用的错,则netstat -anlp | grep -w LISTEN查看一下IP和53端口是否被占用。

所有组件安装完毕并测试可用后,现在 AP已经可以连接并自动获取IP了。

此外,通过AP共享有线网还需要配置iptables转发和系统转发ipv4包,另外,如果是校园网认证,还需安装认证客户端mentohust,但考虑到mentohust迟迟没跟上锐捷的更新,不能使用,所以不再继续共享校园网,这里也不介绍iptables等的转发配置。

最终配置AP开机自启动
参考 https://wiki.archlinux.org/index.php/Wireless_network_configuration_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
创建一个IP配置文件
/etc/conf.d/network-wireless@wlan0
address=192.168.0.1
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1
创建一个systemd开机启动项,在启动时自动配置wlan0的静态IP,以及启动hostapd创建AP
/etc/systemd/system/[email protected]
[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network-wireless@%i
ExecStart=echo 1 > /proc/sys/net/ipv4/ip_forward
ExecStart=/usr/bin/ip link set dev %i up
ExecStart=/usr/bin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev %i
#ExecStart=/usr/bin/ip route add default via ${gateway}
ExecStart=/usr/bin/hostapd -B /etc/hostapd/hostapd.conf ExecStop=/usr/bin/ip addr flush dev %i ExecStop=/usr/bin/ip link set dev %i down [Install] WantedBy=multi-user.target

设置所有组件开机自启动
systemctl enable  iptables 
systemctl start iptables
systemctl enable  [email protected]
systemctl start  [email protected]
systemctl enable  dnsmasq
systemctl start dnsmasq

取消开机启动配置静态IP可以使用systemctl disable  xxxx如[email protected]

如果想将eth0改成自动获取IP,则可以通过配置/etc/netctl/eth0
Interface=eth0
Connection=ethernet
IP=dhcp
然后netctl enable eth0即可,netctl会自动成成一个/etc/systemd/system/[email protected]。最终效果和直接配置 /etc/systemd/system/[email protected]一样。

注意:通过systemctrl配置网络的开机启动设置有两种方法。一是通过在/etc/netctl/下面创建和修改对应网卡的配置文件如上面提到的/etc/netctl/eth0,然后 netctl enable eth0,这个命令会自动生成一个 systemctl的文件/etc/systemd/system/[email protected]从而开机启动这项服务。二是先写一个对应网卡的配置文件,可以放在/etc/conf.d/下,如叫做network-link@eth0,然后在/etc/systemd/system下面手动写一个服务[email protected](@后面可以跟eth0作为参数,传递到这个service文件中),服务文件里面调用/etc/conf.d/network-link@eth0中的配置来做网卡的设置,最后还是设置这个服务开机启动 systemctl enable  network-link@ eth0.service。两种方法最终都是设置了一个systemctl的服务,相比来说第一种做简单的网卡配置很是适合,而第二种可以手动xieservice文件在里面加上更加复杂的脚本处理。
参考wiki:https://wiki.archlinux.org/index.php/Wireless_network_configuration_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

你可能感兴趣的:(树莓派Raspberry,B+)