个人目的是经过把树莓派作成一个软路由,至关于一个智能路由器。html
材料
树莓派4B,操做系统其实能够是其余的Linux版本。觉得4B自带无线网卡,就用自带无线网卡做为路由出口。个人系统是Ubuntu 18.04linux
大概思路
具体步骤
配置两个网卡的IP
sudo vim /etc/network/interface
这里设置静态IP,也能够动态获取。web
#Local loopback
auto lo
iface lo inet loopback
#Ethernet0
auto eth0
iface eth0 inet static
address 192.168.137.10
netmask 255.255.255.0
gateway 192.168.137.1
dns-nameserver 8.8.8.8
allow-hotplug wlan0
#iface wlan0 inet dhcp
iface wlan0 inet static
address 192.168.4.1
netmask 255.255.255.0
安装hostapd建立热点
sudo apt-get install hostapd
配置hostapd服务器,创建配置文件: vi /etc/hostapd/hostapd.conf,并输入如下内容:ubuntu
DAEMON_CONF="/etc/hostapd/hostapd.conf"
sudo vi /etc/hostapd/hostapd.conf
写入以下配置项。注意要根据本身的实际状况,替换 ??? 处的内容:vim
ssid: WiFi 名称,8~64 个字符,最好用英文字母,不要出现特殊字符
hw_mode: WiFi 网络模式,通常填 g 便可,设备支持的话能够填 a 启用 5G 频段:
a = IEEE 802.11a (5 GHz)
b = IEEE 802.11b (2.4 GHz)
g = IEEE 802.11g (2.4 GHz)
channel: 信道编号。若是上面配置了 hw_mode=g 使用 2.4G 频段,则通常填 7 便可。若是配置了 5G 频段,则信道编号有所不一样,具体参考:WLAN信道列表
wpa_passphrase: WiFi 密码,最好用英文加数字,不要出现特殊字符
#5GHz MODE
# 设置默认的接入点为无线网卡 wlan0
interface=wlan0
#设置驱动程序为 nl80211
driver=nl80211
#无线路由器工做模式为802.11a(5G)
hw_mode=a
ieee80211n=1
ieee80211ac=1
ieee80211d=1
ieee80211h=1
require_ht=1
require_vht=1
vht_oper_chwidth=1
channel=149
vht_oper_centr_freq_seg0_idx=155
ht_capab=[HT40-][HT40+][SHORT-GI-40][DSSS_CCK-40]
# 设置加密模式为 WPA2
wpa=2
# 开启 WMM
wmm_enabled=1
country_code=US
# 设置加密方式为CCMP
wpa_key_mgmt=WPA-PSK
# 使用 AES, 而非 TKIP
rsn_pairwise=CCMP
# 设置无线网络 SSID 为 Lili
ssid=Lili
# 设置密码为741852123
wpa_passphrase=741852123
最后,启动 hostapd 服务。bash
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo reboot
若是出现:Interface wlan0 wasn't started服务器
#sudo nmcli nm wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 192.168.4.1/24 up
sudo service hostapd restart
注意配置文件不能有行是单独的空格,等号两边不要留空格。网络
这个时候已经能够看到热点了,可是手机链接会发现没有IP分配。
dom
配置DHCP服务
安装
sudo apt-get install isc-dhcp-server
配置
sudo vi /etc/default/isc-dhcp-server
改为目标网卡
DHCP池
sudo vi /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.100;
option routers 192.168.4.1;
option broadcast-address 192.168.2.255;
option domain-name "";
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
subnet netmask {
range ;
option routers ;
option broadcast-address ;
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
以下图:
注释掉以 option domain - name 为开头的两行,以取消对域名的设置。
开启服务
sudo service isc-dhcp-server start
若是不成功:
sudo ifconfig wlan0 192.168.4.1/24 up
这个时候已经可以连上树莓派的的热点了,有IP分配,可是不能上网
打开Linux系统的路由转发功能
这里是Ubuntu 18.04
开启IP转发
sudo vi /etc/sysctl.conf
去掉这一行的注释
#net.ipv4.ip_forward=1
保存,用下列命令使命令生效
sudo sysctl -p
配置路由表
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -A FORWARD -o wlan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING ! -o wlan0 -j MASQUERADE
#把eth0网卡的数据包经过nat转发到wlan0,根据本身的须要修改相应的网卡
注意这里/proc/sys/net/ipv4/ip_forward里面内容为为1,表示开启IP转发,可是重启后会失效,故须要修改 /etc/sysctl.conf
这个时候可以正常链接热点而且上网了
完成配置,检查是否配置成功
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
若是最后两行出现了以下,则为正常
wlan0: interface state UNINITIALIZED->ENABLE
wlan0: AP-ENABLED
遇到任何问题,包括以前的服务配置,均可以使用
sudo nano /var/log/syslog
调到最后一行查看,分析缘由
最后的结果:
开机启动
在树莓派Raspberry Pi系统或者其余linux。
能够加在/etc/rc.local 中,开机自动添加路由规则
!注意!:请必定在exit 0以前添加
#/etc/rc.d/rc.local 用于添加开机启动命令
sudo vi /etc/rc.local
#在exit 0以前加入
#这三句根据需求加入开机启动
#sudo ifconfig wlan0 192.168.4.1/24 up
#sudo service isc-dhcp-server start
#sudo service hostapd start
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -A FORWARD -o wlan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING ! -o wlan0 -j MASQUERADE
可是Ubuntu 18.04开机启动的方式不一样
Ubuntu18.04 再也不使用initd管理系统,改用systemd.改变太大,跟以前的彻底不一样。不能像ubuntu14同样经过编辑rc.local来设置开机启动脚本,经过下列简单设置后,可使rc.local从新发挥做用。
参阅下列连接
/airdot/p/9688530.html
一、创建rc-local.service文件
sudo vi /etc/systemd/system/rc-local.service
二、将下列内容复制进rc-local.service文件
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
三、建立文件rc.local
sudo vi /etc/rc.local
四、将下列内容复制进rc.local文件
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
exit 0
五、给rc.local加上权限
sudo chmod +x /etc/rc.local
六、启用服务
sudo systemctl enable rc-local
七、启动服务并检查状态
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
八、重启并检查test.log文件
cat /usr/local/test.log
若是能看到内容,说明设置成功,你就能够经过编辑rc.local文件来设置启动脚本了
如今,链接到树莓派的无线热点,便可正常链接互联网。
快速调试命令汇总
sudo ifconfig wlan0 192.168.4.1/24 up
sudo service isc-dhcp-server start
sudo service hostapd start
ifconfig
sudo vim /etc/network/interface
ip add
sudo ifconfig wlan0 192.168.4.1/24 up
sudo systemctl start dnsmasq
sudo systemctl restart dnsmasq
sudo systemctl stop dnsmasq
sudo systemctl status dnsmasq
vi /etc/dhcp/dhcpd.conf
sudo vim /etc/default/isc-dhcp-serve
/etc/init.d/isc-dhcp-server restart
sudo service isc-dhcp-server restart
sudo systemctl start isc-dhcp-server
sudo systemctl restart isc-dhcp-server
sudo systemctl stop isc-dhcp-server
#不想要dnsmasp
dpkg --list
sudo apt-get --purge remove 包名
#--purge是可选项,写上这个属性是将软件及其配置文件一并删除,如不须要删除配置文件,可执行sudo apt-get remove 包名
下期树莓派搭建局域网Web服务器
附录
其余配置参考
# 设置默认的接入点为无线网卡 wlan0
interface = wlan0
# 设置驱动程序为 nl80211
driver = nl80211
# 设置网卡工做模式为 802.11G
hw_mode = g
# 设置无线网络 SSID 为 RaspberryPi
ssid = RaspberryPi
# 设置无线通道为5,若是发现链接速度慢或有干扰,也能够设置为其余数值
channel = 6
# 设置加密模式为 WPA2
wpa = 2
# 设置密码为123456789
wpa_passphrase = 123456789
# 设置加密方式为CCMP
wpa_key_mgmt = WPA-PSK
wpa_pairwise = CCMP
rsn_pairwise = CCMP
beacon_int = 100
auth_algs = 3
wmm_enabled = 1
wmm_enabled=1
5GHz Mode
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=wifiname
wpa_passphrase=1234567890
// 基本信息
# 无线网卡的名称
interface=wlan0
# 网卡对应的驱动名
driver=nl80211
# 无线网络的名称是Pi-wifi
ssid=Pi-wifi
# 无线路由器工做模式为802.11g(2.4G)
hw_mode=g
# 无线网卡使用的信道
channel=10
# 支持 802.11n
ieee80211n=1
# 采用WPA2配置
wpa=2
# 无线网络密码是123456789
wpa_passphrase=123456789
# 认证方式为WPA-PSK
wpa_key_mgmt=WPA-PSK
# 开启 WMM
wmm_enabled=1
# 开启 40MHz channels 和 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# 接受全部 MAC 地址
macaddr_acl=0
# 使用 WPA 认证
auth_algs=1
# 需链接者知道ssid
ignore_broadcast_ssid=0
# 使用 WPA2
wpa=2
# 使用预先共享的 key
wpa_key_mgmt=WPA-PSK
# 使用 AES, 而非 TKIP
rsn_pairwise=CCMP
DHCP配置解释
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.100;
option domain-name-servers 202.206.192.33, 223.5.5.5;
option domain-name "";
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
default-lease-time 600;
max-lease-time 7200;
}
逐行进行解释
#subnet后跟子网网段,netmask后跟子网掩码
subnet 10.0.0.0 netmask 255.255.255.0 {
#地址池
range 10.0.0.10 10.0.0.100;
#DNS服务器地址(多个地址用","隔开)
option domain-name-servers 202.206.192.33, 223.5.5.5;
#为所分配的域分配域名
option domain-name "";
#为所分配的主机分发子网掩码
option subnet-mask 255.255.255.0;
#分发默认网关
option routers 10.0.0.1;
#分发广播地址
option broadcast-address 10.0.0.255;
#默认租期时间(秒)
default-lease-time 600;
#最大租期时间(秒)
max-lease-time 7200;
}
如果觉得《树莓派4b乌班图服务器系统 【树莓派4B】8 树莓派软路由 Ubuntu18.04配置路由转发...》对你有帮助,请点赞、收藏,并留下你的观点哦!