将 Linux 配置为无线路由器(在单独网络上将无线网卡配置为 AP)?

将 Linux 配置为无线路由器(在单独网络上将无线网卡配置为 AP)?

我有一个定制的家庭安全系统,我正在使用 Arch Linux、Zoneminder 和一组 Foscam FI9800P 无线 IP 摄像机进行开发。

正在构建的系统有一个千兆以太网端口,我想用它将其连接到主家庭网络以访问 Zoneminder Web UI。它还有一个 PCIe 无线卡,我想用它来托管一个与主网络完全隔离的无线网络。该网络将专门用于 IP 摄像头,以帮助消除主网络上的带宽使用。

我遇到的问题是,我可以使用 create_ap 建立接入点,但我希望它是一个单独的网络,但似乎找不到解决方案。我在网上搜索到的所有资源都只描述了接入点,没有关于无线路由器的内容。archwiki 上有关于创建路由器(我已关注)和互联网共享(未详细介绍无线 AP)的文章,但我找不到任何关于这种情况的内容。

有人能帮忙指出文档或详细说明使用基于 Linux 的 PC 作为无线路由器的方法吗?

编辑(为了澄清)

我主要需要了解无线方面的信息。我的网络上还有另一台计算机,其硬连线配置与我的家用路由器几乎相同,如果有这两个以太网接口,我就没问题了,而无线 AP 和使其正常工作才是我遇到的问题。

答案1

这实际上比你想象的要容易得多,你只需要安装和部署hostapd域名系统

hostapd将您的 wifi 接口转换为接入点。此操作有一个前提条件,即 wifi 卡支持 AP 模式:您可以按如下方式测试它,

iw list | less
  .....
software interface modes (can always be added):
             * AP/VLAN
             * monitor

如果 AP 出现在该位置,则表示一切正常。典型的 hostapd 配置文件如下:/etc/hostapd/hostapd.conf,如下所示:

interface=wlan0
driver=nl80211
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
country_code=US
ssid=MySSID
ieee80211d=1
channel=3
wpa=2
wpa_passphrase=MySuperSecretPassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
#logger_syslog=-1
#logger_syslog_level=2
#logger_stdout=-1
#logger_stdout_level=2

这个配置文件不是包括声明

bridge=br0

因为您表示不想设置 LAN 的有线组件,只想设置无线组件。通常使用网桥,以便路由器对有线和无线客户端显示相同的 IP 地址,并简化路由。

wifi 需要一个 IP 地址,

ip addr add 192.168.251.1/24 dev wlan0 

和 IPv4 转发,以允许 wifi 客户端与世界通信。最后,您需要设置域名系统为您的客户端设置 DHCP 和 DNS 服务。典型的/etc/dnsmasq.conf配置文件如下所示,

domain-needed
bogus-priv
dhcp-authoritative
no-dhcp-interface=eth0
interface=wlan0
server=/someremote.lan/192.168.1.1
local=/my.lan/
server=8.8.8.8
server=8.8.4.4
expand-hosts
domain=my.lan
dhcp-range=192.168.251.32,192.168.251.90,12h
dhcp-host=AA:BB:CC:DD:EE:FF,SomeName,192.168.251.129,12h
dhcp-host=00:11:22:33:44:55,hp-printer,192.168.251.210,12h
dhcp-option=119,my.lan,someremote.lan
dhcp-option=252,"\n"
dhcp-host=AA:11:BB:22:CC:33,ignore
cname=SomeOtherName.my.lan,elastix

我保留了一些您可能感兴趣或不感兴趣的功能。

通过以下方式启用这两项服务系统控制,确保 wifi 卡在启动时有一个地址,启用伪装在互联网连接的界面上,

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

一切就绪。

答案2

为此,如果我错了,请纠正我,但我假设你在理解网络和 Linux 的工作原理方面比普通人了解更多一些。

此外,如果我没有看错的话,您可以使用当前网卡创建一个接入点(您没有指定品牌和型号,因为有些无线网卡只能执行 ADHOC 而不能执行 AP 模式),但您遇到的唯一问题是无线网络最终与其他所有网络位于同一网络上。

我发现一个论坛可以帮助您为无线接口创建一个单独的网络,尽管这讨论的是有线接口,但我相信您可以根据您的需要进行调整。

我不知道您是否知道如何使用 IPTables 创建防火墙规则来隔离网络和流量。如果您需要这些信息,请告诉我,我会整理一些内容。

这是我找到的论坛链接:http://www.linuxquestions.org/questions/linux-networking-3/setting-up-a-dhcp-server-with-multiple-network-interfaces-debian-648404 尽管它说的是 debian,但 dhcp 服务器在 arch 中应该与在 debian/ubuntu 中相同。

以下是论坛内容的概述:

发布者/致谢者Srz0rz,奥克兰,新西兰

/etc/dhcp3/dhcpd.conf

##########################################
#####----- Global Configuration -----#####
##########################################
ddns-updates off;
option T150 code 150 = string;
deny client-updates;
#one-lease-per-client false;
#allow bootp;

ddns-update-style none;

option domain-name "vlan.local";
option domain-name-servers    210.56.15.1, 231.117.250.27;

default-lease-time 6000;
max-lease-time 7200;

authoritative;
##############################################
#####----- End Global Configuration -----#####
##############################################

###############################################
#####----- Start Modem Configuration -----#####
###############################################
subnet 192.168.1.0 netmask 255.255.255.0 {
  interface eth0;
}
#############################################
#####----- End Modem Configuration -----#####
#############################################

####################################################
#####----- Start Downstairs Configuration -----#####
####################################################
subnet 192.168.0.0 netmask 255.255.255.0 {
  interface eth1;
  default-lease-time 6000;
  max-lease-time 7200;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.254;
  option broadcast-address 192.168.0.255;
}
##################################################
#####----- End Downstairs Configuration -----#####
##################################################

##################################################
#####----- Start Upstairs Configuration -----#####
##################################################
subnet 10.0.0.0 netmask 255.255.255.0 {
  interface eth2;
  default-lease-time 6000;
  max-lease-time 7200;
  range 10.0.0.100 10.0.0.200;
  option subnet-mask 255.255.255.0;
  option routers 10.0.0.254;
  option broadcast-address 10.0.0.255;
}
################################################
#####----- End Upstairs Configuration -----#####
################################################

#####################################################################
#####----- Start Server and Fixed IP Address Configuration -----#####
#####################################################################
group{
  ###--- Any global server settings should go here ---###

  #- Printer -#
  host printer {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.25;
      }
  #- J computer -#
  host j {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.105;                   
  }
  #- TServer computer -#
  host tserver {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.110;
  }
  #- Windows 2008 Server -#
  host win2008server {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.115;
  }
  #- Asterisk Box -#
  host asterisk {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.120;
  }
  #- WWW Server -#
  host www2 {
      hardware ethernet 00:00:00:00:00:00;
      fixed-address 10.0.0.125;
  }
}
###################################################################
#####----- End Server and Fixed IP Address Configuration -----#####
###################################################################

注意:我已更改 IP 地址并将接口的 MAC 地址清零。您应该假设服务器部分的每个接口都有一个唯一的 MAC 地址。

我还尝试在 /etc/default/dhcp3-server 文件中添加接口:

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1 eth2"

但仍然无法让它在 eth1 接口上工作。我想知道每个子网节中的“接口 ethX”行是否被识别。基本上,我只是想说来自 eth1 的任何 dhcp 租约请求都应该获得 192.168.... 子网,来自 eth2 的任何 dhcp 租约请求都应该获得 10.0.... 子网。

发布者/致谢者emi_ramo,巴塞罗那,西班牙
范围 192.168.0.50 192.168.0.100;
在每个子网内。如果问题仍然存在,请再次访问此处。
再见!!
emi

发布者/致谢者Srz0rz,奥克兰,新西兰

谢谢 emi_ramo!将行“range 192.168.0.200 192.168.0.253”添加到 192.168.0.x 子网声明中有效。我简直不敢相信它这么简单。

我希望这应该可以让您获得两个网络所需的一切,但请记住使用 IPTables 来确保存在网络隔离(如果您也需要这方面的帮助,请告诉我),如果需要,还要确保路由到位,这些应该已经由 dhcp 服务器处理了。

相关内容