Ubuntu18.04下使用无线网卡配置为AP模式脚本

须知:该脚本启用AP模式时Station模式会关闭,关闭脚本时又自动连上wifi

1、确定网卡是否有AP模式

1.1确定方法:
使用指令iw list ,找到下面这一部分,有看到如下所示有AP被列出来,说明设置AP模式

    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * monitor
         * P2P-client
         * P2P-GO
         * P2P-device

iw list

2.使用hostapd、dnsmasq配置

2.1软件安装

sudo apt-get install hostapd dnsmasq

2.2hostapd文件编写

sudo gedit /etc/hostapd/hostapd.conf

编写内容如下:其中ssid和wpa_passphrase分别是wifi名称和wifi密码,记得改成自己的,其它的可以根据需求自行更改。

interface=wlan0
driver=nl80211
ssid=Alang
channel=6
auth_algs=1
hw_mode=g
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=987456321
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

#interface 参数定义了无线接口的名称
#driver 参数定义了使用的驱动程序
#ssid 参数定义了无线网络的名称
#channel 参数定义了网络所在的频道
#auth_algs 参数定义了用于身份验证的算法
#hw_mode 参数定义了硬件模式
#ignore_broadcast_ssid 参数决定是否忽略广播的 SSID
#wpa 参数定义了是否使用 WPA 加密
#wpa_passphrase 参数定义了 WPA 的密码
#wpa_key_mgmt 参数定义了 WPA 的密钥管理方式
#wpa_pairwise 参数定义了 WPA 的对等加密方式
#rsn_pairwise 参数定义了 RSN 的对等加密方式

  2.3修改/etc/dhcp/dhcpd.conf


sudo gedit /etc/dhcp/dhcpd.conf
 

末尾添加如下内容,用于配置ip地址池,路由网关,dns等

subnet 192.168.20.0 netmask 255.255.255.0
{
  range 192.168.20.2 192.168.20.10;
  option routers 192.168.20.1;
  option domain-name-servers 192.168.20.1,114.114.114.114,8.8.8.8;
}

这里配置我们的无线网卡ap地址为 192.168.20.1, 连接该热点的可分配ip地址池为 192.168.20.(2~10),dns使用公用和网关ip。

2.4编写服务启动脚本 ap-start.sh


sudo gedit ap-start.sh

添加如下内容:

#!/bin/bash

# 开启内核IP转发
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 开启防火墙NAT转发(如果本机使用eth0上网,则把wlan0改为eth0)
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

# 关闭NetworkManager对无线网卡的控制
#nmcli nm wifi off
nmcli device set wlan0 managed no

# 设置并启动无线网卡
ifconfig wlan0 192.168.20.1 netmask 255.255.255.0
# 解锁无线设备,可以用rfkill list查看解锁结果.
rfkill unblock wlan

#####################################################
#dhcpd.pid start
chmod 777 /var/lib/dhcp/dhcpd.leases
dhcpd wlan0 -pf /var/run/dhcpd.pid
#####################################################
sleep 1s
# 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd"
nohup hostapd /etc/hostapd/hostapd.conf > /var/log/hostapd.log 2>&1 &
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"


#route add -net 192.168.20.0/24 dev wlan0
route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.20.1 dev wlan0

#以下是该脚本的直接翻译

    #!/bin/bash:这是一个shebang,告诉系统用bash来执行这个脚本。
    #bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward":开启IP转发,使得通过该机器的数据包可以被转发到其他网络。
    #iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE:设置防火墙规则,使得从wlan0接口出去的数据包进行源地址伪装(NAT)。
    #nmcli device set wlan0 managed no:关闭NetworkManager对wlan0的管理。。
    #ifconfig wlan0 192.168.30.1 netmask 255.255.255.0:为wlan0设置IP地址和子网掩码。
    #rfkill unblock wlan:解锁无线设备。
    #chmod 777 /var/lib/dhcp/dhcpd.leases:更改dhcpd.leases文件的权限。
    #dhcpd wlan0 -pf /var/run/dhcpd.pid:启动dhcpd服务,为连接到wlan0的设备分配IP地址。
    #nohup hostapd /etc/hostapd/hostapd.conf > /var/log/hostapd.log 2>&1 &:以后台方式启动hostapd服务,提供无线接入点功能,并将日志输出到hostapd.log文件。
    #dhcpd wlan0 -pf /var/run/dhcpd.pid:再次启动dhcpd服务。
    #ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd":查看dhcpd和hostapd进程的状态。
    #route add -net 192.168.20.0/24 dev wlan0:手动添加路由表项,指定192.168.20.0/24网络的数据包通过wlan0接口路由。

编写完保存即可启动
使用命令:

sudo bash ap-start.sh

2.5编写关闭脚本 ap-stop.sh

sudo gedit ap-stop.sh

添加以下内容:


#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
#ifconfig wlan0 down
nmcli device set wlan0 managed yes
#restart network
################################################
sudo systemctl restart NetworkManager
################################################

使用命令:

sudo bash ap-stop.sh

亲测有效!!大家可以试试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值