将 Linux 机器设置为 MyBookLive 的 WAP 吗?

将 Linux 机器设置为 MyBookLive 的 WAP 吗?

我继承了一个旧的 Linux 机箱和一台 MyBookLive,并且想通过无线网络使用 MyBookLive,本质上是使用 Linux 机箱作为网关。

我刚刚清理了 Linux 机器(家里),并在其上安装了 Ubuntu 12.04。我的网络设置目前如下所示:

       (192.168.0.1)
    网络掩码 255.255.255.0)     
ISP---无线路由器---家里的wlan0(192.168.0.12)
               | 主页上的 eth0 --- MyBookLive
            MacBook
        (192.168.0.11)

因此 MyBookLive 基本上就是一个高级的外置硬盘。路由器确实有一个以太网端口,但我室友的电脑正在使用它,所以我无法将 MyBookLive 直接插入其中。

现在我可以从家里 ping MyBookLive.local 和 MacBook.local,但我无法理解和弄清楚正确的 iptables 命令是什么,以使我的 MacBook 通过 Bonjour 网络看到我的 MyBookLive。另外,我不确定是否需要设置 DNS 来转发 xxx.local Bonjour/Zeroconf 地址。

我尝试了以下操作将我的整个有线网络(只有我的 MyBookLive)转发到单个 IP 地址:

sysctl net.ipv4.ip_forward=1
iptables -A 转发 -i wlan0 -o eth0 -j 接受
iptables -A 转发 -i eth0 -o wlan0 -j 接受
iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT --to 192.168.0.66
iptables -t nat -A PREROUTING -i eth0 -p udp -j DNAT --to 192.168.0.66

但我无法从 MacBook ping 通此地址。这可能是大错特错,但我对设置此类网络完全是菜鸟,需要一些专家的帮助才能正确设置。

答案1

这里最简单的事情就是设置 NAT 并将所需的端口从家庭的 wlan0 接口转发到外部硬盘接口上的等效端口。

以下脚本是一个设置 NAT 的示例,以便连接到家中 eth0 的设备(通过交换机或交叉 TP)可以访问无线网络。

/bin/sh #!/bin/sh 复制代码
INTERNAL_IP=家庭.lan
内部网络地址=255.255.255.0
内部=eth0
外部=wlan0

ifconfig $INTERNAL $INTERNAL_IP 网络掩码 $INTERNAL_NM 启动

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i $EXTERNAL -o $INTERNAL -m 状态 \
    --state 相关,已建立 -j 接受
iptables -A FORWARD -i $INTERNAL -o $EXTERNAL -j ACCEPT

要使所述情况发挥作用,必须启用无线网络中的设备以“回看”NAT 网络(隐藏在 home.lan 后面)。您在问题中尝试的方法基本上是正确的,只是它转换的方向错误。您希望将 home.lan 接口上特定端口传入的数据包转发到 mbl.lan 的本地隐藏 NAT IP

#(继续)
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 445 -j DNAT \
      --到 mbl.lan:445
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 139 -j DNAT \
      --到 mbl.lan:139

这种设置将导致无法在主主机上运行 Samba 服务器,因为进入默认 Samba 端口的流量会被发送到外部硬盘。这不是问题的一部分,但一个可能的解决方案是在另一个端口上运行主主机的 Samba 服务,或者使用 --dport 值(例如 4455)并手动设置客户端在访问我的书时连接到另一个端口。

请注意,这个答案假设驱动器上正在使用 samba,并且如果使用不同的协议,则需要调整端口。

该方法的一个显著限制是,所有到外部驱动器的连接看起来都像是源自 home.lan。

网络别名:
mbl.lan(我的书直播 ip 地址;192.160.0.66)
home.lan(家庭 wlan0 ip 地址;192.168.0.12)

参考:
http://www.centos.org/docs/4/html/rhel-sg-en-4/s1-firewall-ipt-fwd.html
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2

答案2

br0我认为简单的解决方案是在 linux-box 上设置桥接设备eth0并向wlan0其添加接口。

  1. bridge-utils在 ubuntu 上下载
  2. 添加桥接brctl addbr br0
  3. 添加网络设备以桥接brctl addif br0 eth0brctl addif br0 wlan0
  4. 将 IP 设置为您的br0接口(不要将 IP 设置为 eth0 或 wlan0)
  5. 删除 DNAT 规则iptables
  6. 编辑您的iptables配置,并将参数-i和替换-o-m physdev --physdev-in-m physdev --physdev-out

这将创建虚拟br0接口,其作用就像 wlan0 和 eth0 是同一个网络上的一个接口一样。这样您就可以从网络上的任何一台 PC 访问您的网络磁盘。

编辑:

如果您在 中使用wlan0AP,则此方法有效master mode。我猜您正在使用hostapd来在 linux-box 上创建该 AP。

我应该提到的另一件事是,只有在我先执行之后才有可能添加 wlan0 接口hostapd

hostapd丰富的Linux 无线网络 资源:http://linuxwireless.org/en/users/Documentation/hostapd

答案3

我有一个类似的设置,用于短期测试。

以这种方式安装 hostapd:(hostapd 是无线接入点守护进程)

sudo apt-get install hostapd

这是一个非常简约的 hostapd.conf 配置文件(请注意,您需要更多配置来使用 WPA/WPA2 保护您的网络)。

interface=wlan0
driver=nl80211
ssid=AcidFlask
channel=9
hw_mode=g
country_code=NO
auth_algs=1
wpa=0
ignore_broadcast_ssid=0

然后我启动 hostapd 守护程序并按以下方式转发:

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
ifconfig wlan0 172.20.99.1 netmask 255.255.255.0
iptables -t nat -A POSTROUTING -s 172.20.99.0/24 -o eth0 -j MASQUERADE
hostapd -d hostapd.conf

最后,我在客户端上定义一个静态 IP(例如 172.20.99.2,网络掩码为 255.255.255.0,网关为 172.20.99.1 和 DNS 8.8.8.8)。

这确实是一个准系统解决方案,因为它缺乏无线安全和 DHCP,但它应该可以工作,并且您可以根据需要在此基础上进行构建。

另请注意,此解决方案需要你的 WiFi 适配器支持 AP 模式:

  • ath9k 在大多数情况下都可以工作
  • 据我所知,rtl8187 不起作用

编辑:我误解了您的短语“使用 Linux 机器作为无线接入点”。我以为您想将您的 Linux 机器无线连接到您的 MyBookLive。请忽略我的解决方案。

相关内容