Raspberry Pi AP功能改进: systemd服务封装以及dnsmasq的(2)

由上面结果可以看到,主程序为/usr/sbin/dnsmasq,默认配置文件为/etc/dnsmasq.conf,并且在systemd下面也有dnsmasq的服务。但是在本文中,为了将dnsmasq和hostapd封装成为一个统一的新服务,因此弃用程序包中默认安装的dnsmasq服务以及默认的配置文件。编辑新的配置文件如下所示,下面的配置中,使用dhcp-options给客户端传递DNS服务器为树莓派本身20.20.20.1,而树莓派使用/etc/resolv.conf文件作为上游的DNS服务器进行名称解析,而这个/etc/resolv.conf文件在进行pon dsl-provider拨号的时候,会自动获得。

linuxidc@kali:~$ cat /etc/dnsmasq_AP.conf

#DHCP

listen-address=20.20.20.1,127.0.0.1

dhcp-range=20.20.20.2,20.20.20.20,12h

dhcp-option=3,20.20.20.1

user=dnsmasq

  

#DNS

no-hosts

cache-size=500

resolv-file=/etc/resolv.conf

service封装
准备好上述过程之后,下面对于hostapd,dnsmasq进行统一的封装。

创建/lib/systemd/system/AP.service文件,内容如下所示。其中Unit段做描述以及服务依赖的配置;Service段做服务启动的配置,包括开启链路,配置网卡的IP地址,开启hostapd服务,以及开启dnsmasq服务;Install配置段指定该服务使用multi-user.target,对应于多用户状态。

[Unit]

Description=AP

Wants=network.target

Before=network.target

BindsTo=sys-subsystem-net-devices-ethusb0.device

After=sys-subsystem-net-devices-ethusb0.device

  

[Service]

Type=oneshot

RemainAfterExit=yes

ExecStart=/sbin/ip link set dev ethusb0 up

ExecStart=/sbin/ip addr add 20.20.20.1/24 broadcast 20.20.20.255 dev ethusb0

ExecStart=/usr/sbin/hostapd -B /etc/hostapd/hostapd.conf

ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq_AP.conf

  

ExecStop=/sbin/ip addr flush dev ethusb0

ExecStop=/sbin/ip link set dev ethusb0 down

  

[Install]

WantedBy=multi-user.target

通过如下命令激活该service,并设置为开机自动启动。观察ip地址,hostapd服务,dnsmasq服务是否已经启动:

linuxidc@kali:~$ sudo systemctl enable AP.service

linuxidc@kali:~$ sudo systemctl start AP.service

  

linuxidc@kali:~$ ps -ef | grep -E ".*hostapd|.*dnsmasq" | grep -v grep

root 1337 1 0 19:43 ? 00:00:12 /usr/sbin/hostapd -B /etc/hostapd/hostapd.conf

dnsmasq 1340 1 0 19:43 ? 00:00:00 /usr/sbin/dnsmasq -C /etc/dnsmasq_AP.conf

  

linuxidc@kali:~$ ip a sh dev ethusb0

6: ethusb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

link/ether c8:3a:35:d3:1b:4e brd ff:ff:ff:ff:ff:ff

inet 20.20.20.1/24 brd 20.20.20.255 scope global ethusb0

valid_lft forever preferred_lft forever

inet6 fe80::ca3a:35ff:fed3:1b4e/64 scope link

valid_lft forever preferred_lft forever

将windows作为客户端尝试连接raspberry_AP,cygwin输出信息如下:

无线局域网适配器 无线网络连接: 连接特定的 DNS 后缀 . . . . . . . : 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13892.html