Articles of iproute2

根据系统用户更改源IP地址

我想让某个用户有一个特定的源IP地址。 为此,我向networking接口添加了辅助IP地址,并试图使用ip6tables和策略路由来强制使用源IP。 概要: 所有IPv6stream量都通过IPv4 OpenVPN接口(tap0)路由,网关是2001:db8::1 。 如果用户是someuser用户,则源地址必须是2001:db8::3 否则,源地址是2001:db8::2 。 默认路由和地址设置如下: ip -6 addr add 2001:db8::2/112 dev tap0 ip -6 route add default via 2001:db8::1 src 2001:db8::2 dev tap0 对于someuser路由器,我标记所有传出的数据包,并尝试使用单独的路由表路由那些具有不同源地址的数据包。 这些设置与: ip6tables -t mangle -A OUTPUT -m owner –uid-owner someuser -j MARK –set-mark 123 ip -6 rule add fwmark 123 table 1002 ip -6 addr add […]

如何使用systemd做策略路由?

我需要在使用systemd的CoreOS实例上进行策略路由。 但是我还没有find关于如何使用systemd-network的文档或例子。 我怎么做? 到目前为止,我只设法通过向一个新文件/etc/iproute2/rt_tables添加一个条目来创build另一个路由表,并且它被命令行工具识别。 最终,我在同一子网上有两个独立的路由器。 我想确保从一台路由器发往我的主机的stream量由同一台路由器返回。

TC哈希filter – 单个规则删除

对于stream量整形,我目前使用的设置看起来完全像LARTC的设置,在此页面上: http://lartc.org/howto/lartc.adv-filter.hashing.html 我有一个简单的问题 – 每次我想修改哈希表中的东西(如分配一个IP到不同的flowid),我需要删除整个filter表,并再次添加它filter筛选器。 (我实际上不是手工做的,我有一个很好的程序,这对我来说…但还是…)有一个问题 – 我有大约10kfilter分配这种方式,删除和重新填充整个filtertable可能会变得很长,这对于stream量整形并不是很好。 我的程序可以很容易地删除只需要删除的规则(因此减less了几个命令和毫秒的整个问题),但我根本不知道只删除一个哈希规则的命令。 我的tcfilter显示: filter parent 1: protocol ip pref 1 u32 filter parent 1: protocol ip pref 1 u32 fh 2: ht divisor 256 filter parent 1: protocol ip pref 1 u32 fh 2:a:800 order 2048 key ht 2 bkt a flowid 1:101 match 0a0a0a0a/ffffffff at 16 filter […]

TUN设备为什么没有BROADCAST标志?

在Linux中创buildTUN设备时,在我的机器上创build的TUN设备具有以下标志: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 很明显MULTICAST被列在那里,但没有广播。 由于TUN设备使用IP数据包,处理TUN设备文件的程序应决定如何处理发送到广播地址的数据包。 此外,即使BROADCAST标志未在此设备上列出,在TUN设备上将数据包发送到广播地址的应用也是合法的。 那么为什么TUN设备没有BROADCAST标志? 编辑:抱歉的混乱。 通过TUN设备,我并不特意指OpenVPN用于隧道的方式。 我的意思是Linux(或其他Unix)中的TUN设备,如下所述: http : //www.kernel.org/doc/Documentation/networking/tuntap.txt

Iproute2工具与conntrack工具

我有一个Linuxnetworking,它被设置为networking的防火墙/网关。 只是想知道为什么SS和其他iproute2工具显示比iptables conntrackless得多。 是否因为路由器function只在内核中发生? ss -na 只显示两个已build立的连接 conntrack -L -n 显示18build立连接。

高级路由问题

我有2个互联网链接使用2个ADSL路由器,我需要访问互联网的192.168.0.0/24networking。 我必须根据端口号,协议,使用iproute2和iptables在linux路由器上路由出站stream量。 这是我的networking: (ISP-1) (ISP-2) Dynamic public IP Dynamic public IP | | +—————+ +—————+ |ADSL Router (1)| |ADSL Router (2)| +—————+ +—————+ | | 192.168.1.1 192.168.2.1 | | | | | | | +——————+ | | | | | 192.168.1.2 –|eth1 eth2|– 192.168.2.2 | | | Linux Router | | | | eth0 | […]

如何将界面移出networking命名空间?

如果我将界面临时移动到netns中 ip link set eth10 netns myns 那么它不再在根中可见,只能在命名空间myns中看到。 我怎么把它移回来,就像(这些显然不存在): ip link unset eth10 也许 ip link set eth10 netns root 或类似?

黑洞路由私有内部网stream量

我有一个私人networking与一些Linux路由器都通过OSPF路由共享。 我如何黑洞私人networking范围,我没有路线? 换句话说,我想确保我不会将10.0.0.0/8,172.16.0.0/12或192.168.0.0/24路由到默认网关。 我不能只为这些networking创build静态汇(黑洞)路由,因为私有范围之一内的networking可能会通过OSPF进行广播。 我可以使用netfilter来丢弃默认的GW连接接口的所有stream量,如果它在私人范围内,但我认为iproute2 / linux可能有一个更简单或更“正确”的解决scheme。

高级dynamic路由与外部程序

我需要build立一个系统,在这个系统中,我可以根据许多参数(如端口/协议等)来发送数据包,这些参数在某种程度上是“正常”的,而且还有其他方面,比如队列长度和其他外部因素。 我的路由器由两个内部接口(802.11)和两个外部接口(一个ADSL,一个LTE)组成。 所以我想通过一个外部程序来检查每个数据包,并决定它应该被路由的接口。 我看了一下iproute2,但没有find任何方法将每个数据包传递给外部程序,或者以某种方式为每个数据包dynamicselect路由。 所以问题是:做这件事的最好方法是什么? 有没有工具可以朝这个方向发展,还是我应该依靠自己制造的东西,并通过Linux标准工具传递数据包?

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

我们有2个不同的ISP连接。 我们以前的“IT人”就是这样设置我们的防火墙: 当启动时执行/etc/rc.local时,它执行了一系列ip rule add和ip route add命令,以便路由某些内部主机以使用某些ISP连接。 然后在/etc/rc.local的最后,他执行了防火墙生成Firewall Builder生成的iptables防火墙规则。 这些iptables规则同时设置了策略和NAT规则。 我不明白,为什么他使用iproute2来指定规则和路由,但也指定iptables NAT规则? 他为什么不把这两样东西全部用完呢? 他可以摆脱iproute2规则和路由,只是把所有这些相同的规则到iptables NAT设置?