История изменений
Исправление intelfx, (текущая версия) :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x100/0x100 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
# cat /etc/firewall.user
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N PREROUTING-NEW
iptables -t mangle -N POSTROUTING-NEW
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j PREROUTING-NEW
iptables -t mangle -A PREROUTING-NEW -i wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A PREROUTING-NEW -i wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j POSTROUTING-NEW
iptables -t mangle -A POSTROUTING-NEW -o wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A POSTROUTING-NEW -o wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m addrtype --dst-type local -j MARK --set-mark 0x100/0x100 # localnat
iptables -t nat -A OUTPUT -m mark --mark 0x100/0x100 -j zone_wan_prerouting
Только сейчас он слегка вырожденный — я дропнул второго провайдера, нового ещё не нашёл, а PBR остался. «localnat» — это сабжевый хак.
В чём тогда разница? Можешь всё-таки привести свой полный конфиг с решением этой проблемы?
Исправление intelfx, :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x20/0x20 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
# cat /etc/firewall.user
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N PREROUTING-NEW
iptables -t mangle -N POSTROUTING-NEW
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j PREROUTING-NEW
iptables -t mangle -A PREROUTING-NEW -i wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A PREROUTING-NEW -i wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j POSTROUTING-NEW
iptables -t mangle -A POSTROUTING-NEW -o wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A POSTROUTING-NEW -o wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m addrtype --dst-type local -j MARK --set-mark 0x20/0x20 # localnat
iptables -t nat -A OUTPUT -m mark --mark 0x20/0x20 -j zone_wan_prerouting
Только сейчас он слегка вырожденный — я дропнул второго провайдера, нового ещё не нашёл, а PBR остался. «localnat» — это сабжевый хак.
В чём тогда разница? Можешь всё-таки привести свой полный конфиг с решением этой проблемы?
Исправление intelfx, :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x100/0x100 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
# cat /etc/firewall.user
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N PREROUTING-NEW
iptables -t mangle -N POSTROUTING-NEW
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j PREROUTING-NEW
iptables -t mangle -A PREROUTING-NEW -i wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A PREROUTING-NEW -i wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j POSTROUTING-NEW
iptables -t mangle -A POSTROUTING-NEW -o wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A POSTROUTING-NEW -o wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m addrtype --dst-type local -j MARK --set-mark 0x20/0x20 # localnat
iptables -t nat -A OUTPUT -m mark --mark 0x20/0x20 -j zone_wan_prerouting
Только сейчас он слегка вырожденный — я дропнул второго провайдера, нового ещё не нашёл, а PBR остался. «localnat» — это сабжевый хак.
В чём тогда разница? Можешь всё-таки привести свой полный конфиг с решением этой проблемы?
Исправление intelfx, :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x100/0x100 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
# cat /etc/firewall.user
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N PREROUTING-NEW
iptables -t mangle -N POSTROUTING-NEW
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j PREROUTING-NEW
iptables -t mangle -A PREROUTING-NEW -i wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A PREROUTING-NEW -i wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j POSTROUTING-NEW
iptables -t mangle -A POSTROUTING-NEW -o wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A POSTROUTING-NEW -o wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m addrtype --dst-type local -j MARK --set-mark 0x20/0x20 # localnat
iptables -t nat -A OUTPUT -m mark --mark 0x20/0x20 -j zone_wan_prerouting
Только сейчас он слегка вырожденный — я дропнул второго провайдера, нового ещё не нашёл, а PBR остался.
В чём тогда разница? Можешь всё-таки привести свой полный конфиг?
Исправление intelfx, :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x100/0x100 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
# cat /etc/firewall.user
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N PREROUTING-NEW
iptables -t mangle -N POSTROUTING-NEW
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j PREROUTING-NEW
iptables -t mangle -A PREROUTING-NEW -i wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A PREROUTING-NEW -i wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -m connmark --mark 0x00/0x10 -j POSTROUTING-NEW
iptables -t mangle -A POSTROUTING-NEW -o wan0 -j CONNMARK --set-mark 0x11 # isp1
#iptables -t mangle -A POSTROUTING-NEW -o wan1 -j CONNMARK --set-mark 0x12 # isp2
iptables -t mangle -A PREROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -m connmark --mark 0x10/0x10 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m addrtype --dst-type local -j MARK --set-mark 0x20/0x20 # localnat
iptables -t nat -A OUTPUT -m mark --mark 0x20/0x20 -j zone_wan_prerouting
Только сейчас он слегка вырожденный — я дропнул второго провайдера, а нового ещё не нашёл.
В чём тогда разница? Можешь всё-таки привести свой полный конфиг?
Исходная версия intelfx, :
Таблица main идет в начале, defgw прописаны в отдельных таблицах, правила from $MY_ISP_IP (у меня два прова) заворачивают в соответствующие таблицы, потом правила для маркируемых пакетов, потом для всего остального from all в таблицы где defgw.
Так блин, у меня примерно такой же мультихоминг на PBR:
# ip rule
0: from all lookup local
1000: from all fwmark 0x100/0x100 lookup localnat
10000: from 1.2.3.4 lookup isp1
20000: from all to 1.2.3.4/24 lookup isp1
32766: from all lookup main
32767: from all lookup default
40000: from all fwmark 0x11/0x1f lookup isp1
40002: from all fwmark 0/0x1f lookup isp1
90013: from all iif lo lookup isp1
90013: from all iif lo lookup isp1
# ip route show table main
10.0.0.0/24 dev lan0 proto kernel scope link src 10.0.0.1
# ip route show table isp1
default via 1.2.3.1 dev wan0 proto static src 1.2.3.4
1.2.3.0/24 dev wan0 proto static scope link
Только сейчас он слегка вырожденный — я дропнул второго провайдера, а нового ещё не нашёл.