Você precisaria elaborar um pouco mais o que é que você está tentando fazer. Um esboço com endereços IP dos hosts envolvidos e uma listagem de suas tabelas de roteamento ajudariam muito a entender seu problema.
my server doesn't seem to configure the tun0 device properly
É possível que um comando ifconfig falhe - talvez você deva verificar os registros para isso e publicar os trechos relevantes.
I want to set up the dual client box such that a computer whose gateway is set to eth0:0 gets all their traffic routed through one OpenVPN tunnel, and a computer whose gateway is set to eth0:1 gets all their traffic routed through a different OpenVPN tunnel
ip rule add from $IP_ETH00 table us_table
Essa provavelmente não é a melhor maneira de alcançar o que você realmente quer - o que parece ser rotas diferentes para diferentes clientes. Embora seja possível adicionar regras iptables -t mangle
para marcar pacotes para critérios diferentes, não haveria um conjunto de critérios capaz de distinguir entre eth0: 0 e eth0: 1 como interface de entrada (o que se deve à maneira como o aliasing IP é implementado).
O que você pode fazer, no entanto, é simplesmente configurar algo como
ip rule add from <ip-of-your-client-for-the-us-table> table us_table
que eliminaria totalmente a necessidade de aliases de IP em sua configuração, já que a decisão de roteamento seria feita com base nos endereços IP de origem e de destino, independentemente da interface em que o pacote chegasse.
copy_routing_table "us_table"
Você omitiu a fonte de copy_routing_table - se fizer o que eu suspeito, você terá toda a sua tabela de roteamento principal em us_table. Se sua tabela de roteamento principal já contém rotas potencialmente conflitantes com o que você está definindo no script, você pode acabar usando-as em vez de suas rotas recém-adicionadas. Isso é especialmente uma preocupação, já que você está adicionando uma nova rota padrão em seu script:
ip route add default via $4 table us_table
Como você já tem uma rota padrão na sua tabela "principal" e adiciona outra "via $ 4" (o que é errado BTW, como $ 4 representaria um endereço IP local da própria interface tun do roteador - você deve usar "dev $ 1 "em vez disso) sem excluir a rota antiga. Você deve prefixar ip route del default table us_table
aqui - e provavelmente algo semelhante para as outras rotas que você adicionar também.
E isso aqui:
From 192.168.1.133: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.1)
é uma mensagem de 192.168.1.133 que está recebendo o pacote para 98.137.149.56 (yahoo.com) e encaminhando-o para 192.168.1.1. Desde 192.168.1.133 sabe (por avaliação da máscara de rede) que seu host está na mesma rede que 192.168.1.1, você será notificado para usar 192.168.1.1 diretamente em primeiro lugar.