静态路由和 iptables

静态路由和 iptables


我有这种情况:

LAN1 (10.0.0.x)
Subnet 255.255.255.0
Gateway 10.0.0.1
Gateway "WAN" 192.168.1.210

LAN2 (10.0.1.x)
Subnet 255.255.255.0
Gateway 10.0.1.1
Gateway "WAN" 192.168.1.211

我所说的“网关 WAN”是指面向子网 192.168.1.x 的接口(这是我从 ISP 收到的调制解调器/路由器的网络,也是允许计算机上网的网络)。

为了说明下一句的背景,我将调用 LAN1 上的网关RV110W因为它是思科型号,并且网关在LAN2上LinuxBox

我在禁用 RV110W 防火墙的情况下进行了所有测试,以便我可以专注于正确获取 LinuxBox iptables。

目前我在 LinuxBox 上的配置如下:

/etc/newtwork/接口

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.211
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    hostname alpine-router

auto eth1
iface eth1 inet manual

auto eth2
iface eth2 inet manual

auto eth3
iface eth3 inet manual

auto br0
iface br0 inet static
    bridge_ports eth1 eth2 eth3
    address 10.0.1.1
    netmask 255.255.255.0
    broadcast 10.0.1.255
    up ip route add 10.0.0.0/24 via 192.168.1.210


iptables

#########################################################################
# Basic iptables IPv4 routing rule set
#
# 10.0.1.0/24 routed directly to ETH0 via NAT
# 
#########################################################################

#
#Mangle Table
#We leave this empty for the moment.
#
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT

#
#Filter Table
#This is where we decide to ACCEPT, DROP or REJECT things
#
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

#Create rule chain per input interface for forwarding packets
:FWD_ETH0 - [0:0]
:FWD_BR0 - [0:0]

#Create rule chain per input interface for input packets (for host itself)
:IN_ETH0 - [0:0]
:IN_BR0 - [0:0]

#Create a log drop chain
:LOG_DROP - [0:0]

#Pass input packet to corresponding rule chain
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j IN_ETH0
-A INPUT -i br0 -j IN_BR0

#Pass forwarded packet to corresponding rule chain
-A FORWARD -i eth0 -j FWD_ETH0
-A FORWARD -i br0 -j FWD_BR0

#Forward LAN traffic out
-A FWD_BR0 -s 10.0.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#Forward traffic to ISP
-A FWD_ETH0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#SSH to router
-A IN_BR0 -s 10.0.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#DNS to router
-A IN_BR0 -s 10.0.1.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#NTP to router
-A IN_BR0 -s 10.0.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#WEBMIN to router
-A IN_BR0 -s 10.0.1.0/24 -p tcp -m tcp --dport 21000 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#Accept traffic
-A IN_BR0 -s 10.0.1.0/24 -p udp -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

#Accept incoming tracked ETH0 connection
-A IN_ETH0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT

#
#NAT Table
#This is where translation of packets happens and "forwarding" of ports
# to specific hosts.
#
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

#Allow hosts of the network to use the ETH0 "WAN"
-A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE
COMMIT


静态路由

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         internetbox.hom 0.0.0.0         UG    0      0        0 eth0
10.0.0.0        bedroom-router. 255.255.255.0   UG    0      0        0 eth0
10.0.1.0        *               255.255.255.0   U     0      0        0 br0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0


互联网盒子指的是 ISP 路由器和卧室路由器。指的是RV110W。

为了澄清起见,这里报告的 iptables 并没有经过我任何尝试,只是为了给你一个起点。

当然,RV110W 也有一个静态路由,其中​​所有目的地为 10.0.1.0 的流量都会转至 192.168.1.211(LinuxBox)。

现在,在我开始讲述到目前为止我尝试过的方法之前,我想先澄清一下我的想法以及我的目标。我基本上需要从 LAN1 访问所有 LAN2
我应该访问什么?所有东西(LAN2 应该是一个实验室,我可以在那里制作任何类型的 IT 东西),我说的所有东西是指任何设备上的任何 tcp/udp 端口​​。

到目前为止我发现最有趣和最有用的东西是:

服务器故障(允许来自特定 ip 的流量通过 iptables 传输)

我想出了一些需要放入 IP 表中的规则,但这些规则对我来说并不新鲜,因为我已经尝试过实施它们

-I INPUT -p tcp -s 10.0.0.0 -d 10.0.1.0 -m tcp -j ACCEPT
-I INPUT -p udp -s 10.0.0.0 -d 10.0.1.0 -m udp -j ACCEPT

以及相应的 OUT 规则,尽管默认情况下允许出站流量。我还尝试删除 INPUT 上的目标部分和 OUTPUT 上的源部分,但仍然没有成功。

我也认为源可能是来自 RV110W 的“WAN”IP,但到目前为止,我发现只有人们使用远程 LAN 网络作为源。

我认为我应该在 NAT 部分做一些事情,因为它可能需要处理传入的请求,但没有发现任何相关信息。

我曾多次尝试在互联网上搜索,查看 iptables 手册以及我掌握的任何其他方法,但我找不到任何答案,限制搜索范围就好了。

我可能在这里忽略了一个陈词滥调,这可能是由于我缺乏技术英语词汇,这也是我在这里提问的原因。

我还知道使用 iptables 进行 ping 无法工作,所以我还尝试打开一个 RDP 会话和一个 SSH 会话,当然没有成功。问题是尽管 LAN2 上的 ping 被阻止,但从 LAN2 ping LAN1 也超时了,这也告诉我 ping 可以到达目的地但不会返回。

我尽力详尽地让您了解我的情况,但如果我遗漏了什么,我提前道歉。

最后,我真的没有主意了,任何帮助,无论大小,我都非常感激。

附言:我还想过实现一个站点到站点的 IPSec VPN,RV110W 本身支持该功能,LinuxBox 上也有 strongswan 支持,但最终问题仍然出在路由上,可能还有 iptables

答案1

我假设 LinuxBox 和 Cisco 在这里连接到同一个 L2 网络。

您需要在 Cisco 和 LinuxBox 上有对称路由:

在 LinuxBox 上,通过 192.168.1.210(Cisco WAN IF)路由到 10.0.0.0/24。

在 Cisco 上,通过 192.168.1.211(LinuxBox WAN IF)路由到 10.0.1.0/24。

然后,您还需要确保防火墙配置在路由器上将流量从 10.0.0.0/24 传递到 10.0.1.0/24 并反之亦然。

相关内容