Если ты имеешь ввиду заменить на --set-mark, то в скрипте, контолирующем состояние соединений, оно и так --set-mark.
# Variables for dual-wan balancing script
nbnnet=$(cat /etc/network/nbn.net)
iftt=vlan3
gwtt=31.130.39.1
ttnet=$(cat /etc/network/tt.net)
nettt="192.168.10.128/26"
netnbn="192.168.10.192/26"
net29="213.141.136.40/29"
marktt="0x2"
marknbn="0x3"
mark29="0x4"
# Functions
markfunc() {
iptables -t mangle -A PREROUTING -s $nettt -j MARK --set-mark $marknbn
iptables -t mangle -A PREROUTING -s $netnbn -j MARK --set-mark $marktt
for nbnadd in $nbnnet; do
iptables -t mangle -A PREROUTING -s $netnbn -d $nbnadd -j MARK --set-mark $marknbn
done
for ttadd in $ttnet; do
iptables -t mangle -A PREROUTING -s $nettt -d $ttadd -j MARK --set-mark $marktt
done
ip rule add fwmark $marktt t comlan
ip rule add fwmark $marknbn t konsul
}
unmarkfunc() {
iptables -t mangle -F PREROUTING
ip rule del fwmark $marktt t comlan
ip rule del fwmark $marknbn t konsul
ip rule del fwmark 0x3 t comlan
}
# Comlan routing. Table comlan.
comlanrt() {
ip rule add from $(ifconfig vlan3 | awk -F ":" '/inet addr/{split($2,a," ");print a[1]}') table comlan
}
# Konsul routing. Table konsul.
konsulrt() {
ip rule add from $(ip a |grep ppp0 |tail -1 | awk '{print $2}') table konsul
ip rule add from 213.141.136.40/29 t konsul
}
# Flushing route tables
flushtbl() {
ip r f t comlan
ip r f t konsul
ip r f cache
ip rule del table konsul
ip rule del table konsul
ip rule del table comlan
ip rule del table comlan
}
# Mail route tt.degunino
mail_on() {
ip rule add from 192.168.10.1 lookup comlan
iptables -t mangle -I OUTPUT 1 -p tcp -m multiport --dports 25,110,143,465,587,993 -j MAIL
iptables -t mangle -A MAIL -j MARK --set-mark $marktt
}
mail_off() {
ip rule del from 192.168.10.1 lookup comlan
iptables -t mangle -D OUTPUT -p tcp -m multiport --dports 25,110,143,465,587,993 -j MAIL
iptables -t mangle -F MAIL
}
Почему iptables-save отдаёт именно xmark, интересно, спасибо, что обратил внимание. Версия iptables выше.
Хотя, в принципе, отличие mark от xmark, следующее: грубо говоря mark всегда ставит метку в пакете, даже если он был помечен раннее, а xmark смотрит, есть ли уже метка, если нет - метит, если уже есть - метку не ставит.
Пользователь решил продолжить мысль 21 Июля 2012, 20:44:11:
Хм, у тебя CONNMARK, попробуем с ним.
Пользователь решил продолжить мысль 21 Июля 2012, 21:06:42:
Похоже, что с CONNMARK заработало. Будем еще посмотреть..
Пользователь решил продолжить мысль 21 Июля 2012, 21:27:58:
Нет, то же самое. В общем актуально.