( ubul_ | 2020. 07. 01., sze – 10:45 )

Már írták, de én is csináltam hasonlót policy routinggal. LARTC-ben leírják. Meg nem nevezett okokból több IP címre kellett szétszednem egy host forgalmát.

Nem mondom, hogy magától értetődő, de amit connection mark-al meg tudsz jelölni, azt bele tudod irányítani egy routing table-be, aminek a default gateway-je más és más eszközön lehet. Ahogy látom van cgroup match iptables-ben, tehát az alapján is megoldható.

Kb. így állítottam be:

echo 101 t1 >> /etc/iproute2/rt_tables
echo 102 t2 >> /etc/iproute2/rt_tables
ip route add default via $GW1 dev ppp0 table t1
ip route add default via $GW2 dev ppp1 table t2
ip rule from $IP1 table t1
ip rule from $IP2 table t2
ip rule fwmark 1 table t1
ip rule fwmark 2 table t2
ip route add default scope global  \
   nexthop via $GW1 dev ppp0 weight 1\
   nexthop via $GW2 dev ppp1 weight 1  

iptables –t mangle –A OUTPUT –m conntrack –ctstate NEW –m statistic –mode nth –every 2 –packet 0 –j CONNMARK –set-xmark 1
iptables –t mangle –A OUTPUT –m conntrack –ctstate NEW –m statistic –mode nth –every 2 –packet 1 –j CONNMARK –set-xmark 2
iptables –t mangle –A OUTPUT –restore-xmark # copy connection mark to packet mark
iptables –t nat –A POSTROUTING –m mark –mark 1 –j SNAT –to-source $IP1 –random
iptables –t nat –A POSTROUTING –m mark –mark 2 –j SNAT –to-source $IP2 –random