将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就想能不能让我的树莓派代劳,当然首先要将其改造为路由器,默认自带的网口作为WAN口,我们还缺一个网口,木有办法,只好占用一个USB口,接上一个USB网卡,网上的USB转RJ45网线口的适配器比较少,价格也不便宜,于是就考虑干脆将其改造成无线路由,也符合时下高端大气上档次的标准。

准备工作,当然要先去购买一个USB无线网卡,可以购买的型号比较多,Raspberry Pi官方也提供了兼容性列表供大家参考,具体猛击这里。我这里购买的是网件(Netgear)WNA1000M 150M迷你USB无线网卡

较为官方的介绍配置为无线热点的文章莫过于这一篇《RPI-Wireless-Hotspot》。但是实际配置下来始终无法成功。但是无线网卡确实能够被识别,可以通过lsusblsmod查看到,不过我注意到这款无线的芯片型号是RealTek RTL8188CUS,初步怀疑是驱动问题。

lsusb WiFi Adapter

当然看到别人的老款无线网卡都配置成功了心里难免痒痒的,当然也不能再浪费银子去再买个网卡,于是只好自己摸索,不过天无绝人之路,在N次刷机重装系统后,终于找到了成功的办法,其实关键的文章就在上面那篇文章的一个链接中《Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)》

好了,下面我将实践的过程记录下来供大家参考,当然主要参考了上面两篇文章,这里是配置的回忆,我尽量记录详细,遗漏之处望指出。

1. 安装系统(如果系统已经安装可以跳过这一步)

1.1 尽量使用最新系统,首先下载官方最新镜像,然后使用Win32DiskImager烧录到SD卡上。注意这里我们选用的是Raspbian。

1.2 Raspberry Pi连接上无线网卡,然后系统镜像刷入SD卡后,我们连接显示器键盘和鼠标进行初始化配置工作,当然没有条件的话推荐直接使用SSH连接Raspberry Pi,这样更方便,因为新系统默认开放了SSH管理。

Raspbian download

连接信息主要如下:

主机名 : raspberrypi
用户名 : pi
密  码 : raspberry

如果你是直接通过SSH连接到Raspberry Pi的话,下面的配置步骤是必要的:

1.2.1 初始化配置,下面的配置只有在新安装的系统内需要,仅做一次。

运行下面的命令,进入配置界面:

sudo raspi-config

Raspberry ConfigurationInternationalisation Options

推荐更新下面的配置选项(新配置界面):

1 Expand Filesystem
2 Change User Password
4 Internationalisation Options
  I1 Change Locale
  I2 Change Timezone
8 Advanced Options
  A3 Memory Split
  A6 Update

旧配置界面

update
expand_rootfs
change_pass
change_timezone
memory_split

这里要注意Memory Split/memory_split,默认预留给图形界面的是64MB,作为一台无线路由基本上就用不到图形界面了,很显然64MB略有奢侈,我们将其改成32MB

最后Finish完成初始化配置。系统会自动提示重启,如果没有按预期重启,请使用下面的命令重启系统:

sudo shutdown -r now

2. 安装hotspot(hostapd)

sudo apt-get install bridge-utils hostapd

hostapd实现的是无线共享,但需要注意的是官方提供的程序不兼容RTL8188CUS芯片的无线网卡,不过Edimax团队为我们专门编译了兼容的版本,下面的操作需要替换hostapd为兼容版本。

替换的命令如下:

wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip 
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
sudo mv hostapd /usr/sbin/hostapd.edimax 
sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd 
sudo chown root.root /usr/sbin/hostapd 
sudo chmod 755 /usr/sbin/hostapd

接下来提供两种方案,一种是桥接方式设置热点,有点类似交换机工作原理,将网线口的信号转换为无线,另外一种则是路由方式实现无线上网,和大部分路由器工作方式一样。

3. 桥接的方式设置WiFi热点(方案一)

3.1 安装必备程序

sudo apt-get install bridge-utils

3.2 配置网卡

编辑网卡配置文件:

sudo nano /etc/network/interfaces

注释掉所有的关于无线网卡的部分,最后应该变成下面所示:

#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

加上下面这段桥接配置:

auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0

最终的配置主要由以下几个部分组成:

#loopback adapter
auto lo
iface lo inet loopback
#wired adapter
iface eth0 inet dhcp
#bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0

3.3 配置hostapd

sudo nano /etc/hostapd/hostapd.conf

配置信息如下:

interface=wlan0
driver=rtl871xdrv
bridge=br0
ssid=My_SSID_Name
channel=1
wmm_enabled=0
wpa=1
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

配置文件具体我就不说了,想必大家看内容也知道各项的含义,保存这个配置文件。

3.4 重启并测试hostapd

sudo reboot

重启完成后,使用下面的命令测试是否正确:

sudo hostapd -dd /etc/hostapd/hostapd.conf

如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。

如果一切正常的话,我们可以设置hostapd的配置文件路径了。

sudo nano /etc/default/hostapd

去掉注释符号并改动下面这行为我们的配置文件路径:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

桥接方式配置完成!

4. 路由的方式设置WiFi热点(方案二)

4.1 安装必备程序

sudo apt-get install udhcpd

udhcpd主要为连接到WiFi的设备自动分配IP地址的,当然你也可以换用你所熟悉的软件。

4.2 配置udhcpd,编辑/etc/udhcpd.conf,主要内容如下:

start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices.
end 192.168.42.20
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly.
opt lease 864000 # 10 day DHCP lease time in seconds

接下来编辑/etc/default/udhcpd并且将下面这行注释掉,以使DHCP Server正常工作:

#DHCPD_ENABLED="no"

4.3 配置无线网卡

通过下面的命令给无线网卡设置一个IP地址:

sudo ifconfig wlan0 192.168.42.1

当然为了下次启动仍然有效,我们需要配置/etc/network/interfaces文件:

sudo nano /etc/network/interfaces

注释掉所有的关于无线网卡的部分,最后应该变成下面所示:

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

注意保留allow-hotplug wlan0,英文原文是不保留的,但是我操作下来发现如果不保留这段的话,无线网卡有时无法正常配置IP,最后无线网卡IP的配置信息如下:

allow-hotplug wlan0
iface wlan0 inet static
  address 192.168.42.1
  netmask 255.255.255.0

4.4 编辑hostapd配置

sudo nano /etc/hostapd/hostapd.conf

内容如下:

interface=wlan0
driver=rtl871xdrv
ssid=My_SSID_Name
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

4.7 启动IP转向功能以便于开通NAT

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

编辑/etc/sysctl.conf改动下面这行:

net.ipv4.ip_forward=1

4.8 配置iptables防火墙

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

到这里路由的NAT功能已经被启用,我们将刚才配置的iptables保存下来以便于下次使用:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

编辑/etc/network/interfaces然后在最后加上下面这行以使每次启动都自动加载iptables配置:

up iptables-restore < /etc/iptables.ipv4.nat

4.9 重启并测试hostapd

sudo reboot

重启完成后,使用下面的命令测试是否正确:

sudo hostapd -dd /etc/hostapd/hostapd.conf

如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。

如果一切正常的话,我们可以设置hostapd的配置文件路径了。

sudo nano /etc/default/hostapd

去掉注释符号并改动下面这行为我们的配置文件路径:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4.10 启动相应软件,并加入启动项

sudo service hostapd start
sudo service udhcpd start
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable

Raspberry Pi with NetGear

2013年12月12日更新

最近经常发现无线网卡配置的DHCP不能发挥作用,经过排查发现给无线网卡指定的静态IP失败了,也就是说无线网卡没有IP导致DHCP无法工作,在网上找到这篇文章《Why won't dnsmasq's DHCP server work when using hostapd?》,根据内容我将/etc/default/ifplugd的内容修改配置如下:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

重启了几次进行测试,结果一切正常!

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!

  1. 请问你是用树莓派的网口进行学校锐捷上网,然后通过树莓派的usb-wifi把网络共享出来,然后手机、pad可以搜索到无线信号,接入后上网?

      • 请问一下,如果树莓派不接网线,那么这个wifi热点还会工作吗?应该还是能组成一个局域网吧?只是不能连接外网,是吧?

          • 谢谢!我现在有个问题,我用自己的笔记本的无线网卡做了wifi热点,是按照这篇文章//www.luyouqiwang.com/14868/做的,现在那个有线的本地连接不能分配ip地址了,我设置静态ip地址,他就自动变成192.168.137.1了,我把原来那个无线连接禁用,把新安装的那个无线热点也禁用了,还是一样。而且工具栏右边那个网络连接的图标也不见了。这个问题不知道您遇到过没有?

          • 抱歉,还真没有遇到这个情况,看到你所描述的IP地址有点像连接共享ICS设置所生成的地址,你对本地连接(可以上网的那个)右击属性,选择“共享”选项卡,然后勾选“允许其他网络用户通过此计算机的 Internet 连接来连接”和“允许其他网络用户控制或禁用共享的Internet连接”试试。

          • 感谢你的分享,不过经过你这么一描述,我有些迷糊了,你是用笔记本的无线网卡共享WiFi还是用树莓的USB无线网卡共享WiFi的呢?

  2. 你好,我想问你一些关于树莓派通过drcom拨号设置热点分享的一些细节问题,所以我能不能得到你的联系方式比如QQ,微信或者其他的 好让我详细的向你求教?

    • 抱歉,因为某些原因不太方便使用QQ等社交工具,如果你有什么疑问的话,可以直接通过右上角的电子邮箱与我联系,将所遇到的问题描述发给我:-)

  3. 为什么你用pi做热点可以成功楠?我记得我用win7做热点直接就被卡下来了,还有我们学校的客户端不支持linux系统那不是用不了?

  4. 博主你好,我想问下你是怎么让派通过锐捷脸上校园网的。我把我们校园网的rjsupplicant的linux版在pi上运行,报错。可它在CentOS和ubuntu上都好好的。还有怎么给pi配置ip、掩码之类的呢。额,问了好多,那我还是自己先去Google一圈

    • 你好,我是这样操作的:下载并编译mentohust,然后编辑配置文件mentohust.conf,最后直接编写一段脚本开机调用mentohust进行拨号的,以前锐捷官方有个Linux拨号程序,后来发现用不了了,现在在学校只有mentohust可以正常使用。
      sudo nano /etc/network/interfaces直接编辑网络设置文件可以给pi设置IP和掩码,可以看文中的方法,比如这样的:

      iface eth0 inet static
        address 192.168.42.1
        netmask 255.255.255.0

      就可以给eth0设置静态IP和掩码了。
      如果你有其他问题欢迎提出,没事的。

  5. 博主你好,请问能不能给你的这套系统在增加一个WiFi登录认证机制呢?类似于这样”无线天“这样的软件效果,安装WiFi登录认证软件的电脑、智能手机、无线路由器在同一个网络就可以了,不需要设置路由器,也无需特殊设备,能不能实现这样的效果?

    • 增加在线设备数量主要的瓶颈在于性能,众所周知的是树莓派的CPU一直是性能的短板,如果你要支持大的吞吐量或者在线设备的话,考虑到服务的稳定性建议换用专业的网络设备,树莓派平时玩玩或者自己用用还是可以的。
      倘若在现有硬件配置不变的情况下,最大限度的挖掘树莓派的潜能,只有去考虑精简系统了,搞个类似于路由器用的实时定制系统,或许也可以实现吧。

  6. 楼主,你好,谢谢分享。
    我按照你的教程,出了个问题,就是我的无线USB网卡的芯片是RTL8191CU的,是不是hostapd不能在这上面使用呢?必须要下载一个高版本的hostapd?如果是的话,能否告知怎么去下载呢?

  7. 楼主,您好,感谢您的分享。

    请问,hostapd是不是不能在RTL8191CU上运行啊,我按照您的教程失败了,有什么解决的方案吗?

    • 这个比较棘手,一般我开始也是这样,安装官方的hostapd不能直接使用,后来是下载的第三方编译的hostapd包(原文有叙述),如果第三方编译包不可用的话,只有尝试到Realtek网站下载官方的Linux驱动再手动编译了。
      需要注意的是,如果是树莓派请查看兼容性列表,因为有些无线网卡可能本身就不支持树莓派。
      非常抱歉的是可能是因为这个型号比较新,谷歌上没有找到相关的信息(关键词:RTL8191CU hostapd raspberry)。

  8. 非常感谢博主!
    按照这篇教程,很顺利的成功了。
    之前找到的教程会遇到hostapd无法正常使用的问题
    替换后完美解决!

      • 博主,你好,IP地址问题已解决,是我的无线网卡没配置好。现在遇到另一个问题,手机连上树莓派AP之后,手机不能上网(树莓派有线接口连接正常),请问,这个该怎么解决。

          • 这个问题需要这样修复:
            下载hostapd源码
            nano src/ap/ieee802_11.c

            修改两处, 将代码中的 return 注释掉:
            if (!ok) {
            hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
            HOSTAPD_LEVEL_NOTICE,
            “did not acknowledge authentication response”);
            //return;
            }

            if (!ok) {
            hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
            HOSTAPD_LEVEL_DEBUG,
            “did not acknowledge association response”);
            sta->flags &= ~WLAN_STA_ASSOC_REQ_OK;
            //return;
            }

            重新编译安装,即可修复此问题。

  9. 高手,热点完成后,做过休眠唤醒的动作吗?休眠唤醒后热点不能正常工作了,必须kill hostapd然后reboot hotapd热点才可正常工作。您知道这是怎么回事吗?

    • 你所描述的问题我目前没有遇到过,只是我之前发现一个奇怪的现象,那就是我的网件(NetGear)无线网卡经常会无法启动,需要从树莓派上拔下再插上才可以,后来重新购买了EDUP的网卡才解决问题,一直以为是网件网卡的问题,但是其在Windows下工作完全正常,不过后来安装到Ubuntu台式机上又出现那种网卡无法启动的现象(网卡灯也亮),根据网上手动激活网卡,或者重新拔插网卡才可以,过了很长时间后,我发现该网卡又神奇的好了,这个问题一直没有找到相关文档叙述,所以也就作罢。

      hostapd修改版目前托管到GitHub,据目前你所述,可以看看是不是hostapd的Bug,最新版本在:https://github.com/jenssegers/RTL8188-hostapd
      部署方法参考://jenssegers.be/blog/43/realtek-rtl8188-based-access-point-on-raspberry-pi

      希望对你有所帮助。

  10. 问一下博主用的volumio是哪个版本?我敲命令配置热点的时候,发现很多文件都没不存在,需要自己创建,但是自己创建后又不能成功。。。

  11. 非常感谢您的教程~~我在官方的镜像下完成了撇子
    但是配置完成后一直显示密码错误~~~
    改成其他密码还是这样~~

    可能是啥原因啊,不解啊

    谢谢

    • 你是指无线密码错误吗?如果是这样的,你可以检查/etc/hostapd/hostapd.conf配置文件其中的配置项wpa_passphrase=MYPASSWORD,这里MYPASSWORD是你要定义的无线密码。

      • 谢谢了~估计是这个网卡功率太低~~~走近了才行~~
        非常感谢楼主的帮助啊。因为我的是volumio,所以配置的时候大费周折啊~~还在终于可以了,主要前面要敲上这段命令“sudo apt-get install hostapd usb-modeswitch hostap-utils iw bridge-utils”

        随便有两个问题请教,如果用第一种办法的话,4.10的命令需要吗?还是只针对第二种办法的?

        sudo service hostapd start
        sudo service udhcpd start
        sudo update-rc.d hostapd enable
        sudo update-rc.d udhcpd enable

        因为我用第一种方法,也敲了这4个命令,但是出现了错误,这样会有其他问题吗?

        pi@volumio:~$ sudo service udhcpd start
        udhcpd: unrecognized service
        pi@volumio:~$ sudo update-rc.d hostapd enable
        update-rc.d: using dependency based boot sequencing
        pi@volumio:~$ sudo update-rc.d udhcpd enable
        update-rc.d: using dependency based boot sequencing
        update-rc.d: error: cannot find a LSB script for udhcpd

        • 很奇怪,你的命令提示好像是没有安装udhcpd和hostapd这两款软件。
          下面两个命令都成功执行了吗?
          sudo apt-get install hostapd
          sudo apt-get install udhcpd
          对了,hostapd可能需要替换,我原文中有介绍。

  12. 樓主您好 請問您在文章最後面
    4.10 启动相应软件,并加入启动项

    sudo service hostapd start
    sudo service udhcpd start

    這兩行我好像執行不了
    請問這跟我目前有訊號無法連線有關係嗎?
    有解決辦法嗎?
    謝謝

    • 你好,感謝您對我Blog的關注,這兩項不能正常啟動,對你的熱點使用是有關係的,其中hostapd是熱點提供軟體,udhcpd是設備連接到無線熱點後自動分配網路IP地址的,特別是hostapd的啟動失敗將會直接導致WiFi熱點無法正常工作。

      因為沒有更多的資訊,暫時無法判別你所遇到的問題,建議重新安裝這兩款軟體:

      sudo apt-get update # 更新數據源
      sudo apt-get --purge remove hostapd # 卸載先前安裝
      sudo apt-get install hostapd # 安裝hostapd
       
      # 下面替換hostapd為可用版本
      wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
      unzip hostapd.zip
      sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
      sudo mv hostapd /usr/sbin/hostapd.edimax
      sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
      sudo chown root.root /usr/sbin/hostapd
      sudo chmod 755 /usr/sbin/hostapd
       
      sudo apt-get --purge remove udhcpd # 卸載先前安裝
      sudo apt-get install udhcpd # 安裝hostapd
  13. 樓主我又嘗試了重新安裝 可是我發現好像在安裝時就有錯誤
    我用的網卡是(D-Link Wireless N150 Pico USB無線網卡)
    會是網卡的關係嗎?
    我有照片但不會傳上來 不好意思…

    • 錯誤信息
      sudo apt-get install hostapd

      Reading package lists… Done
      Building dependency tree
      Reading state information… Done
      hostapd is already the newest version.
      0 upgraded, 0 newly installed, 0 to remove and 91 not upgraded.
      1 not fully installed or removed.
      After this operation, 0 B of additional disk space will be used.
      Do you want to continue [Y/n]? y
      Setting up hostapd (1:1.0-3+deb7u1) …
      /etc/init.d/hostapd: 1: /etc/default/hostapd: Defaults: not found
      /etc/init.d/hostapd: 3: /etc/default/hostapd: See: not found
      /etc/init.d/hostapd: 4: /etc/default/hostapd: methods: not found
      /etc/init.d/hostapd: 6: /etc/default/hostapd: Uncomment: not found
      and: ERROR: cannot open `and’ (No such file or directory)
      hostapd: ERROR: cannot open `hostapd’ (No such file or directory)
      will: ERROR: cannot open `will’ (No such file or directory)
      be: ERROR: cannot open `be’ (No such file or directory)
      started: ERROR: cannot open `started’ (No such file or directory)
      during: ERROR: cannot open `during’ (No such file or directory)
      system: ERROR: cannot open `system’ (No such file or directory)
      boot.: ERROR: cannot open `boot.’ (No such file or directory)
      An: ERROR: cannot open `An’ (No such file or directory)
      example: ERROR: cannot open `example’ (No such file or directory)
      configuration: ERROR: cannot open `configuration’ (No such file or directory)
      can: ERROR: cannot open `can’ (No such file or directory)
      be: ERROR: cannot open `be’ (No such file or directory)
      found: ERROR: cannot open `found’ (No such file or directory)
      at: ERROR: cannot open `at’ (No such file or directory)
      /usr/share/doc/hostapd/examples/hostapd.conf.gz: gzip compressed data, from Unix, max compression
      /etc/init.d/hostapd: 12: /etc/default/hostapd: Additional: not found
      /etc/init.d/hostapd: 13: /etc/default/hostapd: Syntax error: “(” unexpected
      invoke-rc.d: initscript hostapd, action “start” failed.
      dpkg: error processing hostapd (–configure):
      subprocess installed post-installation script returned error exit status 2
      Errors were encountered while processing:
      hostapd
      E: Sub-process /usr/bin/dpkg returned an error code (1)

      • 你好,出現這個錯誤的原因是默認的配置文件/etc/default/hostapd損壞或者編輯錯誤,注意注释部分起始的#号不要丢失,DAEMON_CONF="/etc/hostapd/hostapd.conf"这一行前面的注释符号#应该去除,并指向配置文件路径。正確的示例應該是這樣的:

        # Defaults for hostapd initscript
        #
        # See /usr/share/doc/hostapd/README.Debian for information about alternative
        # methods of managing hostapd.
        #
        # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
        # file and hostapd will be started during system boot. An example configuration
        # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
        #
        DAEMON_CONF="/etc/hostapd/hostapd.conf"
        
        # Additional daemon options to be appended to hostapd command:-
        #       -d   show more debug messages (-dd for even more)
        #       -K   include key data in debug messages
        #       -t   include timestamps in some debug messages
        #
        # Note that -B (daemon mode) and -P (pidfile) options are automatically
        # configured by the init.d script and must not be added to DAEMON_OPTS.
        #
        #DAEMON_OPTS=""
        

        注意:完成的配置只有DAEMON CONF="/etc/hostapd/hostapd.conf"這一行前面沒有註釋符號#,其他行均以#號開始。
        如果問題依舊,請採取下面的步驟重新安裝hostapd:

        sudo apt-get remove --purge hostapd
        sudo rm /etc/default/hostapd
        sudo apt-get install hostapd

        安裝完成後請按要求編輯配置文件/etc/default/hostapd,希望對你有所幫助。

        • 感謝您的解答 第一個問題已經解決
          可否請教您 sudo nano /etc/default/udhcpd
          這個檔案內的完整內容嗎? 感謝
          (上面那個字是不小心點到的….抱歉)

          • 感謝您的幫助 我已經成功連接到WIFI了!
            我用手機連結後 雖然連結成功 但好像沒有網路… 這是我IP設定有問題嗎?

          • 不客氣,對于你的問題,建議你先測試壹下連接到該無線的設備是否擁有IP地址(由udhcpd自動分配),對于桌面型計算機可以使用ipconfig或者ifconfig進行測試,手機直接查詢無線信息也可以得到,如果無法獲取IP地址或者IP地址爲0.0.0.0,則很有可能是udhcpd未正常工作。

            如果你的無線已經能夠自動分配IP地址,而此時仍然不能連接網路的話,建議檢查你的配置方式,如果是“橋接的方式設置WiFi熱點(方案壹)”則需要按照我原文所描述進行橋接配置,如果是“路由的方式設置WiFi熱點(方案二)”則很有可能是iptables沒有設置好,具體也可以參考原文“配置iptables防火牆”這壹節敘述。

          • 檔案/etc/default/udhcpd内容:

            # Comment the following line to enable
            # DHCPD_ENABLED="no"
             
            # Options to pass to busybox' udhcpd.
            #
            # -S    Log to syslog
            # -f    run in foreground
             
            DHCPD_OPTS="-S"
  14. 樓主不好意思我又有問題了…
    我的Wifi在樹莓派重開機後就變得手機抓不太到Wifi訊號,就一直在轉獲取IP位址中…,連不太到Wifi
    有辦法讓訊號在每次用時都穩定的方法嗎?
    像我今天拿去學校是又不太行了…用了很久又可以連到Wifi上網感覺很不穩定 能否幫忙解決? 感激T^T

    • 還有就是好像要讓樹梅派開機之後放久ㄧ點就能穩定連結到WiFi 但連結到又是沒有網路功能 那個防火牆設定重新啟動後依然有效的地方我不知道有沒有用錯? 還是有其他地方設定上有錯誤?

      • 可以使用下面的命令保存iptables的配置:

        sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

        當然在命令前最好要刪除/etc/iptables.ipv4.nat這個文件。

        編輯/etc/network/interfaces然後在最後加上下面這行以使每次啟動都自動加載iptables配置:

        up iptables-restore < /etc/iptables.ipv4.nat
    • 抱歉,你所描述的問題我目前沒有遇到過,不過懷疑是不是和你所使用的網卡有關係,因為我之前發現一個奇怪的現象,那就是我的網件(NetGear)無線網卡經常會無法啟動,需要從樹莓派上拔下再插上才可以,後來重新購買了EDUP的網卡才解決問題,一直以為是網件網卡的問題,但是其在Windows下工作完全正常,不過後來安裝到Ubuntu台式機上又出現那種網卡無法啟動的現象(網卡燈也亮),根據網上手動激活網卡,或者重新拔插網卡才可以,過了很長時間後,我發現該網卡又神奇的好了,這個問題一直沒有找到相關文檔敘述,所以也就作罷。

      hostapd修改版目前託管到GitHub,據目前你所述,可以看看是不是hostapd的Bug,最新版本在:https://github.com/jenssegers/RTL8188-hostapd
      部署方法參考:http://jenssegers.be/blog/43/realtek-rtl8188-based-access-point-on-raspberry-pi

      另外除了可以嘗試上述方法外,你可以嘗試著配置hostapd.conf的hw_mode和ieee80211n兩個參數:

      hw_mode=g
      ieee80211n=1
      wmm_enabled=1

      ——————————–
      ▼ 此項建議基於以下參考文章:

      Hostapd
        http://wiki.gentoo.org/wiki/Hostapd

      Simple hostapd 802.11n problem – 54Mbit/s bit rate
        http://ubuntuforums.org/showthread.php?t=1351234

      wifi speed
        http://www.raspberrypi.org/forums/viewtopic.php?t=48616&p=508835

      希望對你有所幫助。

    • 對了,我文章最後更新不知道你有沒有做,如果沒有,建議先完成這項步驟再看是否正常:
      根據內容將/etc/default/ifplugd的內容修改配置如下:

      INTERFACES="eth0"
      HOTPLUG_INTERFACES="eth0"
      ARGS="-q -f -u0 -d10 -w -I"
      SUSPEND_ACTION="stop"
      • /etc/default/ifplugd

        # This file may be changed either manually or by running dpkg-reconfigure.
        #
        # N.B.: dpkg-reconfigure deletes everything from this file except for
        # the assignments to variables INTERFACES, HOTPLUG_INTERFACES, ARGS and
        # SUSPEND_ACTION. When run it uses the current values of those variables
        # as their default values, thus preserving the administrator’s changes.
        #
        # This file is sourced by both the init script /etc/init.d/ifplugd and
        # the udev script /lib/udev/ifplugd.agent to give default values.
        # The init script starts ifplugd for all interfaces listed in
        # INTERFACES, and the udev script starts ifplugd for all interfaces
        # listed in HOTPLUG_INTERFACES. The special value all starts one
        # ifplugd for all interfaces being present.
        INTERFACES=”eth0″
        HOTPLUG_INTERFACES=”eth0″
        ARGS=”-q -f -u0 -d10 -w -I”
        SUSPEND_ACTION=”stop”

        是否?

  15. 樓主我現在遇到最大的問題還是連接到WIFI但沒有網路…

    4.7 启动IP转向功能以便于开通NAT

    sudo sh -c “echo 1 > /proc/sys/net/ipv4/ip_forward”
    编辑/etc/sysctl.conf改动下面这行:

    net.ipv4.ip_forward=1
    4.8 配置iptables防火墙

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
    到这里路由的NAT功能已经被启用,我们将刚才配置的iptables保存下来以便于下次使用:

    sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”
    编辑/etc/network/interfaces然后在最后加上下面这行以使每次启动都自动加载iptables配置:

    up iptables-restore da, HOSTAPD_MODULE_IEEE80211,
    HOSTAPD_LEVEL_NOTICE,
    “did not acknowledge authentication response”);
    //return;
    }
    if (!ok) {
    hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
    HOSTAPD_LEVEL_DEBUG,
    “did not acknowledge association response”);
    sta->flags &= ~WLAN_STA_ASSOC_REQ_OK;
    //return;
    }
    重新编译安装,即可修复此问题。

    這個方法能行嗎?他寫的下载hostapd源码該如何下載? 抱歉又要麻煩您了~

    • 这个问题需要这样修复:
      下载hostapd源码
      nano src/ap/ieee802_11.c
      修改两处, 将代码中的 return 注释掉:
      if (!ok) {
      hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
      HOSTAPD_LEVEL_NOTICE,
      “did not acknowledge authentication response”);
      //return;
      }
      if (!ok) {
      hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211,
      HOSTAPD_LEVEL_DEBUG,
      “did not acknowledge association response”);
      sta->flags &= ~WLAN_STA_ASSOC_REQ_OK;
      //return;
      }
      重新编译安装,即可修复此问题。

      上面好像不完整所以重貼一次

  16. 找了很多英文资料都没有找到RTL8188ucs的解决方案,最后还是楼主的这篇帮到了我,搜到信号太开心了!我用的是EDUP EP-N8508GS,按照楼主的做法非常顺利的成功了~~感谢感谢!

  17. 楼主,感谢你的分享,第一种方案我已经成功运行。但第二种方案,手机始终无法获取IP地址,我udhcpd显示启动了,但hostapd有时候显示Starting advanced IEEE 802.11 management: hostapdioctl[RTL_IOCTL_HOSTAPD]: Invalid argument .
    不知道哪里出了问题。还有第二种方案/etc/network/interfaces除了wlan设为静态,eth那些需要设置吗?

    • 第二种方案是需要hostapd和udhcpd配合的,据你的描述,初步怀疑是hostapd没有正常启动导致的,你可以看下进程里有没有hostapd,另外有没有按文章所述的替换hostapd包,另外这里有可以直接编译的hostapd修复版http://www.jenssegers.be/blog/43/Realtek-RTL8188-based-access-point-on-Raspberry-Pi,可以试试。

      正常eth0按你的网络进行配置即可,比如网络是动态IP,那么这里就不需要设置,如果所处的网络需要静态IP,那么按网络环境配置。这里主要是将wlan0口的流量用iptables进行路由到eth0口,而eth0口是可以上网的公共口(类似于路由器的WAN口)。

      • 你好,设置好hostapd,理论上是可以检测到WiFi的,开启转发并通过iptables可以将无线网口wlan0的流量导入有线网口eth0,如果eth0接入互联网则可以正常上网。

    • 抱歉,这样使用受到散热等限制可能没有成品路由器稳定,我测试下来超过10个客户端就不稳定了,正常5个客户端以内最长稳定使用记录是6天,如果你追求稳定的路由器的话,强烈建议选择Cisco思科系列的,当然思科系的可能不适合挂BT。

      我的建议是你可以使用网络存储器(NAS)分摊BT下载,路由器还是干路由器的事情比较好,毕竟是网络核心部分。

    • 抱歉,暂时没有做过类似设备的测试(现有Android、Ubuntu、Windows XP、Windows 7、IOS测试通过,暂时没有Windows Phone和Windows平板设备供测试),不过理论上不存在类似的不兼容情况,第一种方式当时我只测试了一台设备的连接,也无法提供更多信息,不过可以确定的是不止可以连接一台设备。

  18. 版主您好,我想請問一下 若透過方案一橋接的方式 使手機可使用樹莓派分享之網路連上外網
    而我的樹莓派之eth0 IP為固定IP
    請問/etc/network/interfaces該如何配置?
    而br0是否依然設置為iface br0 inet dhcp?
    謝謝

    • 抱歉,橋接的辦法只是一開始我搜索網絡得到的一篇文章配置的,當時是eth0通過DHCP獲取動態IP,配置成功後,移植到新的撥號環境的時候發現沒有第二種路由方法簡便,所以就切換到第二種辦法了,第一種辦法也就沒有深入研究,可以嘗試的是,對於eth0靜態IP配置使用如下(僅供參考):

      iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
  19. 我在配置时,用的是edup的,芯片是rtl8192cus,使用RTL8188-hostapd-1.1,可以产生ssid,但是不能连接上,是怎么回事?谢谢!

    • 你好,如果在设备WiFi中能够看到SSID,但是不能正常连接,则有可能是DHCP动态IP分配出了问题,你可以检查一下原文所述的关于DHCP的部分。

  20. root@kali:~# sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
    sudo: unable to execute /usr/sbin/hostapd: No such file or directory

    您好,这种情况怎么解决啊?查看过这个路径,文件存在啊。。。
    系统的img都从写了也没用啊。。

  21. 博主,
    我参照教程前面的步骤都完成了,但是到这里sudo nano /etc/default/hostapd,我没有找到hostapd这个文件

    请赐教,多谢!

  22. 楼主您好,有一个地方遇到了问题,
    sudo nano /etc/hostapd/hostapd.conf这个命令后是空白的,请问这个文件是本来就存在的吗,还是新建的然后自己编辑?

    • 抱歉,记得不太清楚了,好像是新建的,如果你已经按照我文章步骤操作的话,那么这个配置文件可以新建(内容见文章所述),并修改/etc/default/hostapd指向的引用。

      • 非常感谢楼主的回复,按照您的教程,在配置etc/network/interfaces 文件时发现和楼主显示的并不一样啊

        #loopback adapter
        auto lo
        iface lo inet loopback
        #wired adapter
        iface eth0 inet dhcp
        #bridge
        auto br0
        iface br0 inet dhcp
        bridge_ports eth0 wlan0

        您这些是文件最后的代码吗?
        我的下面还有一个关于wlan1的

        • 是桥接方式最后形成的代码,你的之所以出现wlan1,怀疑是你使用了不止一个无线网卡,无线网卡1为wlan0,无线网卡2为wlan1,还有一种情况是wlan0被占用,而wlan1则是真实的网卡,这样原文配置中的wlan0改成wlan1也可以。

  23. 楼主,非常感谢你的帖子,帮我解决了很多问题,实现了wifi热点。现在我想用PPPOE拨号上网,可出现问题了,运行pppoe-startup 提示TIME OUT, 在哪里可以看到出错的日志呢,如何解决?

    • 抱歉,没有测试过PPPoE方式拨号,建议你查看/var/log路径下关于PPPoE的日志以获取具体报错信息,另外我觉得PPPoE拨号超时有可能不是配置问题,而是拨号猫可能暂时没有响应,可以重新开启拨号猫再试。

  24. 博主你好,我按照路由方式设置之后,能够正常连接,但是经常出现连接两台移动设备,或者连接一台设备进行下载就自动掉线,然后过一会就可以恢复正常,由于对这些东西并不熟悉,也不知道从哪里入手检查问题,目前推测是瞬间速率过高(8MB/s)导致的负载过高?还望博主指点…

    • 抱歉,暂时没有遇到你所描述的情况,我的配置完成后测试过最大约10台电脑同时联网,没有问题,只是不太稳定,如果5台以内还是妥妥的。建议你使用uptime命令查看近期负载,并检查/var/log的相关日志信息。

  25. 博主你好!

    按照你的方法我已经架好了热点,但是由于我的树莓派有线网络连的是学校的VPN,其他设备连上该热点后只能访问校内网,无法访问校外网,但是树莓派是可以ping通外网的,请问该如何解决?

    是路由的问题吗?

    • 你好,通常情况下配置的VPN可能将所有网络流量导入拨号建立的内网,如果内网设置了隔离的话,那么是没有办法访问外网的,根据你的描述,我猜测你可能没有正确配置路由表,正确配置的路由表应当将内网流量转发到VPN,外网流量直接发送互联网出口比如eth0 。 你可以搜索一些有关配置路由表相关的内容。

      • 博主你好,我又回来了!
        补充一下之前说的不能访问外网的情况:
        我增加以下规则:
        sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
        sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
        sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT
        之后可以ping通外网,可以用ssh连接外网的VPS,也能用git clone GitHub上的项目,奇怪的是就是不能访问网页,隐隐觉得是端口问题,但不知道如何解决。

        • 根据你的描述,外网应该是通的,如果单纯不能访问网页的话,我觉得可能有两种情况:一是DNS设置错误或者DNS查询端口53被防火墙拦截,导致域名不能解析,可以试试能不能用IP地址直接访问网页;二是也有可能目的端口80被防火墙拦截,试试能不能telnet Web服务器的80端口。

  26. 您好~ 我之前用您的方法架好了Wifi

    但今天我打開PI時 發現我的無線網卡沒亮 我重新測試了一下
    出現以下的訊息 是hostapd出問題嗎?

  27. 楊智閎

    pi@raspberrypi ~ $ sudo hostapd -dd /etc/hostapd/hostapd.conf
    random: Trying to read entropy from /dev/random
    Configuration file: /etc/hostapd/hostapd.conf
    Line 2: invalid/unknown driver ‘rtl871xdrv’
    1 errors found in configuration file ‘/etc/hostapd/hostapd.conf’

    • 這有可能是你升級了hostapd導致原來的補丁文件被覆蓋,建議重複替換命令:

      wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
      unzip hostapd.zip
      sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
      sudo mv hostapd /usr/sbin/hostapd.edimax
      sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
      sudo chown root.root /usr/sbin/hostapd
      sudo chmod 755 /usr/sbin/hostapd
      • 树莓派3b测试,替换hostapd后没有效果,提示错误
        “`
        root@raspberrypi:~# hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf
        Configuration file: /etc/hostapd/hostapd.conf
        drv->ifindex=3
        l2_sock_recv==l2_sock_xmit=0x0x186e660
        ioctl[SIOCSIWMODE]: Invalid argument
        Could not set interface to mode(3)!
        Could not set interface to master mode!
        rtl871xdrv driver initialization failed.
        “`

  28. 你好,我按照此方法搭建AP,唯一的不同是我的网卡是rt3070的,于是我把驱动换成了nl80211,但目前只能内网通讯,不能连接到外网.

    • 可以连接无线吗?如果可以的话,那么驱动应该是没有问题的,采用路由方式搭建热点的话还应该注意配置iptables,否则流量不会由wlan0到eth0(通常是外网口)的,具体配置可以看原文所描述,希望对你有所帮助。

    • 出现这种情况的问题有很多,建议你查看以下日志记录,提供一些可能的原因:hostapd是否使用的是补丁版,无线网卡是否与树莓派兼容(查看兼容列表),是否使用的是大功率网卡(因为有时大功率网卡可能会出现供电不足的问题)。

  29. 博主你好,请问下如果pi使用pppoe上网,之后再按照您的配置能使连接Wi-Fi的设备访问外网么?现在在pi上能访问外网,在连接到Wi-Fi的设备上不能

    • 我试了下网线连到路由器上是可以的,稍微明白了些,那如果想要直接使用pppoe的话把博主教程中的eth0改成ppp0就可以了呢?(学的浅,很多都不懂)

      • 非常抱歉的是我没有配置过PPPoE连接网络,所以并不能给出准确的方案,原来的配置是采用锐捷mentohust拨号的,利用iptables将WiFi的wlan0流量导入eth0,测试下来是正常的;如果你使用PPPoE拨号出现ppp0的虚拟点对点设备的话,应该是将流量导入ppp0,你可以试着修改iptables的相关配置。

        • 配置得快哭了。。。
          就是不能访问外网啊。。。
          希望博主可以研究一下然后教教大家!
          非常感谢!

          • 抱歉,主要这段时间树莓派安装在实验室进行测试,过2个月才能拿到,如果可以只有等我拿到后再进行相关实验了。

  30. 您好,我按照您说的网桥方法配置,现出现如下问题:
    一、如果在/etc/network/interfaces中 加上auto eth0 ,(比您的方法一只多加这一个),执行sudo hostapd -dd /etc/hostapd/hostapd.conf 出现错误 drv->ifindex=3 Configure bridge br0 for EAPOL traffic. ioctl[SIOCSIWMODE]:Invalid argument Could not set interface to mode(3)!Could not set interface to master mode! rtl871xdre driver initialization failed.
    二、倘若不加auto eth0,无法上网
    三、interfaces中有网桥在的话,eth0的网址会变,局域网10.109.**.**变169.254.*.*,去掉网桥设置,则正常,局域网改变SSH连不上
    希望有时间探讨一下,多谢啦

    • 169.254.*.*这个一般是系统获取不到IP地址时自己给自己分配的临时地址,如果出现这个地址说明DHCP没有发挥作用。遗憾的是树莓派暂时不在身边,所以你的问题难以复现,文中网桥的方式我是试过的,而且首次配置成功的也正是此模式,可以正常上网,不知道你所使用的hostapd是否按文中办法打补丁,貌似官方版本的对于部分无线网卡驱动始终不能正常加载,我有一次将之前补丁版本的hostapd升级到官方最新版本,结果无线立即就出问题了,所以这里需要注意在打好补丁后将hostapd加入禁止升级列表比较好。

  31. 谢谢楼主,我上回问了几个问题,关于网桥br0和eth0的IP问题,用桥接的方法时,br0作为主机的地址,它是正常的10.109.**.**的,其他的eth0 wlan0是169.254.**.**,利用br0的网址可以与SSH连接,但是具体的原因我还不知道,桥接方法是可以正常上网的,就是连接时间较长。
    但是用路由方法时,总是不行,在最后hostapd验证时会出问题。正在解决,希望楼主要有解决方法,指导一下,多谢啦

    • 有一种感觉是DHCP Server的问题,尤其是自动私有地址169.254.*.*出现,常常发生在无法获取DHCP分配的IP地址情况。综合看来你的hostapd也是有问题的,难道直接用的官方版本?hostapd设置的无线网卡驱动类型是否配置正确?

  32. 楼主,1、用桥接方法会出现问题,会中断,不仅wifi中断,SSH也会中断,然后再启动hostapd 又会出现错误提示:drv->ifindex=3 Configure bridge br0 for EAPOL traffic. ioctl[SIOCSIWMODE]:Invalid argument Could not set interface to mode(3)!Could not set interface to master mode! rtl871xdre driver initialization failed./2、重启reboot之后,树莓派上网出现异常,(试验中,一直用有线连接树莓派上网),然后hostapd后出现 Configure bridge br0 for EAPOL traffic .
    ioctl[SIOCSIWMODE]:Invalid argument
    Could not set interface to mode(3)!
    Could not set interface to master mode!
    rtl871xdre driver initialization failed.

    • 抱歉,暂时树莓派不在身边,印象中我首次配置网桥模式是正常的,后来根据项目要求改成了路由模式,目前在实验室测试运行正常有三年时间了,除了中途负载过高重启过。建议你还是看下是否hostapd出现问题,重新安装并打补丁再试试呢?实在不行建议检查一下无线网卡是否在树莓派兼容性列表中,我开始用的NetGear的无线网卡就是不太兼容,经常会出现无法连接情况,换成EDUP后来问题得以解决。

  33. 多谢楼主!上周五,两种方法都调通了,目前为止也很稳定。期间出现了好多问题,感觉基本最后的所有解决方式,就是如果设置步骤没问题的话,hostapd重新安装,然后reboot,重复操作

  34. 您好,可否请教您一下想这样配置要怎么用呢?
    WIFI信号——>树莓派接收———>转发到((RJ45口) & (WIFI信号出去))

      • 不太明白你的需要,似乎你是想将无线的数据通过树莓派自带的网口进行相互的传输,那么文章的配置应该是可以的,原文就是树莓派自带的RJ45网口连接的互联网,再无线客户端与有线网口连接的网络进行数据传输。

  35. 您好楼主,我已经设置成功,并且用手机可以连接上网啦。我想知道使用什么命令才能看到树莓派给我的手机分配的IP地址是什么呢?

  36. 楼主你好,问个问题。我想用树莓派配置成个路由器,树莓派的网口接外网。另外给树莓派插了一个USB有线网卡,一个USB无线网卡。但是一直是接在USB有线网卡的网络可以上网,无线设备连接USB无线网卡就不能上网。看了一下IP地址,连在USB有线网卡和连在USB无线网卡的设备都分配了IP地址。如果拔掉了USB有线网卡或者只连接USB无线网卡,无线设备就可以上网。。。我也试图把USB有线网卡和USB无线网卡桥接。。结果发现都上不去网了。。我用的hostapd和isc-dhcp-server这两个软件。楼主知道需要怎么配置吗?是不是数据转发有问题?

    • 你好,感谢你的关注,抱歉的是我并没有这样配置过,所以并不能提供可行方案,我的想法是这样的,你有线网卡和无线网卡分配配置不一样的IP地址段,比如有线网卡是192.168.13.1~192.168.13.254,无线网卡配置为192.168.12.1~192.168.12.254,子网掩码都是255.255.255.0,然后修改iptables将这两个端口的流量导入eth0,如我文章所示iptables参考配置,但是你可能需要修改相关参数,分配设置USB有线网卡和无线网卡,可以试试。

        • 抱歉,暂时树莓派不在身边也无法进行相关实验,假设无线接口是wlan0,USB网卡是eth1,树莓派自带网络接口是eth0,eth0是互联网出口,我只能依葫芦画瓢的提供下面代码:

          sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
          sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
          sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
          sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
          sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

          祝你成功!

  37. 博主您好,我按照您的方法成功搞定了第一种方案,但是第二种方案用手机连接AP热点总是无法分配IP,想问一下您知道如何解决么?

  38. 您好,两个方法都已经成功运行,但是用 第二种方式,也就是路由方式时,在实验环境中遇到了一个问题:
    实验环境:
    host A(IP 192.168.2.3)——H3C路由器——树莓派eth0(IP 192.168.3.3) wlan0(配置为路由 设置静态地址为 192.168.42.1)——host B(dhcp 为 192.168.42.12)
    现在问题是,host B可以ping通 host A,但是host A ping不通host B
    host A 可以与 eth0 ping通,host B可以与eth0 wlan0 hostA ping通。
    请问怎样可以互相ping通

    • 你好,根据你的描述,感觉有点儿复杂,建议你采用tracert(Windows)或者traceroute(Linux/Unix)跟踪路由,然后配置路由表应该可以实现。

  39. 您好,1、首先说明一下,昨天反应的网桥方法问题,就是出现wifi,但是并不能连接,后重装了系统,再设置,设置成功。
    2、但是现在还有问题。我配置网桥AP的主要用途是,利用wifi,接收视频数据,在接收视频数据(用VLC播放器)时,只要断开wifi连接,就不能再次连接,除非重新启动树莓派,请问有没有好办法解决这问题?
    3、并且在接收视频的质量并不好,会频繁出现视频的抖动。
    4、一直认为是树莓派的CPU问题,但是后来用第二种路由模式,并没有出现视频抖动问题。之所以不选择路由模式,是因为路由模式只能一端ping通另一端,两端不能互ping。请问这有没有办法解决?(查阅资料,有人说这是nat的原因,有些事路由表原因,但是经过努力都没有好的办法来解决这个问题)。
    5、请问您有什么建议么?非常感谢百忙之中阅读

    • 抱歉,网桥模式我没有实际使用,仅仅是配置成功后就重新改用路由模式了,所以对于网桥模式可能的问题我所掌握的信息不多,至于你所说的ping问题,如果两台电脑同时连接树莓派,并且树莓派作为出口网关路由,则可以通过设置树莓派路由表实现,如果两台电脑除了连接树莓派外还连接其他网络或者间接连接树莓派则需要同时设置两台电脑的路由表实现互通,如果一台电脑连接树莓派,另外一台电脑在别的网络,则需要做端口映射以穿透NAT。
      另树莓派玩玩可以,但真的不适合做路由器用,我试用下来在十几台上网设备连接的情况下经常会高负载崩溃。

  40. 你好,我有个问题不知道怎么回事,我用的是第二种方法。
    最后测试的时候出现这样的问题。
    random: Trying to read entropy from /dev/random
    Configuration file: /etc/hostapd/hostapd.conf
    drv->ifindex=3
    l2_sock_recv==l2_sock_xmit=0x0x1efd648
    ioctl[SIOCSIWMODE]: Invalid argument
    Could not set interface to mode(3)!
    Could not set interface to master mode!
    rtl871xdrv driver initialization failed.
    看不大懂,不知道哪里的问题,求解决,谢谢

  41. 您好,想向您请教一个问题不知道您现在还在用这个blog么?
    squid安装很顺利,我的目的是用u盘作为缓存存放的地方。
    1.格式化什么格式比较好ext4,还是linux swap?
    2.赋予squid权限不能执行,找不到文件

    ● squid3.service – LSB: Squid HTTP Proxy version 3.x
    Loaded: loaded (/etc/init.d/squid3)
    Active: active (exited) since Sun 2017-07-09 13:33:54 UTC; 52min ago
    Process: 12477 ExecStop=/etc/init.d/squid3 stop (code=exited, status=0/SUCCESS)
    Process: 12489 ExecStart=/etc/init.d/squid3 start (code=exited, status=0/SUCCESS)

    Jul 09 13:34:06 raspberrypi squid3[12489]: FATAL: Failed to make swap directory /mnt/usb_flash//00: (13) Permission denied
    Jul 09 13:34:06 raspberrypi squid3[12489]: Squid Cache (Version 3.4.8): Terminated abnormally.
    Jul 09 13:34:06 raspberrypi squid3[12489]: CPU Usage: 0.050 seconds = 0.050 user + 0.000 sys
    Jul 09 13:34:06 raspberrypi squid3[12489]: Maximum Resident Size: 33600 KB
    Jul 09 13:34:06 raspberrypi squid3[12489]: Page faults with physical i/o: 0
    Jul 09 13:34:06 raspberrypi squid[12526]: Squid Parent: (squid-1) process 12565 started
    Jul 09 13:34:06 raspberrypi (squid-1)[12565]: Failed to verify one of the swap directories, Check cache.log
    for details. Run ‘squid -z’ to create swap directories
    if needed, or if running Squid for the first time….
    Jul 09 13:34:06 raspberrypi squid[12526]: Squid Parent: (squid-1) process 12565 exited with status 1
    Jul 09 13:34:06 raspberrypi squid[12526]: Squid Parent: (squid-1) process 12565 will not be restarted due to repeated, frequent failures
    Jul 09 13:34:06 raspberrypi squid[12526]: Exiting due to repeated, frequent failures
    Jul 09 14:07:11 raspberrypi systemd[1]: Started LSB: Squid HTTP Proxy version 3.x.
    Hint: Some lines were ellipsized, use -l to show in full.

请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*