Estou tentando usar o shorewall no Arch para gerenciar uma configuração com 2 redes locais e 2 conexões ISP. Em última análise, quero que o tráfego da rede local 1 (192.168.1.0/24 interface enp5s0) use o ISP 1 (76. ... interface enp6s0) e o tráfego do local 2 (192.168.0.0/24 interface enp7s0) use o ISP 2 (99 . ...interface enp3s0). Atualmente, posso fazer um ou outro funcionar, mas não ambos, dependendo de qual rota padrão vem primeiro:
output of `ip route ls` with sensitive information redacted:
default via 76.[rd].1 dev enp6s0 src 76.[rd].78 metric 203 mtu 576
default via 99.[rd].1 dev enp3s0 src 99.[rd].190 metric 205
76.[rd].0/24 dev enp6s0 proto kernel scope link src 76.[rd].78 metric 203 mtu 576
76.[rd].78 dev enp6s0 scope link src 76.[rd].78
99.194.48.0/21 dev enp3s0 proto kernel scope link src 99.[rd].190 metric 205
99.[rd].190 dev enp3s0 scope link src 99.[rd].190
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.1 metric 204
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.1 metric 202
Com a saída acima, o local 1 seria capaz de alcançar o exterior, mas o local 2 não. Vice-versa se a primeira linha tivesse desaparecido. Tenho certeza de que várias rotas padrão são proibidas, mesmo com vários ISPs, mas foi assim que o Shorewall fez isso.
Como não havia nenhum exemplo para isso em lugar nenhum, baseei-me no exemplo de três interfaces do shorewall. Para evitar tornar esta postagem absurdamente longa, aqui estão links para pastas de cada configuração relevante do shorewall:
- interfaces:http://pastebin.com/u7w3YJdx
- mangá:http://pastebin.com/1X2hrLCZ
- máscara:http://pastebin.com/bi9EEtwD
- política:http://pastebin.com/mBBZQ0wg
- regras:http://pastebin.com/ySSLpMWd
- fornecedores:http://pastebin.com/YjDfKZzg
- zonas:http://pastebin.com/XVgYz3dn
As páginas de Shorewall sobre o assunto são inúteis porque o objetivo do exemplo deles é muito diferente do meu. Qualquer indicação na direção certa seria muito apreciada.
Responder1
Certifique-se de não definir o gateway padrão nos arquivos netctl ou em qualquer outro arquivo. Se estiver usando DHCP para obter endereços IP, certifique-se de desabilitar a obtenção do gateway padrão (dhcpcd -G). A execução de "ip route ls" devenão mostra nenhum gateway padrão. Somente "ip route show table all" listaria os gateways padrão para cada tabela do ISP. Algo assim:
default via 10.1.1.1 dev enp3s0 table ITC1 src 10.1.1.10
10.1.1.1 dev enp3s0 table ITC1 scope link src 10.1.1.10
default via 10.1.2.1 dev enp4s0 table ITC2 src 10.1.2.10
10.1.2.1 dev enp4s0 table ITC2 scope link src 10.1.2.10
default via X.X.X.X dev enp5s0 table MPLS src X.X.X.X
X.X.X.X dev enp5s0 table MPLS scope link src X.X.X.X
default table balance
nexthop via X.X.X.X dev enp5s0 weight 1
nexthop via 10.1.1.1 dev enp3s0 weight 2
nexthop via 10.1.2.1 dev enp4s0 weight 2
Além disso, você pode remover as entradas do arquivo mangle, pois as entradas do rtrules devem ser suficientes para o que você precisa