问题标签 [iproute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
61 浏览

go - 哪个字段对应于 netlink 中的“dev”(设备)参数?

我正在尝试使用netlink包添加新路由。我需要的等价物是ip route add $P1_NET dev $IF1 src $IP1 table $T1. 问题是我不知道哪个字段对应于dev参数。某处是否有映射,或者我可以使用接口索引而不是它的名称(“dev”)?

0 投票
1 回答
13435 浏览

linux - 用于 MPLS 配置的 iproute2 命令

试图弄清楚如何使用 iproute2 来管理 Linux 内核 4.1 中的静态标签交换 MPLS 路由。

我知道 iproute2 对 MPLS 的支持现在可能不完整 [2]。

谁能解释一下 iproute2-4.1.1 目前能做什么?

这是我到目前为止发现的:

文档/网络/mpls-sysctl.txt

/proc/sys/net/mpls/platform_labels /proc/sys/net/mpls/conf//输入

加载mpls模块

查找 sysctl 支持

启用 mpls 支持

推???(如何添加前缀到推送操作?)

交换???(如何添加标签交换动作?)

流行音乐???(如何添加标签弹出动作?)

???

节目???(如何显示标签交换路由?)

???

有人可以帮我吗 。提前致谢。

0 投票
0 回答
581 浏览

linux-kernel - 内核中的 FTN、ILM 和 NHLFE

最新内核 4.1 支持 MPLS 数据路径。IpRoute2 还添加了在内核中添加 mpls 路由的命令。

创建 FTN(Fec 到 NHLFE)、ILM(传入标签映射)和 NHLFE(下一跳标签转发条目)的 iproutes 命令是什么?

查看上表的命令是什么?

提前致谢。

0 投票
4 回答
48598 浏览

linux - 使用 bash 在 Linux 中获取子网掩码

我正在使用 bash 通过该脚本获取我的机器的 IP 地址:

现在我正在尝试获取这种类型的子网掩码:

但我不知道我该怎么做。

0 投票
1 回答
1680 浏览

load-balancing - Haproxy 网关设置 - 客户端和服务器在同一个子网上

我正在尝试在服务器和客户端之间设置一个 haproxy 网关,以实现完全透明的代理,如下图所示。我的主要目标是提供负载平衡。

有一个简单的应用程序在服务器端侦听端口 25。客户端尝试连接网关机器上的 25 端口,网关上的 haproxy 选择一个可用的服务器,然后将连接重定向到服务器。

这种方法的网络分析产生了如图所示的 tcp 流:客户端在最后重置连接,因为它没有向服务器发送 syn 数据包。

这种 haproxy 用法是真的吗?我的问题与配置有关吗?或者客户端应该直接连接到服务器(这对我来说没有多大意义,但我不确定。如果这是真的,那么 haproxy 将如何干预连接并进行负载平衡)?

编辑:

我开始认为这个问题与网关上的路由和 NAT 有关。所有这三台机器都在同一个子网中,但我已经为客户端和服务器添加了到网关的路由。网关上的规则还有:

现在的问题是我应该在网关中做什么来更改"syn-ack (src: S, dst: C)""syn-ack (src: GW, dst: C)"

TCP流程图

0 投票
1 回答
2332 浏览

networking - OpenStack 实例的端口转发

再会,

今天,我正在寻求将所有传入和传出流量从我的 BareMetal 实例的私有 IP 重定向到最初在安装期间提供给 DevStack 的 IP。

OpenStack BareMetal 云设置

我是怎么到这种境地的?我正在使用能够部署 BareMetal 实例的 OpenStack 环境(浮动 IP:XXX.YYY.88.171,私有 IP:10.140.82.189 [在 eth0])。用于旋转此实例的映像是安装了 DevStack /Master 的 Ubuntu 14.04。安装了 DevStack 的此映像的快照最初是在具有本地 IP:10.140.82.125 [On eth0] 的 BareMetal 上创建的。因此,现在每当您使用此镜像启动实例时,Baremetal OpenStack 环境都会分配一个私有 IP(在本例中为 10.140.82.189),该私有 IP 不同于所有 DevStack 端点 (10.140.82.125) 上包含的 IP。

正如你可以想象的那样,这给我们带来了很多问题。

我能想到的解决这个问题的两种最佳方法是:

  1. 将所有 DevStack 端点从 10.140.82.125 更改为 10.140.82.189(遵循此路线时,每次更新需要考虑很多问题)

  2. 将每个端点的所有流量从 10.140.82.189 转发到 10.140.82.125。

我的进步:

首先,我什至无法访问地平线仪表板(即使它在浏览器中输入时显示),本质上将如下所示:

XXX.YYY.88.171 --> 10.140.82.189:8800 --> 10.140.82.125:8800

出于某种原因,这会显示实例的 Horizo​​n 仪表板。当我输入我的用户名和密码时,我将返回

无法建立与 keystone 端点的连接。

如果我请求,在我 ssh 到 10.140.82.189 的终端中:

因此,似乎 10.140.82.189 在其 API 调用中携带其 IP 并在 10.140.82.125:5000 上为令牌请求 keystone。由于IP不匹配,出现问题,它不允许我登录。

我通过执行以下操作继续执行小端口转发:

现在我可以登录 mi 帐户并在终端中获取端点。不幸的是,在 Horizo​​n 内部,没有从 nova ( http://10.140.82.125:8774 ) 或任何其他服务中检索到任何信息。尝试在 DevStack 环境中启动实例会给我以下信息:

端点列表:显示在评论中

我不断收到错误。例如(使用 devstack 上的屏幕):

在一眼注册:

中子-svc (q-svc)

q-agt:

我可以继续前进。关于前进的建议是什么?

0 投票
0 回答
658 浏览

linux - 带有策略路由的 iptables netfilter 数据包流

我对路由/iptables 管道中的事件顺序有疑问。我先解释一下我的设置。问题在这篇文章的末尾。

我在 Linux 4.4 上使用策略路由和 iptables。

我有两个接口:wan0(面向我的 ISP)和 vpn-crypto(面向 vpn 提供商的 tun 设备)

我想有选择地将一些流量路由到 vpn,其他一切都通过 wan0

我实现策略路由如下:

  • 在 mangle OUTPUT 表中,我为匹配某种模式的新流量设置了一个标记 0xC。出于测试目的,我将流量标记为指向特定 IP 地址 (37.9.239.33)。当然,我还有其他 iptables 的东西,比如 MASQUEARADE,但这与这个问题无关。

    我有一个 iproute2 规则,它将所有“标记”的数据包发送到 vpn:

    0: from all lookup local 190: from all fwmark 0x4/0x4 lookup vpn 400: from all fwmark 0x8/0x8 oif wan0 unreachable 32766: from all lookup main 32767: from all lookup default

    vpn 表仅包含一条规则,并通过 vpn 发送所有内容:

    default via 10.33.0.1 dev vpn-crypto proto static src 10.33.148.125

我使用命令进行测试,ping -c3 37.9.239.33其中 37.9.239.33 是标记为 vpn 的 IP 地址。连接到 wan0 和 vpn-crypto 的两个 tcpdump 会话显示数据包有效地通过 vpn-crypto 发出并返回,正如预期的那样!到目前为止一切顺利,一切正常。

然而,当记录数据包流经 iptables 时,我观察到一个我不理解的奇怪行为:我在 FILTER.OUTPUT 表和 MANGLE.POSTROUTING 表中插入日志跟踪。

我观察到这一系列事件:

FILTER.OUTPUT: IN= OUT=wan0 SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26960 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=1 MARK=0xc MANGLE.POSTROUTING: IN= OUT=vpn-crypto SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26960 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=1 MARK=0xc MANGLE.POSTROUTING: IN= OUT=wan0 SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27049 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=2 FILTER.OUTPUT: IN= OUT=wan0 SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27100 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=2 MARK=0xc MANGLE.POSTROUTING: IN= OUT=vpn-crypto SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27100 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=2 MARK=0xc MANGLE.POSTROUTING: IN= OUT=wan0 SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27193 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=3 FILTER.OUTPUT: IN= OUT=wan0 SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27237 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=3 MARK=0xc MANGLE.POSTROUTING: IN= OUT=vpn-crypto SRC=59.189.21.112 DST=37.9.239.33 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=27237 DF PROTO=ICMP TYPE=8 CODE=0 ID=9649 SEQ=3 MARK=0xc

  1. 我预计由于 MANGLE.OUTPUT 中的标记而导致的重新路由决定发生在 FILTER.OUTPUT 之前,但它似乎发生在之后!事实上,所有 FILTER.OUTPUT 数据包仍然通过 wan0 路由,表明尚未发生重新路由决定。关于这一点,网络上可用的文档分为 50/50。例如:

    两者哪一个是正确的?有人可以对此有所了解吗?

  2. 在 3 次 ping 的上下文中,在 MANGLE.POSTROUTING 表中,我看到 2 个通过wan0路由的意外数据包,这些数据包“未标记”并且似乎与通过vpn-crypto路由的数据包重复。为什么是这样?此外,根据 tcpdump,这些数据包永远不会到达接口(这是正确的)。

    有人可以阐明这种行为吗?

0 投票
1 回答
2305 浏览

networking - 使用 OpenWRT 在路由器上安装 ip 包

我正在使用带有 OpenWRT v10.03.1 的 Linkys WRT54G v3 路由器。我的最终目标是在路由器上使用流量控制tcnetemipiproute2

但是,我的计算机连接到工作网络,路由器通过以太网电缆连接到我的计算机。由于工作限制,我无法将路由器连接到有线或无线互联网。我必须通过我的电脑访问互联网,然后ssh通过PuTTy.

有什么方法可以ip在我的电脑上下载包并推送到路由器上?如果有的话,你能引导我到一个安全的地方下载ip包吗?

谢谢。

0 投票
0 回答
2832 浏览

linux - 使用 ip route add 将组播路由添加到多个设备

TLDR:有没有办法使用“ip route”为多个 NIC 添加多播路由?

我们有软件将绑定到不同 NICS 上不同 IP 地址的两个套接字连接到两个单独的多播组,例如,套接字 1 绑定到 192.168.0.2 并加入多播组 233.255.10.1,而套接字 2 绑定到 10.57.31.2 并加入组播组 239.255.100.1。

我们目前正在使用 bash 脚本(Linux 内核 3.14.39)使用路由在两个网络接口上设置多播路由,例如

并通过 route -n 验证

我最近读到该路由已弃用/过时,我们应该使用 ip route 代替,例如

不幸的是,第二次调用失败并显示“RTNETLINK 答案:文件存在”,当然,在这些调用之后,第二条路由不会出现。

有没有办法使用 ip route 向多个 NIC 添加多播路由?

我可以使用 /8 作为网络掩码吗?例如

但这是有问题的,因为执行此操作的脚本不知道哪个多播地址与哪个设备相关联,并且根据系统配置,它并不总是保证相同。使用我的第一个路由添加示例使这不是问题。

0 投票
2 回答
532 浏览

linux - 具有多个上行链路的 linux ip 路由 SINGLE 接口

尝试设置运行 3 个虚拟机的 Proxmox 机器。它有 3 个公共 ip,但这些 ip 位于单个接口 (eth0) 上。

3 个虚拟机位于地址为 172.16.0.1/24 的网桥 (vmbr0) 上

我已启用 ip 伪装和转发。但我无法弄清楚如何使 3 个虚拟机(172.16.0.2、172.16.0.3、172.16.0.4)中的每一个都通过特定的公共 ips 路由出去。

我已经尝试使用 3 个表设置网关和规则的标准 iproute,但无论我设置什么规则,vm 仍然通过主 ip 路由出去。

问题是 3 个公共 ip 位于完全独立的网络上,因此它们每个都有不同的网关。如果每个公共 ip 都在一个单独的物理接口上,我知道如何使用 iproute 来执行此操作,但是这台机器在一个接口上拥有所有 3 个,并且 iproute 似乎不喜欢那样,因为如果我执行 ip route add default via 23.92.26.1 dev eth0:2 表 node2 然后列出它通过 eth0 显示的所有内容。所以显然 iproute 不喜欢伪接口。我对 iptables 了解不多,我确信有一种方法可以用纯 iptables 做到这一点,但还没有找到任何东西。我所有的谷歌搜索都提出了 iproute 表,就像我说的那样,似乎不适用于 signle 界面。

先感谢您