linux 开启制作无线路由器(ubuntu 1404)

  • 确定笔记本网卡支持 master 模式
    执行 iw list  命令,执行结果中有下面的内容,说明这张网卡是支持做 ap 路由的(AP   AP/VLAN)
     Supported interface modes:
    	* IBSS
        * managed
        * AP
        * AP/VLAN
        * WDS
        * monitor
        * mesh point
        * P2P-client
        * P2P-GO

     
  • 开启 AP
    安装 hostapd 软件包
    apt-get install hostapd
    配置 hostapd (/etc/hostapd/hostapd.conf)
    macaddr_acl=0					   # 可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
    # accept_mac_file:指定允许MAC列表文件所在;
    # deny_mac_file:指定禁止MAC列表文件所在;
    auth_algs=1							# 采用 OSA 认证算法
    ignore_broadcast_ssid=0
    wpa=3								# 指定 WPA 类型
    wpa_key_mgmt=WPA-PSK			
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    wpa_passphrase=ap_password			# 连接 ap 的密码
    driver=nl80211						# 设定无线驱动
    interface=wlan0						# 接入点设备名称
    hw_mode=g							# 指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g
    channel=9							# 指定无线频道
    ssid=ap_name						# 连接 ap 的名字
    运行 hostapd
    hostapd /etc/hostapd/hostapd.conf
    注意:此处可能会报错
    Could not set interface wlan0 flags (UP): Operation not possible due to RF-kill
    wlan0: Could not connect to kernel driver
    Failed to set beacon parameters
    wlan0: Could not connect to kernel driver
    解决方法是执行下面的命令
    rfkill unblock wifi
    运行 hostapd 后可以用手机看到 wifi 的 ap 了。

     
  • 开启 ip 自动分配
    安装 dhch server
    apt-get install isc-dhcp-server
    修改配置 (/etc/dhcp/dhcpd.conf) 为
    option domain-name-servers 211.161.45.222,10.141.146.10;		# dns 服务器
    default-lease-time 3600;										# 最小租约 3600 秒
    max-lease-time 7200;											# 最大租约 7200 秒
    log-facility local7;											
    subnet 192.168.1.0 netmask 255.255.255.0 {						
    	range  192.168.1.77 192.168.1.99;							# ip 起始地址
    	option broadcast-address 192.168.1.255;						# 广播地址
    	option routers 192.168.1.1;									# 网关 要写成这台机器的 wlan0 的ip
    }
    给 wlan0 添加 ip
    ifconfig wlan0 192.168.1.1
    启动 dhcp server
    dhcpd
    此时可以用手机连接到 ap,并得到分配到的 ip 地址。(要设置转发之后才能上外网)

     
  • 配置 SNAT
    打开 内核的 ip 转发功能
    echo "1" > /proc/sys/net/ipv4/ip_forward
    vim /etc/sysctl.conf
    #添加或修改这样一段:
    net.ipv4.conf.default.rp_filter = 1
    #然后执行命令
    sysctl -p
    使用 iptables 设置转发
    iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE	
    iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
    iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
    iptables -t filter -A INPUT -p udp -m udp -j ACCEPT
    其中第一条表示将通过本机的转发数据包从eth0(外网)这个网卡发出去,另外两条表示只转发192.168.1.0/24这个网段过来的数据包,这个网段正好是wlan0其它设备连上本机以后分配的网段。

     
  • 手机连接 ap 可以上网了

     

你可能感兴趣的:(Linux,linux,ubuntu)