树莓派3B配置无线路由器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gsl371/article/details/79900928

工具/原料:树莓派Raspb Pi 3、系统版本:ubuntu mate、用ssh软件工具连接树莓派

系统安装设置

树莓派ubantu mate版本系统的下载及安装,请自行百度。
需要安装的软件包:
sudo apt-get install hostapd dnsmasq
hostapd的功能是创建热点,dnsmasq功能是实现网址自动分配和域名解析功能,不过这里只是使用它的网址分配功能。

设置网络

设置IP地址
这一步骤是最容易出错的了,网上教程也多为错误的。
修改配置文件:sudo vi /etc/network/interfaces
配置如下:

auto lo
  iface lo inet loopback
  auto enxb827ebb40f11
  iface enxb827ebb40f11 inet dhcp
  auto wlan0
  allow-hotplug wlan0
  iface wlan0 inet static
      address 192.168.2.1 
      netmask 255.255.255.0
      broadcast 192.168.2.255
      network 192.168.2.0

说明:
1. auto enxb827ebb40f11,auto表示开机自动加载enxb827ebb40f11有线网卡,有的教程没有写上auto enxb827ebb40f11,导致enxb827ebb40f11未启动。
2.enxb827ebb40f11上网方式是dhcp,若要设置成静态上网,就将dhcp改成static,其内容参考图中#注释掉的部分(IP地址改成自己路由器的)。静态方式配置中,有些教程未写上dns-nameservers,导致不能上外网。233.5.5.5是阿里云的解析服务,当然也可以改成其他的。
3.有教程提示要在 /etc/hdcpcd.conf 文件中配置静态网卡,经多次检验后,这样会带来问题:重启后 enxb827ebb40f11 和 wlan0 只有一个起作用(通常是enxb827ebb40f11不起作用,表现为eth0加载不了,或者没有被分配到IP地址),即使用ifdown和ifup命令也解决不了问题。
4.配置完成,不着急往下走。
sudo reboot 重启树莓派后,用 ifconfig 命令查看 enxb827ebb40f11 和 wlan0 网卡是否都在,且被分配了IP地址。若都正确,可继续往下一步骤操作。
5.若重启后,无法ssh连上树莓派,说明出错了,可能是enxb827ebb40f11没启动或未配置好(前提是你使用了正确的IP地址连接的,注意检查下)。

配置热点

编辑 sudo vim /etc/hostapd/hostapd.conf
添加下面内容。

interface=wlan0
driver=nl80211
# 设置无线网络名
ssid=raspberryA
hw_mode=g
# 设置信道
channel=6
ieee80211n=1
wmm_enabled=1
macaddr_acl=0
auth_algs=1
# 是否隐藏无线网络名
ignore_broadcast_ssid=0
# 使用WPA2
wpa=2
wpa_key_mgmt=WPA-PSK
# 设置无线网络的密码
wpa_passphrase=12345678
rsn_pairwise=CCMP

说明:无线网络名和密码 改为想要的。

编辑 sudo vim /etc/default/hostapd
将 #DAEMON_CONF=” “所在行的内容改为:
DAEMON_CONF=”/etc/hostapd/hostapd.conf”
确定服务正常运行

# systemctl status hostapd.service
● hostapd.service - LSB: Advanced IEEE 802.11 management daemon
   Loaded: loaded (/etc/init.d/hostapd; bad; vendor preset: enabled)
   Active: active (running) since 三 2018-04-11 18:04:24 CST; 2min 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1223 ExecStop=/etc/init.d/hostapd stop (code=exited, status=0/SUCCESS)
  Process: 1231 ExecStart=/etc/init.d/hostapd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/hostapd.service
           └─1238 /usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf

411 18:04:24 gsl-pi systemd[1]: Starting LSB: Advanced IEEE 802.11 management daemon...
411 18:04:24 gsl-pi hostapd[1231]:  * Starting advanced IEEE 802.11 management hostapd
411 18:04:24 gsl-pi hostapd[1231]:    ...done.
411 18:04:24 gsl-pi systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon.

配置DHCP服务

我们先备份下dnsmasq的原配置文件
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
编辑 sudo vim /etc/dnsmasq.conf

#使用网卡接口
interface=wlan0
#监听地址
listen-address=192.168.2.1
#绑定接口
bind-interfaces
#dns服务器地址
server=223.5.5.5
domain-needed
bogus-priv
#地址范围,从50-150、租用时间为12小时。
dhcp-range=192.168.2.50,192.168.2.150,12h

确定服务正常运行

# systemctl status dnsmasq.service
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
  Drop-In: /run/systemd/generator/dnsmasq.service.d
           └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
   Active: active (running) since 三 2018-04-11 17:39:29 CST; 28min ago
  Process: 837 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 780 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 730 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 836 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─836 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-s

411 17:39:26 gsl-pi systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
411 17:39:27 gsl-pi dnsmasq[730]: dnsmasq: syntax check OK.
411 17:39:28 gsl-pi dnsmasq[836]: started, version 2.75 cachesize 150
411 17:39:28 gsl-pi dnsmasq[836]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
411 17:39:28 gsl-pi dnsmasq[836]: DNS service limited to local subnets
411 17:39:28 gsl-pi dnsmasq[836]: no servers found in /var/run/dnsmasq/resolv.conf, will retry

错误:no servers found in /var/run/dnsmasq/resolv.conf, will retry
需要编辑etc/default/dnsmasq
文件,并设置IGNORE_RESOLVCONF=yes
,这样的话 dnsmasq 就不会直接查找/var/run/dnsmasq/resolv.conf
中的内容了。

配置网络转发

首先我们来开启内核的IPv4包转发,编辑 sudo vim /etc/sysctl.conf:
在最后一行添加
net.ipv4.ip_forward=1
然后执行sudo sysctl -p让其生效
接下来,执行下面命令设置转发规则:

sudo iptables -t nat -A POSTROUTING -o enxb827ebb40f11 -j MASQUERADE
#下面两个命令是为了防止pi默认开启了防火墙,若无不执行也可以。
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 vim /etc/rc.local
在rc.local 文件中的 exit 0 所在行的前面添加(第二和第三命令可选,我是只添加了第一个命令):

sudo iptables -t nat -A POSTROUTING -o enxb827ebb40f11 -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 ACCEP

猜你喜欢

转载自blog.csdn.net/gsl371/article/details/79900928