文章目录

  • 安装必要软件
  • hostapd
  • dnsmasq
  • 配置
  • 解除禁用hostapd
  • 配置hostapd开机启动
  • 配置DHCP服务
  • 配置热点信息
  • 配置路由转发
  • PPPOE拨号上网



这篇文章主要参考树莓派的

官方教程,之前看了其它的教程,都不能成功。看来树莓派的Ubuntu和一般的Ubuntu是有些区别的。这篇文章的目的就是记录一下,以防以后自己忘记了。

安装必要软件

装程序之前最好更新一下软件源列表

sudo apt-get update

hostapd

sudo apt install hostapd

这个是开启热点用的主要程序,用它来通过无线网卡发射信号

dnsmasq

sudo apt install dnsmasq

这个用作热点的DHCP服务和DNS服务

配置

首先启动hostapd

解除禁用hostapd

sudo systemctl unmask hostapd

配置hostapd开机启动

sudo systemctl enable hostapd

配置DHCP服务

修改配置文件/etc/dhcpcd.conf

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

这里把名字叫wlan0的接口设置了静态IP地址192.168.4,.1,同时/24表明子网掩码是255.255.255.0

装好了dnsmasq之后会生成一个/etc/dnsmasq.conf配置文件,可以直接覆盖,或者把原来的保存起来,新建一个同名的文件进行配置
内容是

# 在wlan0接口上服务
interface=wlan0
 # DHCP的地址池,这里2-20,也就是同时19个设备连接热点
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
# DNS的域名
domain=wlan
# 这个路由器的别名(连接热点的设备可以通过gw.wlan来访问树莓派)
address=/gw.wlan/192.168.4.1

配置热点信息

配置hostapd,修改配置文件/etc/hostapd/hostapd.conf

country_code=CN
interface=wlan0
ssid=热点名字
hw_mode=g
channel=7
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

5Ghz

interface=wlan0
driver=nl80211

hw_mode=a
ieee80211n=1
ieee80211ac=1
ieee80211d=1
ieee80211h=1
require_ht=1
require_vht=1
wmm_enabled=1
country_code=US

vht_oper_chwidth=1
channel=149
vht_oper_centr_freq_seg0_idx=155
ht_capab=[HT40-][HT40+][SHORT-GI-40][DSSS_CCK-40]

wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ssid=热点名字
wpa_passphrase=热点密码

Nintendo switch 需要 channel 44 才能连上5Ghz

interface=wlan0
driver=nl80211

hw_mode=a
channel=44
auth_algs=1
ieee80211n=1
ieee80211ac=1
wmm_enabled=1

wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ssid=热点名字
wpa_passphrase=热点密码

配置好以上信息,理论上树莓派就能够开启热点并让设备连接了
树莓派默认是禁用无线网卡的,所以最好确保解除禁用无线网卡

sudo rfkill unblock wlan

可以通过以下命令重启树莓派,检查热点是否正常开启

sudo systemctl reboot

配置路由转发

首先要确保系统允许路由转发
配置文件/etc/sysctl.conf把下面的那一行取消注释,或者直接添加

net.ipv4.ip_forward=1

完成后,执行sudo sysctl -p来让配置生效。

允许路由转发后,通过iptables来配置路由转发
执行以下命令

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

这个命令会将从接口eth0的出去的请求的源IP地址替换为树莓派在公网上的IP地址。将进来的响应的目标IP地址替换成原请求的原IP地址。也就是说这一条是热点能够连接互联网的关键

iptables规则在重启后会被清除,想要保存规则的话,可以用 iptables-persistent

sudo apt-get install iptables-persistent

注意:如果是拨号上网的话,配置好下面的再执行这个命令,其中的eth0改成ppp0

PPPOE拨号上网

如果不需要拨号上网的话,上面的配置就可以正常使用热点了,但是拨号上网需要额外的配置
首先安装拨号上网需要的软件

sudo apt-get install pppoe pppoeconf pppstatus

然后配置上网账号

sudo pppoeconf

全选yes,中间会要输入账号密码
配置好之后ifconfig命令会多一个ppp0接口
最后将ppp0添加到系统的默认路由表中

sudo route add default ppp0

结束。