linux内核 路由 编程,linux – 3.6后内核中的多路径路由

“相对容易”是一个困难的术语,但你可能会

>为每个链接设置路由表 – 每个链接一个表,使用一个默认网关

>使用netfilter在单个流的所有数据包上标记相同的标记

>使用ip规则表根据标记通过不同的路由表路由数据包

>使用多次下箍加权路由来平衡网关/链路上的第一个会话数据包.

1.路由规则(RPDB和FIB)

ip route add default via lable link1

ip route add dev table link1

ip route add default via table link2

ip route add dev table link2

/sbin/ip route add default proto static scope global table lb \

nexthop via weight 1 \

nexthop via weight 1

ip rule add prio 10 table main

ip rule add prio 20 from table link1

ip rule add prio 21 from table link2

ip rule add prio 50 fwmark 0x301 table link1

ip rule add prio 51 fwmark 0x302 table link2

ip rule add prio 100 table lb

ip route del default

2.防火墙规则(使用ipset强制“流”LB模式)

ipset create lb_link1 hash:ip,port,ip timeout 1200

ipset create lb_link2 hash:ip,ip timeout 1200

# Set firewall marks and ipset hash

iptables -t mangle -N SETMARK

iptables -t mangle -A SETMARK -o -j MARK --set-mark 0x301

iptables -t mangle -A SETMARK -m mark --mark 0x301 -m set !

--match-set lb_link1 src,dstport,dst -j SET \

--add-set lb_link1 src,dst

iptables -t mangle -A SETMARK -o -j MARK --set-mark 0x302

iptables -t mangle -A SETMARK -m mark --mark 0x302 -m set !

--match-set lb_link2 src,dst -j SET \

--add-set lb_link2 src,dst

# Reload marks by ipset hash

iptables -t mangle -N GETMARK

iptables -t mangle -A GETMARK -m mark --mark 0x0 -m set --match-set

lb_link1 src,dst -j MARK --set-mark 0x301

iptables -t mangle -A GETMARK -m mark --mark 0x0 -m set --match-set

lb_link2 src,dst -j MARK --set-mark 0x302

# Defining and save firewall marks

iptables -t mangle -N CNTRACK

iptables -t mangle -A CNTRACK -o -m mark --mark 0x0 -j SETMARK

iptables -t mangle -A CNTRACK -o -m mark --mark 0x0 -j SETMARK

iptables -t mangle -A CNTRACK -m mark ! --mark 0x0 -j CONNMARK --save-mark

iptables -t mangle -A POSTROUTING -j CNTRACK

# Reload all firewall marks

# Use OUTPUT chain for local access (Squid proxy,for example)

iptables -t mangle -A OUTPUT -m mark --mark 0x0 -j CONNMARK --restore-mark

iptables -t mangle -A OUTPUT -m mark --mark 0x0 -j GETMARK

iptables -t mangle -A PREROUTING -m mark --mark 0x0 -j CONNMARK --restore-mark

iptables -t mangle -A PREROUTING -m mark --mark 0x0 -j GETMARK

您可能需要按照netfilter邮件列表讨论了解上述的一些变体.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值