问题标签 [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.
go - 哪个字段对应于 netlink 中的“dev”(设备)参数?
我正在尝试使用netlink包添加新路由。我需要的等价物是ip route add $P1_NET dev $IF1 src $IP1 table $T1
. 问题是我不知道哪个字段对应于dev
参数。某处是否有映射,或者我可以使用接口索引而不是它的名称(“dev”)?
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 支持
推???(如何添加前缀到推送操作?)
交换???(如何添加标签交换动作?)
流行音乐???(如何添加标签弹出动作?)
???
节目???(如何显示标签交换路由?)
???
有人可以帮我吗 。提前致谢。
linux-kernel - 内核中的 FTN、ILM 和 NHLFE
最新内核 4.1 支持 MPLS 数据路径。IpRoute2 还添加了在内核中添加 mpls 路由的命令。
创建 FTN(Fec 到 NHLFE)、ILM(传入标签映射)和 NHLFE(下一跳标签转发条目)的 iproutes 命令是什么?
查看上表的命令是什么?
提前致谢。
linux - 使用 bash 在 Linux 中获取子网掩码
我正在使用 bash 通过该脚本获取我的机器的 IP 地址:
现在我正在尝试获取这种类型的子网掩码:
但我不知道我该怎么做。
load-balancing - Haproxy 网关设置 - 客户端和服务器在同一个子网上
我正在尝试在服务器和客户端之间设置一个 haproxy 网关,以实现完全透明的代理,如下图所示。我的主要目标是提供负载平衡。
有一个简单的应用程序在服务器端侦听端口 25。客户端尝试连接网关机器上的 25 端口,网关上的 haproxy 选择一个可用的服务器,然后将连接重定向到服务器。
这种方法的网络分析产生了如图所示的 tcp 流:客户端在最后重置连接,因为它没有向服务器发送 syn 数据包。
这种 haproxy 用法是真的吗?我的问题与配置有关吗?或者客户端应该直接连接到服务器(这对我来说没有多大意义,但我不确定。如果这是真的,那么 haproxy 将如何干预连接并进行负载平衡)?
编辑:
我开始认为这个问题与网关上的路由和 NAT 有关。所有这三台机器都在同一个子网中,但我已经为客户端和服务器添加了到网关的路由。网关上的规则还有:
现在的问题是我应该在网关中做什么来更改"syn-ack (src: S, dst: C)"
为"syn-ack (src: GW, dst: C)"
?
networking - OpenStack 实例的端口转发
再会,
今天,我正在寻求将所有传入和传出流量从我的 BareMetal 实例的私有 IP 重定向到最初在安装期间提供给 DevStack 的 IP。
我是怎么到这种境地的?我正在使用能够部署 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。
正如你可以想象的那样,这给我们带来了很多问题。
我能想到的解决这个问题的两种最佳方法是:
将所有 DevStack 端点从 10.140.82.125 更改为 10.140.82.189(遵循此路线时,每次更新需要考虑很多问题)
将每个端点的所有流量从 10.140.82.189 转发到 10.140.82.125。
我的进步:
首先,我什至无法访问地平线仪表板(即使它在浏览器中输入时显示),本质上将如下所示:
XXX.YYY.88.171 --> 10.140.82.189:8800 --> 10.140.82.125:8800
出于某种原因,这会显示实例的 Horizon 仪表板。当我输入我的用户名和密码时,我将返回
无法建立与 keystone 端点的连接。
如果我请求,在我 ssh 到 10.140.82.189 的终端中:
因此,似乎 10.140.82.189 在其 API 调用中携带其 IP 并在 10.140.82.125:5000 上为令牌请求 keystone。由于IP不匹配,出现问题,它不允许我登录。
我通过执行以下操作继续执行小端口转发:
现在我可以登录 mi 帐户并在终端中获取端点。不幸的是,在 Horizon 内部,没有从 nova ( http://10.140.82.125:8774 ) 或任何其他服务中检索到任何信息。尝试在 DevStack 环境中启动实例会给我以下信息:
端点列表:显示在评论中
我不断收到错误。例如(使用 devstack 上的屏幕):
在一眼注册:
中子-svc (q-svc)
q-agt:
我可以继续前进。关于前进的建议是什么?
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
我预计由于 MANGLE.OUTPUT 中的标记而导致的重新路由决定发生在 FILTER.OUTPUT 之前,但它似乎发生在之后!事实上,所有 FILTER.OUTPUT 数据包仍然通过 wan0 路由,表明尚未发生重新路由决定。关于这一点,网络上可用的文档分为 50/50。例如:
https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html,第 6 章,表 6-2,说明重新路由决定发生在 filter.output 之前
http://www.aptalaska.net/~jclive/IPTablesFlowChart.pdf,声明重新路由决定发生在 filter.output 之后
两者哪一个是正确的?有人可以对此有所了解吗?
在 3 次 ping 的上下文中,在 MANGLE.POSTROUTING 表中,我看到 2 个通过wan0路由的意外数据包,这些数据包“未标记”并且似乎与通过vpn-crypto路由的数据包重复。为什么是这样?此外,根据 tcpdump,这些数据包永远不会到达接口(这是正确的)。
有人可以阐明这种行为吗?
networking - 使用 OpenWRT 在路由器上安装 ip 包
我正在使用带有 OpenWRT v10.03.1 的 Linkys WRT54G v3 路由器。我的最终目标是在路由器上使用流量控制tc
(netem
ip
iproute2
但是,我的计算机连接到工作网络,路由器通过以太网电缆连接到我的计算机。由于工作限制,我无法将路由器连接到有线或无线互联网。我必须通过我的电脑访问互联网,然后ssh
通过PuTTy
.
有什么方法可以ip
在我的电脑上下载包并推送到路由器上?如果有的话,你能引导我到一个安全的地方下载ip
包吗?
谢谢。
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 作为网络掩码吗?例如
和
但这是有问题的,因为执行此操作的脚本不知道哪个多播地址与哪个设备相关联,并且根据系统配置,它并不总是保证相同。使用我的第一个路由添加示例使这不是问题。
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 界面。
先感谢您