没有记录,就没有发生。

0%

树莓派3 热点 一键脚本

一些废话

不知怎么的,在学校就是不想上路由器,恰巧树莓派3自带wifi,并且可以使用原版hostapd,作为热点使用也是极为方便的。网上也有现成的教程:用树莓派3做无线路由器。 但是呢作为一个不折腾就难受的人…一折腾就挂…总是重装也是够麻烦的,干脆写了个安装脚本。

原理

开机根据/root/start.sh脚本决定使用AP模式或wifi模式 AP模式使用了hostapd、dnsmasq;

使用脚本安装

1
wget http://www.hly.space/downloads/set_ap.sh && chmod 700 set_ap.sh && sudo  ./set_ap.sh

使用相关

/root/start.sh 决定了开机后wlan0的工作模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
#This shell will run at boot

#Hostapd&dnsmasp
#改成wifi便是wifi模式
way=ap
#wlan0桥接的接口,我是用pppoe拨号故为ppp0
#可以改成eth0等,可用ifconfig命令查看具体外网接口
interface=ppp0
if [ ${way} == ap ] ; then
ifconfig wlan0 down
ifconfig wlan0 192.168.3.1 netmask 255.255.255.0 up
iwconfig wlan0 power off
service dnsmasq restart
hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1
iptables -t nat -A POSTROUTING -o ${interface} -j MASQUERADE
iptables -A FORWARD -i ${interface} -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o ${interface} -j ACCEPT
fi
echo "wlan0 works in ${way} mod"

日志文件则为/root/start.log

安装脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash

#适用于树莓派3 raspbian系统,至于其他的我就不知道了

apt update& apt upgrade -y
apt install hostapd dnsmasq -y
if [ $? == 1 ] ; then echo"相关软件获取失败,请检查网络连接" && exit 1 ; fi ;
echo 设定AP参数
read -p "Local IP(默认192.168.3.1):" ip
[ -z "$ip" ] && ip=192.168.3.1
read -p "Start of DHCP(默认192.168.3.2):" start
[ -z "$start" ] && start=192.168.3.2
read -p "End of DHCP(默认192.168.3.100):" end
[ -z "$end" ] && sel=end
read -p "Name of AP:" name
read -p "Password:" ser
cat >>/etc/dnsmasq.conf <<-EOF
interface=wlan0
dhcp-range=${start},${end},255.255.255.0,12h
EOF
cat >/etc/hostapd/hostapd.conf <<-EOF
interface=wlan0
hw_mode=g
channel=10
auth_algs=1
wpa=2
wpa\_key\_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=${ser}
ssid=${name}
EOF
sed -i '/^#net.ipv4.ip\_forward=1/c\\net.ipv4.ip\_forward=1' /etc/sysctl.conf
sed -i '/^exit 0/i\\cd \\/root' /etc/rc.local
sed -i '/^exit 0/i\\.\\/start.sh >start.log' /etc/rc.local
cat >/root/start.sh <<-EOF
#!/bin/bash

#Hostapd&dnsmasp
way=ap
interface=ppp0
if \[ \\${way} == ap \] ; then
ifconfig wlan0 down
ifconfig wlan0 ${ip} netmask 255.255.255.0 up
iwconfig wlan0 power off
service dnsmasq restart
hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1
iptables -t nat -A POSTROUTING -o \\${interface} -j MASQUERADE
iptables -A FORWARD -i \\${interface} -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o \\${interface} -j ACCEPT
fi
echo "wlan0 works in \\${way} mod"
EOF
chmod 755 /root/start.sh
echo "AP配置完成,重启生效"
echo "默认为AP模式,可在/root/start.sh中更改"
------------- END OF FILE meow~-------------