标签: iproute2

来自主机但不是来自命名空间的基于 Macvlan 的接口 ping

[编辑]

生产系统目前是一个混合物理和基于 ESXi 的系统。即使在预生产环境中,我们显然也永远不会使用 virtualbox!在这里使用它只是为了直接在我的桌面上快速缩小问题的范围。

感谢您对元数据“暂停”的解释!

[/编辑]

我的设置:

  1. 专用网络vboxnet110.0.7.0/24
  2. 1 主机,ubuntu 桌面
  3. 1 台虚拟机,ubuntu 服务器(VirtualBox)

寻址布局:

  1. 主机:10.0.7.1
  2. 虚拟机:10.0.7.101
  3. 虚拟机MAC命名空间:10.0.7.102

在 上VM,我运行了以下命令:

ip netns add mac                        # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac
Run Code Online (Sandbox Code Playgroud)

mac命名空间上,在 VM 内部:

ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Run Code Online (Sandbox Code Playgroud)

所以我们基本上最终得到:(比如 Inception ?) …

networking linux namespaces iproute2

10
推荐指数
1
解决办法
6230
查看次数

通过 VM iproute 多个 ADSL 负载均衡器

很长一段时间(2 年?)我一直在运行具有非常基本的出站负载平衡功能的虚拟机(Ubuntu 12.04 服务器),从不同的 ADSL 路由器发送不同的出站连接。

通过使用没有 NAT 伪装的 iproute 进行简单配置,NAT 由出站 ADSL 路由器本身管理,允许连接绕过负载平衡路由器 VM 直接路由回发送方。路由器 VM 上也没有防火墙规则 (iptables)。

echo 1 > /proc/sys/net/ipv4/ip_forward

# flush initially
ip route flush cache

# remove whatever is there for the default to begin with
ip route delete default

# default load balancing rule
ip route add default scope global \
    nexthop via ${ROUTER2} dev ${INTERFACE} weight 6 \
    nexthop via ${ROUTER1} dev ${INTERFACE} weight 4
Run Code Online (Sandbox Code Playgroud)

这在很长一段时间内一直运作良好。

我最近将负载均衡器(Ubuntu 12.04 服务器虚拟机)升级 (do-release-upgrade -d) 到 Ubuntu …

ubuntu load-balancing upload iproute2

10
推荐指数
1
解决办法
930
查看次数

iproute2 规则和 iptables NAT...有什么区别?

我们有 2 个不同的 ISP 连接。我们以前的“IT 人员”像这样设置我们的防火墙:

/etc/rc.local被启动时执行的,但它确实一堆ip rule addip route add命令以路线某些内部主机使用某些ISP的连接。

然后在最后/etc/rc.local,他执行了我们iptables生成的防火墙规则Firewall Builder。这些iptables规则中设置了策略和 NAT 规则。

我不明白的是,为什么他iproute2用来指定规则和路由,但也指定 NAT 规则iptables?他为什么不把这一切都放在一个或另一个中,而不是同时使用它们?他能否摆脱iproute2规则和路由,并将所有这些相同的规则放入iptablesNAT 设置中?

firewall iptables iproute2

9
推荐指数
1
解决办法
9821
查看次数

如何在 Linux 上实现按包多路径路由?

3.6 之前的 Linux 内核使用路由缓存来进行 IPv4 多路径路由,这意味着在两个单独的线路/ISP 之间路由非常容易。从 3.6 开始,算法改为按数据包,这意味着需要一些路由表/规则/iptables 标记技巧来实现两条线路/ISP。

但是,如果您有两条线路与同一个 ISP 可以以平衡/故障转移方式在每个数据包的基础上沿着两条线路路由一个 IP,那么从 3.6 开始,您可以轻松实现线路绑定(在 IP 级别),因为每个数据包在两个方向上的路由。

从 4.4 开始,内核再次更改为基于源地址和目标地址散列的基于流的负载平衡。

我目前正在运行内核 4.4.36,并且正在通过 PPPoE 连接使用多路径路由。我的来自 ISP 的下行流量基于每个数据包通过两条单独的线路进行路由(一个 IP 沿两条线路路由)。这使我的下载速度比单个线路的速度更快。几乎两条线的速度加在一起。它运行良好,Skype 视频、VoIP (UDP)、YouTube 等都运行良好。

由于拥有如此良好的下游体验,我想尝试上游,但我的上游流量是根据较新的基于流的算法在两个 ppp 设备(具有相同的 IP 地址)之间路由的。这意味着我无法达到比单行速度更快的上传速度。

有没有办法将当前内核配置为使用 per-packet 算法?或者其他一些方法来实现每包多路径路由?我是否需要恢复到较旧的内核(由于其他各种原因我不想这样做)?

我的 ISP 不支持多链路 ppp。

如果相关,我目前正在 Raspberry Pi 3 上运行 Arch Linux ARMv7。

linux routing linux-kernel iproute2

9
推荐指数
1
解决办法
3880
查看次数

本地路由表有什么用?

我想了解什么是本地路由表。

如果我使用以下命令在其中添加一个随机地址:

sudo ip route add to local <any-ip-address> dev <network interface>
Run Code Online (Sandbox Code Playgroud)

现在我可以 ping 这个地址,但是 ifconfig 列出的接口没有使用这个地址。

例子:

$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.

--- 192.168.22.22 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

$ sudo ip route add to local 192.168.22.22 dev wlp2s0
$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.
64 bytes from 192.168.22.22: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.22.22: icmp_seq=2 …
Run Code Online (Sandbox Code Playgroud)

routing route ifconfig linux-networking iproute2

9
推荐指数
1
解决办法
1万
查看次数

ip 链接集未分配 IP 地址,但 ifup 分配

由于 ip 设置为替换 ifconfig,我试图让自己习惯使用 ip 命令套件。我正在尝试启用我的 NIC

 ip link set eth3 up 
Run Code Online (Sandbox Code Playgroud)

这不会正确分配 IPv4 地址。但是,如果我跑

 ifup eth3
Run Code Online (Sandbox Code Playgroud)

它工作正常。我不确定到底是什么问题或从哪里开始。

networking linux ifconfig iproute2

8
推荐指数
2
解决办法
1万
查看次数

用于在 ip 规则/ ip 路由中测试 fwmark 的命令行实用程序?

我正在尝试找到一种工具,它可以让我找到进入设备的数据包将采用的路由,并且具有特定的目标地址。

ip route get 将完成我正在寻找的大部分工作。

问题是我想测试当数据包在相当复杂的路由环境中具有 fwmark 时是否找到了正确的路由。

理想的工具将允许使用 fwmark(或其他属性)欺骗通用数据包,并且可以通过整个 IpTables 链和 ip route / ip 规则集发送它,或者只是找到将返回的路由。

我希望能够运行一个命令来验证一组特定的路由是否按预期工作。

最低要求类似于ip route get但具有 fwmark 支持。

虽然,在这一点上,任何测试路由实用程序的建议将不胜感激!随着路线的堆积,它变得相当复杂。

ip iptables testing iproute2

8
推荐指数
1
解决办法
5281
查看次数

利用同一网络上的两个网关与负载平衡相同的接口

我的设置是单个接口和单个网络上的两个 ISP。我可以将我的默认网关设置为192.168.0.1192.168.1.250并且要么工作。

编辑:网络掩码(如评论中所见)is 255.255.254.0-正如我所说,它们位于同一个子网上。

我的愿望是通过一些负载平衡来利用它们。我试图遵循这里给出的建议 https://serverfault.com/a/96586

#!/bin/sh                                                                                                                                                                                                                        
ip route show table main | grep -Ev '^default' \                                                                                                                                                                                 
   | while read ROUTE ; do                                                                                                                                                                                                       
     ip route add table ISP1 $ROUTE                                                                                                                                                                                              
done                                                                                                                                                                                                                             
ip route add default via 192.168.1.250 table ISP1                                                                                                                                                                                
ip route add default via 192.168.0.1 table ISP2                                                                                                                                                                                  

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark                                                                                                                                                                      
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT                                                                                                                                                                    
iptables -t mangle -A PREROUTING -j MARK …
Run Code Online (Sandbox Code Playgroud)

iptables load-balancing gateway iproute2

7
推荐指数
1
解决办法
4479
查看次数

带有外部程序的高级动态路由

我需要构建一个系统,在该系统中我能够根据许多参数(例如端口/协议等)路由数据包,这些参数在某种程度上是“正常的”,但也包括其他方面,例如队列长度和其他外部因素. 我的路由器由 2 个内部接口 (802.11) 和两个外部接口(一个 ADSL,一个 LTE)组成。所以我想通过外部程序检查每个数据包,并决定应该路由哪个接口。

我看了一下iproute2,但我没有找到任何方法将每个数据包传递给外部程序,或者以某种方式为每个数据包动态选择路由。

所以问题是:做到这一点的最佳方法是什么?是否已经有朝这个方向发展的工具,还是我应该依靠自己制作的东西,并通过 linux 标准工具传递数据包?

linux routing iptables tc iproute2

6
推荐指数
2
解决办法
1037
查看次数

黑洞路由私有内网流量

我有一个带有少数 Linux 路由器的专用网络,所有路由都通过 OSPF 共享。如何黑洞我没有路由的专用网络范围?

换句话说,我想确保我永远不会将 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/24 路由​​到默认网关。我不能只为这些网络创建静态接收器(黑洞)路由,因为其中一个私有范围内的网络可能会通过 OSPF 进行广告。

如果在私有范围内,我可以使用 netfilter 来删除所有流出默认 GW 连接接口的流量,但我认为 iproute2/linux 可能有一个更简单或更“正确”的解决方案。

linux routing blackhole iproute2

5
推荐指数
1
解决办法
2599
查看次数