围绕当前网络转发公网

围绕当前网络转发公网

出于本次讨论的目的,我有一台最新的始终在线的 Linux 机器,带有两个网卡:

  • 无线网络0
  • 以太网0

我想要的配置的一个非常粗略的图表如下所示:

                               (----------------------------)
                               |    linux/main computer     |
                               |                            |
     ----------- /  ~ ~ ~ ~ ~ \ -------              -------|        
     | internet |-- ~ wifi ~ --| wifi0 |------------| eth0  |======)
     ----------- \  ~ ~ ~ ~ ~ / -------              -------|      |
                               |                            |      |
                               (----------------------------)      |
     \   subnet   /                                                |
      \  wifi    /                                                 |
      ------------                                                 |
      | dd-wrt   |=================================================)
      | router   |====\ subnet
      |          |====\ subnet
      ------------

以太网0连接到带有我信任的预配置防火墙网关的路由器,并且是我应该更喜欢所有一般流量的网络接口卡。

问题是我信任的防火墙网关不再是网关;而是我信任的网关。它没有互联网连接。

相反,我的互联网访问来自无线网络0。我想隔墙无线网络0,将其所有流量转发到我的可信网关以太网0,并能够维护我自己的本地子网,主要由我的路由器/网关管理。

所以基本上我正在寻找一种配置方法无线网络0接受所有传入流量并立即通过以太网0到我的路由器。我希望所有未绑定到本地子网的传出流量直接通过无线网络0到广阔的世界,但所有子网流量都由我的本地路由器处理,并且全部传出流量 - 无论是来自我的路由器还是来自我的连接互联网的计算机纳特并看起来好像它来自同一地址。

它必须是可能的,我真的很想仅使用当前软件包iptables中包含的工具和/或工具来完成它。iproute2我更喜欢networkdnic init/setup,我知道我可能需要在连接的 Linux 盒子中启动一个或两个虚拟 nic 才能实现这一点,但我对细节很模糊。

有人可以帮我解决这个问题吗?我对数据包过滤器和类似的东西非常不熟悉。

ps 我几乎不喜欢这个问题的标题,如果有人能想到一个更简洁/描述性的问题,我将不胜感激。

如果有什么区别,我也可以这样做:

-----        \   router   /
box  \        \ ________ /
---- |        /          \
eth0 [========] wan port |
---- |        |          |
eth1 [========] lan port [=======\subnet
____ /        \ ________ /

...因为除了无线网络0互联网的来源地。所以我想我可以转发(或者桥?)之间的所有流量无线网络0以太网0对于大多数意图和目的,在路由所有日常流量时完全忽略这两个以太网1。我只是真的不明白iptablesnftables任何其他的足以实现我的目标。请帮我一下。

答案1

这不一定是一个有保证的答案,因为我没有您所描述的配置。

要求

  1. 所有来自托管子网或 Linux/主计算机 (“LMC”) 的互联网出站流量均使用 SNAT 或 MASQUERADE 通过 wlan0 直接传至互联网
  2. 使用由 SNAT 或 MASQUERADE 创建的连接跟踪(上文)直接传送作为 Internet 出站流量一部分的所有 Internet 入站流量
  3. 来自 LMC 的所有子网出站流量将直接传输
  4. 所有未知的 Internet 入站流量将路由到“受信任的防火墙”DD-WRT,我们假设该防火墙位于 192.168.1.253

我相信我们也许能够做到这一点iptables

# Shortcuts
filter() { iptables -t filter "$@"; }
nat() { iptables -t nat "$@"; }

# Set the policy for INPUT and FORWARDING to DROP, OUTPUT to ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Empty all chains (erase all rules)
iptables -Z

# Enable forwarding
echo 1> net.ipv4.ip_forward

# SNAT outbound traffic on wlan0 (we will use MASQUERADE)
nat -A POSTROUTING -o wlan0 -j MASQUERADE

# Accept return traffic for our own outbound connections
filter -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Forward all unknown inbound traffic to DD-WRT box, eg 192.168.1.253
nat -A PREROUTING -i wlan0 -j DNAT --to-destination 192.168.1.253

现在设置路由表,以便您的“LMC”知道如何到达 DD-WRT,而 DD-WRT 的默认路由就是您的“LMC”。事实上,网络上的所有内容都应该将“LMC”作为其默认路由。 “LMC”本身应该将您的 ISP 上游作为其默认路由。

如果您需要具体信息,请提供一些(示例)IP 地址和网关。

警告一字:我不确定这是否可能如您的问题中所述。您可能需要通过 DD-WRT 对所有流量进行 NAT/路由(甚至是来自“LMC”的出站流量)。

相关内容