CentOS 下配置hostapd共享WiFi

有两种方法可以实现软AP:一种是桥接模式,也就是利用新建BRIDGE将内网和外网连接起来;还有一种是路由模式,利用NAT将内网数据包与外网数据包进行转换。这里我使用的是路由模式。

tips:首先需要确认无线网卡支持AP mode,[[email protected] /]#iw list,在列出的内容里面查看Supported interface modes字段是否有AP,确认能开启AP mode时在看下面。我用的TP-WN822N V2下载速度在400KBps+,在Windows下用360wifi速度才200KBps不到。

  • 安装hostapd
  • 配置hostapd
  • 安装dnsmasq
  • 配置dnsmasq
  • 路由转发
  • 启动脚本

安装hostapd

下载hostapd

在ustc镜像上找到hostapd安装包,也可以去其他地方下载,能找到相应版本就好

[root@localhost /]#wget mirrors.ustc.edu.cn/fedora/epel/6/x86_64/hostapd-2.0-5.el6.x86_64.rpm

直接安装就可以

[root@localhost /]#yum install hostapd-2.0-5.el6.x86_64.rpm

有时,可能还需要安装libnl,出现错误提示时就安装以下吧。

配置hostapd

hostapd的配置文件在/etc/hostapd/hostapd.conf

直接看我的hostapd.conf吧

[[email protected] /]#cat /etc/hostapd/hostapd.conf
#
# This will give you a minimal, insecure wireless network.
#
# DO NOT BE SATISFIED WITH THAT!!!
#
# A complete, well commented example configuration file is
# available here:
#
#   /usr/share/doc/hostapd-2.0/hostapd.conf
#
# For more information, look here:
#
#   http://wireless.kernel.org/en/users/Documentation/hostapd
#

#ctrl_interface=/var/run/hostapd
#ctrl_interface_group=wheel

# Some usable default settings...
#macaddr_acl=0
auth_algs=1
#ignore_broadcast_ssid=0

# Uncomment these for base WPA & WPA2 support with a pre-shared key
wpa=1
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
#rsn_pairwise=CCMP

# DO NOT FORGET TO SET A WPA PASSPHRASE!!
wpa_passphrase=XXXXXX

# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211

# Customize these for your local configuration...
interface=wlan0
hw_mode=g
channel=11
ssid=XXXXXX

只用修改,ssid—-wifi的名字,wpa_passphrase—-wifi的密码,interface—-指定作为AP的网卡。其他基本可以不修改,hw_mode,a,b,g可选,channel信道也可以随意,1,6,11。

需要特别说明的是,driver=nl80211,nl80211是一种标准的无线驱动接口,如果你的网卡不支持这个接口还可以试试rtlXXX(忘了额)。

安装dnsmasq

看到软件名,还以为是DNS工具,其实也可以做DHCP额。安装dsnmasq的作用就是给wifi的客户端动态的分配ip这些东西,免得每次都需要手工输入。好了,安装!

[root@localhost /]#yum install dnsmasq 

这里就直接安装了,上面安装hostapd,找到了合适的源,也可以这样直接安装#yum install hostapd

配置dnsmasq

dnsmasq的配置文件在/etc/dnsmasq.conf,其实大部分软件的配置文件都在/etc文件下。

[[email protected] /]#cat /etc/dnsmasq.conf

# For debugging purposes, log each DNS query as it passes through
# dnsmasq.
#log-queries

# Log lots of extra information about DHCP transactions.
#log-dhcp

# Include a another lot of configuration options.
#conf-file=/etc/dnsmasq.more.conf
#conf-dir=/etc/dnsmasq.d

interface=wlan0
bind-interfaces
listen-address=192.168.0.1
#no-dhcp-interface=
dhcp-range=192.168.0.2,192.168.0.224,12h
dhcp-option=3,192.168.0.1
dhcp-option=6,202.114.0.242

这里说明下,interface配置的是你的AP无线网卡。listen-address是你的网卡ip。dhcp-range是你的wifi客户端自动获取ip的范围。dhcp-option=3,设置的是路由。dhcp-option=6,设置的是DNS服务器ip,不知到的话就查询以下:

[root@localhost /]# cat /etc/resolv.conf
nameserver 202.114.0.242
nameserver 202.114.0.131

填入dhcp-option=6,中,不要和我设置的一样额,除非你知道我在哪里^!^

路由转发

启动路由转发

[root@localhost /]#echo 1 > /proc/sys/net/ipv4/ip_forward 

给无线网卡指定ip

[root@localhost /]#/sbin/ip addr add 192.168.0.1/24 dev wlan0 

这里给wlan0设备指定ip:196.128.0.1,子网掩码:255.255.255.0

NAT映射包,建立iptables规则

[root@localhost /]#iptables -F
[root@localhost /]#iptables -X
[root@localhost /]#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

启动脚本

每次开启AP共享wifi都需要设置wlan0 IP,开启dnsmasq,开启hostapd,设置iptables规则,额,挺麻烦的。

使用下面这个脚本,开启时#sh /home/my/ap.sh start,关闭时#sh /home/my/ap.sh stop

[[email protected] /]#cat /home/my/ap.sh
#!/bin/sh
#Clean things upinit()
{
#Stop NetworkManager, if already running (it will disturb you)
sysctl net.ipv4.conf.all.forwarding=1
/usr/sbin/serviceconf  network-manager stop
#Stop named, if already running. dnsmasq cannot run because it take up port 53
#killall named
#Stop dnsmasq, if already running
rfkill unblock all
/usr/sbin/serviceconf dnsmasq stop
#Stop hostapd, if already running
/usr/bin/pkill hostapd
#Bring down wlan0
/sbin/ip link set down dev wlan0
}
start() {
#First clean things up
#Start hostapd, and it will automatically be bringed up
hostapd -B /etc/hostapd/hostapd.conf
#Set ip on wlan0
/sbin/ip addr add 192.168.0.1/24 dev wlan0
#Start dnsmasq
/usr/sbin/serviceconf dnsmasq start
#Start ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
#add iptables rule for NAT
#/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -F
iptables -X
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
}
stop() {
#Remove iptables rule
/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#Stop dnsmasq
/usr/sbin/serviceconf dnsmasq stop
#Stop hostapd
/usr/bin/pkill hostapd
#bring down wlan0, and its ip address will automatically be removed
/sbin/ip link set down dev wlan0
}
case "$1" in
‘start‘)
  start
  ;;
‘stop‘)
  stop
  ;;
*)
echo "usage $0 start|stop"
esac
时间: 2024-10-21 22:18:11

CentOS 下配置hostapd共享WiFi的相关文章

Ubuntu下使用无线网卡共享WiFi(AP)

方法一: 以前一直没有成功在ubuntu下开启过android可用的wifi热点. 但是最近使用ubuntu14.04 一次偶然的机会我安装了kubuntu-desktop,使用kubuntu-desktop时发现,使用其自带的网络管理器,比ubuntu默认的多了一种模式:ubuntu自带的网络管理器只有架构和Ad-hoc模式,而Kubuntu-desktop版的网络管理器多了一个Access Poin模式,而且可以选择创建wireless(shared),而ubuntu只能选择新建wifi.

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

CentOS下配置VPN客户端

今天想在centos下创建个vpn连接,可谁知点击打开后无法添加vpn连接...悲剧了... 后来在网上找到如下资料解决了...呵呵... 注意,当安装好如下软件包后,点击添加vpn时,记得网关填写的是vpn的地址... 原因:缺少相关软件包 1. Point-to-Point Tunneling Protocol(PPTP) Client 2. NetworkManager vpn plugin for pptp 解决方法: 1. 有EPEL更新源 (EPEL更新源配置http://blog.

CentOS下配置安装Nagios

CentOS下配置安装Nagios 一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知. Nagios原名为NetSaint,由Ethan Galstad开发并维护至今.NAGIOS是一个缩写形式: "Nagios Ain't GonnaInsist On Sainthood"

CentOS下配置JDK

下面详细说一下CentOS下配置JDK的过程 首先按照约定俗成的习惯,将jdk放在/usr/local/java下,首先进入/usr/local然后新建一个目录java 然后我们需要下载最新的jdk程序包,可以在本地下载好然后上传到服务器中也可以在服务器中直接下载,如果在本地下载,应该访问Oracle官网下载页面 网址是:http://www.oracle.com/technetwork/java/javase/downloads/index.html 点击Java Platform (JDK)

CentOS下配置phpMyAdmin

本文出自:http://blog.csdn.net/svitter 引文出自:http://hi.baidu.com/owbtkcjhtmaeuyr/item/175d53ff2ad985b231c1991e 解决apache启动错误"httpd:Could not reliably determine..." locate httpd.conf vim httpd.conf 在#ServerName www.example.com:80下添加: ServerName localhos

Centos下配置php环境

Centos下配置php环境 目录[-] 环境: GD2 2 安装PHP 5.2.14(FastCGI模式) 1)编译安装PHP 5.2.14所需的支持库: 2)编译安装MySQL 5.5.3-m3 ①.创建MySQL数据库存放目录 ②.以mysql用户帐号的身份建立数据表: ③.创建my.cnf配置文件: php安装 4)编译安装PHP5扩展模块 1.安装Nginx所需的pcre库: 5)修改php.ini文件 7)创建www用户和组,以及供book.zhiyin.com和www.zhiyin

centos下配置sftp且限制用户访问目录

第一步:创建sftp服务用户组,创建sftp服务根目录 groupadd sftp #此目录及上级目录的所有者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp mkdir /srv/sftp chown -R root:sftp /srv/sftp chmod -R 0755 /srv/sftp 第二步:备份sshd配置文件然后编辑 mv /etc/ssh/sshd_config ~/backup/sshd_config_xxx vim /etc/ssh/sshd_c

CentOS下配置防火墙 配置nat转发服务

CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/ifcfg-eth0  第一块网卡. Bro