vários provedores linux nat configuration

2

Eu tenho o linux box que serve como um roteador / firewall e tem 2 provedores de internet conectados. Eu gostaria de fazer o compartilhamento de carga com o failover usando-o. Eu fiz tal coisa há muitos anos e foi bem simples - basta adicionar 2 tabelas de roteamento para 2 conexões e depois usar 2 rotas padrão com o peso necessário:

 ip route add default scope global nexthop via 1.2.3.4 dev dev100 weight 10

E, em seguida, o linux adicionará rotas aleatoriamente ao cache, dividindo as conexões entre os links.

Mas agora eu descobri que ele não funciona mais com o linux 3.16, e não há mais cache de rota e todos os meus scripts antigos não estão funcionando e não consigo configurar a conexão.

Minha configuração é:

-------------
- ip route list table prov1
default via 217.147.175.129 dev eth1
46.164.150.48/29 dev eth2  scope link  src 46.164.150.51
127.0.0.0/8 dev lo  scope link
172.16.0.0/16 dev br0  scope link  src 172.16.1.1
217.147.175.128/25 dev eth1  scope link  src 217.147.175.165
-------------
- ip route list table prov2
default via 46.164.150.49 dev eth2
46.164.150.48/29 dev eth2  scope link  src 46.164.150.51
127.0.0.0/8 dev lo  scope link
172.16.0.0/16 dev br0  scope link  src 172.16.1.1
217.147.175.128/25 dev eth1  scope link  src 217.147.175.165
-------------
- ip route list table main
default
        nexthop via 217.147.175.129  dev eth1 weight 10
        nexthop via 46.164.150.49  dev eth2 weight 10
46.164.150.48/29 dev eth2  proto kernel  scope link  src 46.164.150.51
172.16.0.0/16 dev br0  proto kernel  scope link  src 172.16.1.1
176.37.229.77 via 217.147.175.129 dev eth1
195.12.244.0/22 via 217.147.175.129 dev eth1
213.248.127.0/24 via 217.147.175.129 dev eth1
217.147.175.128/25 dev eth1  proto kernel  scope link  src 217.147.175.165
239.0.0.0/8 dev br0  scope link
--------------
- ip route list table default
--------------------
- ip rule list
0:      from all lookup local
32756:  from all fwmark 0xb iif br0 lookup prov2
32757:  from all fwmark 0xa iif br0 lookup prov1
32758:  from 46.164.150.51 lookup prov2
32760:  from 217.147.175.165 lookup prov1
32766:  from all lookup main
32767:  from all lookup default

 cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
10       prov1
11       prov2

Mas com essa configuração, tudo está funcionando bem no próprio host, mas não funciona para IPs NATs por trás desse host. Para ser mais específico - o que eu vejo do host NATed:

vik@Pro:~ $ ping 193.193.193.100
PING 193.193.193.100 (193.193.193.100): 56 data bytes
64 bytes from 193.193.193.100: icmp_seq=0 ttl=59 time=3.737 ms
64 bytes from 193.193.193.100: icmp_seq=1 ttl=59 time=4.198 ms
64 bytes from 193.193.193.100: icmp_seq=2 ttl=59 time=3.934 ms
Request timeout for icmp_seq 3
64 bytes from 193.193.193.100: icmp_seq=4 ttl=60 time=3.650 ms
64 bytes from 193.193.193.100: icmp_seq=5 ttl=60 time=3.616 ms
Request timeout for icmp_seq 6
64 bytes from 193.193.193.100: icmp_seq=7 ttl=60 time=3.509 ms
64 bytes from 193.193.193.100: icmp_seq=8 ttl=60 time=3.417 ms
64 bytes from 193.193.193.100: icmp_seq=9 ttl=60 time=3.635 ms
Request timeout for icmp_seq 10

Como você pode notar, muitos pacotes foram perdidos. E os hosts por trás desse roteador Linux não podem abrir páginas da Web, etc. - a conexão acabou de ser eliminada:

$ telnet google.com 80
Trying 173.194.113.201...
Connected to google.com.
Escape character is '^]'.
get / http/1.0

Connection closed by foreign host.

Eu tentei encontrar alguns manuais e encontrei um conselho para os pacotes CONNMARK assim:

iptables -t mangle -A PREROUTING -i eth1 --dst 217.147.175.165 -m state --state NEW,RELATED -j CONNMARK --set-mark 10
iptables -t mangle -A PREROUTING -i eth2 --dst 46.164.150.51   -m state --state NEW,RELATED -j CONNMARK --set-mark 11

iptables -t mangle -A PREROUTING -i br0 -m state --state ESTABLISHED -j CONNMARK --restore-mark

Mas isso não ajudou em nada. Por favor ajude)

    
por BbIKTOP 02.09.2016 / 00:55

1 resposta

0

Parece que a perda de pacotes ocorre quando os pacotes retornam diferentes da rota de origem. Roteamento IP é sem estado. Acho que você poderia seguir o link para arquivar dual-wan.

    
por 02.09.2016 / 04:32