如何通过特定接口路由传入连接?


2

我有多个以太网卡,上面配置了两套不同的网络。

的输出 route -n 在这里给出::

     Kernel IP routing table 
      Destination  Gateway        Genmask        Flags Metric Ref Use Iface
   0.0.0.0         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
   169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
   192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth1
   192.168.3.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

传出连接很好。传入连接的问题是:如何路由传入的流量以通过192.168.1.X?

我想补充的另一件事是,我需要传出的连接通过192.168.3.1。

Answers:


3

我自己找到了解决方案: 路由多个上行链路/提供商

常见配置如下,其中有两个提供商将本地网络(或甚至单个机器)连接到大型Internet。

                                                               ________
                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             |            |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     if1      |                      /
 /             \     |              |                      |
| Local network -----+ Linux router |                      |     Internet
 \_           __/    |              |                      |
   \__     __/       |     if2      |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |            |       |
                                          +------------+        \________

如何通过特定提供商(例如,提供商1)对来自同一提供商的数据包的路由应答。

我们先设置一些符号名称。设$ IF1是第一个接口的名称(上图中的if1),$ IF2是第二个接口的名称。然后让$ IP1成为与$ IF1相关联的IP地址,将$ IP2作为与$ IF2相关联的IP地址。接下来,让$ P1为提供商1处网关的IP地址,将$ P2作为提供商2处网关的IP地址。最后,让$ P1_NET为$ P1所在的IP网络,$ P2_NET为IP网络$ P2在。

一个创建两个额外的路由表,比如T1和T2。这些都添加在/ etc / iproute2 / rt_tables中。然后在这些表中设置路由,如下所示:

  ip route add $P1_NET dev $IF1 src $IP1 table T1
  ip route add default via $P1 table T1
  ip route add $P2_NET dev $IF2 src $IP2 table T2
  ip route add default via $P2 table T2

没有什么了不起的,只需构建到网关的路由并通过该网关构建默认路由,就像在单个上游提供者的情况下那样,但是将路由放在每个提供者的单独表中。请注意,网络路由就足够了,因为它告诉您如何在该网络中查找包含网关的任何主机,如上所述。 接下来,设置主路由表。通过连接到该邻居的接口将事物路由到直接邻居是个好主意。注意`src'参数,它们确保选择正确的传出IP地址。

    ip route add $P1_NET dev $IF1 src $IP1
    ip route add $P2_NET dev $IF2 src $IP2

然后,您对默认路由的偏好:         ip route通过$ P1添加默认值

接下来,设置路由规则。这些实际上选择了要路由的路由表。如果已有相应的源地址,则需要确保路由出给定的接口:         ip规则从$ IP1表T1添加         ip规则从$ IP2表T2添加


你可以吗? 编辑 您的回答是否包括解决您具体问题的所有重要步骤?链接可能会下降,这里有信息是很好的。
slhck

@slhck肯定的事。可以请你回顾一下。
rahul

1

您没有将传入路由到特定的路由 - 您路由传出...

针对您的最后一跳(路由器或其他)将决定您联系的接口...例如如果从192.168.1.x建立连接,它将不会路由到连接到192.168.3.x的nic。

也许我在这里遗漏了一些东西...如果这不是你想听到的,我认为你需要绘制你的网络拓扑或给我们一些更多的信息。


谢谢回复。我已将默认路由更改为192.168.3.X以用于某些特定目的。那是不能改变的。我希望这说清楚。此外,我需要外部访问同一台机器,即使在路由器中正确完成了转发,也不会发生这种情况。
rahul

在这个例子中你的路由器的IP是多少?
Justin

伙计们,谢谢你的努力。这项工作。我已经提出了答案。
rahul
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.