LINUX.ORG.RU

История изменений

Исправление 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

Только сейчас он слегка вырожденный — я дропнул второго провайдера, а нового ещё не нашёл.