Debian:连接两个本地网络

Debian:连接两个本地网络

目前,我正在尝试连接两个本地网络,因为似乎两个网络彼此不认识。

以下是网络设置:

  • 我的家庭本地网络:192.168.0.0/24 Rasperry Pi 作为接入点

  • 使用它自己的网络的点(用于 DHCP 功能等):192.168.1.0/24

Raspberry Pi 设置:

  • eth0:未连接
  • wlan0:192.168.0.117
  • WLAN1:192.168.1.1
  • 将 RasPi 192.168.1.1 ping 至 RasPi 客户端 192.168.1.2 => 成功
  • 将 RasPi 192.168.0.117 ping 至 PC 192.168.0.120 => 成功
  • 对 RasPi 192.168.0.117 执行 ping 操作以连接到 Google (http://www.google.de) => 成功

电脑设置:

  • RJ45 连接:192.168.0.120
  • WiFi:未连接
  • 将 PC 192.168.0.120 ping 至 RasPi 192.168.0.117 => 成功
  • 将 PC 192.168.0.120 ping 至 RasPi 192.168.1.1 => 成功
  • 对 PC 192.168.0.120 执行 ping 操作以连接到 Google (http://www.google.de) => 成功

任何 RasPi 客户端(例如我的 iPhone4S,它应该使用 RasPi WiFi 网络)设置:连接到 RasPi WiFi(192.168.1.0/24):

  • 无线网络:192.168.1.2
  • 将 RasPi 客户端 192.168.1.2 ping 至 PC 192.168.0.120 =>不成功(超时)
  • 将 RasPi 客户端 192.168.1.2 ping 至 RasPi 192.168.0.117 => 成功
  • 将 RasPi 客户端 192.168.1.2 ping 至 RasPi 192.168.1.1 => 成功
  • Ping RasPi 客户端 192.168.1.2 到 Google(http://www.google.de)=>不成功(超时)

连接到路由器(家庭)WiFi(与 PC 192.168.0.0/24 相同的网络)

  • 无线网络:192.168.0.110
  • 将 RasPi 客户端 192.168.0.110 ping 至 PC 192.168.0.120 => 成功
  • 将 RasPi 客户端 192.168.0.110 ping 至 RasPi 192.168.0.117 => 成功
  • 将 RasPi 客户端 192.168.0.110 ping 至 RasPi 192.168.1.1 =>不成功(超时)
  • 对 RasPi 客户端 192.168.0.110 执行 ping 操作以连接到 Google(http://www.google.de) => 成功

我希望两个网络中的所有设备都能互相连接。问题是,我的家庭网络路由器 (192.168.0.1) 不幸没有选项来路由两个网络之间的流量(只能处理端口转发)。

这就是为什么我想使用 RasPi 来路由两个网络之间的流量,因为 RasPi 也是一个网关。

这是 RasPi 的 iptables 设置:

由 iptables-save v1.4.14 于 2014 年 3 月 14 日星期五 23:34:55 生成
*filter
:INPUT ACCEPT [423:33976]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [533:57052]
COMMIT
于 2014 年 3 月 14 日星期五 23:34:55 完成
由 iptables-save v1.4.14 于 2014 年 3 月 14 日星期五 23:34:55 生成
*nat :PREROUTING ACCEPT [3:96]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0]
-A PREROUTING -i wlan1 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22
-A PREROUTING -i wlan1 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -i wlan1 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040 COMMIT
于 2014 年 3 月 14 日星期五 23:34:55 完成

当我的 iPhone 连接到网络 192.168.1.0/24 时,我希望能够 ping 192.168.0.0/24 网络中的 PC。

当我的 iPhone 连接到网络 192.168.0.0/24 时,我希望能够 ping 192.168.1.0/24 网络中的 RasPi。

你知道怎样实现这个目标吗?

欢呼吧,丹

---编辑 1--- 到目前为止,所提建议均无效。到目前为止,我唯一能正常工作的就是 RasPi 客户端的互联网连接,因此可以 ping 到 www.google.de。

我已经编辑了 /etc/network/interfaces 文件:

自动档

iface lo inet 环回
iface eth0 inet dhcp

允许热插拔 wlan0
iface wlan0 inet dhcp
wpa-ssid“abcdef”
wpa-psk“123456789”

允许热插拔 wlan1
iface wlan1 inet 静态
地址 192.168.1.1
网络掩码 255.255.255.0
子网 192.168.1.0

启动 iptables-restore < /etc/iptables.ipv4.nat

启动路由删除默认网关 192.168.1.1 wlan1
启动路由添加默认网关 192.168.0.1 wlan0

路由表现在如下所示:

Ziel 路由器 Genmask 标志 度量标准 参考 使用 Iface
默认 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 0 0 0 wlan1

由于互联网使用此解决方案,我所需要的只是两个子网之间的连接。从 192.168.1.0/24 网络,我仍然无法访问 192.168.0.0/24 网络,只能通过网关 192.168.1.1 访问互联网。

---编辑 1---
---编辑 2---
我现在已从 /etc/network/interfaces 中删除了以下行:

启动路由删除默认网关 192.168.1.1 wlan1
启动路由添加默认网关 192.168.0.1 wlan0

因此我添加了 Lawrence 提到的 iptable 规则。我的 iptable 如下所示:

由 iptables-save v1.4.14 于 2014 年 4 月 7 日星期一 17:51:30 生成
*nat
:PREROUTING ACCEPT [39:1816]
:INPUT ACCEPT [1:384]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i wlan1 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22
-A PREROUTING -i wlan1 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -i wlan1 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT
--to-ports 9040
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
于 2014 年 4 月 7 日星期一 17:51:30 完成
由 iptables-save v1.4.14 于 2014 年 4 月 7 日星期一 17:51:30 生成
*filter
:INPUT ACCEPT [28:3580]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [30:3192]
-A INPUT -i lo -j ACCEPT
-A INPUT -i wlan1 -j ACCEPT
-A FORWARD -i wlan1 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT -A
OUTPUT -o wlan1 -j ACCEPT
COMMIT
于 2014 年 4 月 7 日星期一 17:51:30 完成

注意:这三个 PREROUTING 规则对于在我的 Pi 上运行的 TOR 代理是必需的。

结果:互联网连接正常,但仍然无法从 192.168.1.0/24 访问 192.168.0.0/24。 ---编辑 2---

---编辑 3---
我现在正在使用另一个支持静态路由的路由器。好消息是,我现在可以 ping 所有 IP,无论从哪个网络到哪个网络。不幸的是,我仍然无法打开任何服务。所以我尝试进行一些端口转发以解决这个问题。

场景如下:

192.168.1.2 (iPhone) -> 192.168.1.1 (树莓派WLAN1)——192.168.0.4(RasPiWlan0)-> 192.168.0.2:5901(NAS)

NAS 在端口 5901 和 80 上运行服务。假设我想从 iPhone 访问端口 5901 上的 NAS,对于这种情况,我尝试了以下 iptables 规则,但仍然没有成功:

iptables -A 预路由 -t nat -iWLAN1-p tcp --dport 5901 -j DNAT --to192.168.0.2:5901
iptables -A FORWARD -p tcp -d192.168.0.2--dport5901-j 接受

有什么建议可以解决这个问题吗?
--- 编辑 3 ---

答案1

要使用设备(例如 Raspberry Pi)作为网关,您需要对设备进行“双重归属”,即在两个网络中设置 IP,因此您需要在 192.168.1.* 网络中向 RaspberryPi 添加一个 IP,您可以为此使用 eth0:0 别名。

一旦 Raspberry 可以与 192.168.1.* 网络通信,您就可以在所有 192.168.1.* 网络设备中添加路由(“路由添加”),告诉它们可以通过网关 RaspberryPi 到达 192.168.0.* 网络,反之亦然。

答案2

我假设您在 Pi 上运行 DHCP 服务器,它正在监听wlan1,并且您使用hostapd广播作为接入点。
我还假设您已将 Pi 设置为转发数据包。

首先,我对接口使用以下配置。我根本不手动设置路由。

auto wlan0
iface wlan0 inet dhcp
wpa-ssid "ssid"
wpa-psk "psk" 

auto wlan1
iface wlan1 inet static
address 10.0.0.1
netmask 255.255.255.0

其次,我使用以下 iptables 规则来做你想做的事情 -

iptables -F
iptables -X

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i wlan1 -j ACCEPT
iptables -A OUTPUT -o wlan1 -j ACCEPT

iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan1 -j ACCEPT

该脚本应允许连接到 Pi 热点的设备连接到 192.168.0.0/24 网络中的设备。

这是我在家工作一段时间后为使设备连接而采用的设置。

如果您希望 192.168.0.0/24 网络上的设备访问 192.168.1.0/24 网络上的设备,那么最简单的选择是将 Pi 上的端口转发到 Pi 网络上的客户端机器,然后通过使用特定端口访问 Pi 的 IP 地址来访问它们。

或者,您可以在 192.168.0.0/24 网络上的所有客户端机器上设置路由,以通过 Pi 访问 192.168.1.0/24 网络。

相关内容