发布时间:2015-05-27 19:09:59作者:知识屋
有两种方法可以实现软AP:一种是桥接模式,也就是利用新建BRIDGE将内网和外网连接起来;还有一种是路由模式,利用NAT将内网数据包与外网数据包进行转换。这里我使用的是路由模式。
tips:首先需要确认无线网卡支持AP mode,[root@localhost /]#iw list,在列出的内容里面查看Supported interface modes字段是否有AP,确认能开启AP mode时在看下面。我用的TP-WN822N V2下载速度在400KBps+,在Windows下用360wifi速度才200KBps不到。
下载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吧
[root@localhost /]#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=0auth_algs=1#ignore_broadcast_ssid=0# Uncomment these for base WPA & WPA2 support with a pre-shared keywpa=1wpa_key_mgmt=WPA-PSKwpa_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=nl80211driver=nl80211# Customize these for your local configuration...interface=wlan0hw_mode=gchannel=11ssid=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文件下。
[root@localhost /]#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.dinterface=wlan0bind-interfaceslisten-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.242nameserver 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
[root@localhost /]#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 MASQUERADEiptables -Fiptables -Xiptables -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
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能