Deixe-me adivinhar alguma "tarefa original X". Eles provavelmente não corresponderão à sua tarefa original X, mas podem dar uma ideia de que tipo de informação é necessária.
1) O dispositivo é um roteador doméstico normal disponível no mercado, com quatro portas LAN atrás de um comutador externo em eth0
e uma única porta WAN em eth1
. A porta WAN está conectada ao seu gateway de redes locais. Todos os hosts que devem usar o proxy transparente estão conectados às portas LAN, possivelmente com switches adicionais. Nenhum outro host ou conectado às portas LAN. O outro ponto final de meias está no lado da WAN.
Nesse caso, esqueça o nível 2, use as regras iptables
, conforme descrito em man ss-redir , adaptado apenas para NAT em eth0
. O roteamento enviará a solicitação SOCKS com proxy de eth1
. O NAT cuidará de que quaisquer respostas sejam enviadas de volta no eth0
para o dispositivo com o IP correto. O ARP garantirá que o MAC para este IP seja usado.
2) Variação dos itens acima: Alguns hosts conectados às portas LAN devem usar o proxy, outros não. Nesse caso, olhe mais de perto o hardware, ele provavelmente tem um switch-chip que você pode configurar com sw-conf
. Reconfigure-o para que duas portas LAN estejam conectadas a eth0
e as outras duas estejam conectadas a eth2
. Então proceda como acima. Conecte os hosts às portas LAN corretas, conforme apropriado.
3) O dispositivo é usado como uma ponte simples em uma configuração de rede mais complicada, em que o outro ponto final SOCKS está no mesmo segmento da LAN interna que os hosts que devem usar o proxy. Nesse caso, preciso de uma descrição da rede.
Etc., pp.
Editar
Se eu ler seu caso de uso corretamente, seu principal problema é que você deve conectar a porta WAN (eth0) às portas LAN (eth1), porque o servidor DHCP está atrás da porta WAN e deve gerenciar a atribuição estática dos IPs via DHCP corretamente.
Nesse caso, eu configuraria a bridge como um "brouter" : tudo é superado, exceto pacotes que chegam na rede local (eth1) que devem ser intermediados por proxy (TCP e no intervalo de IP de destino desejado). Esses pacotes surgirão da porta interna br-lan
da ponte. Lá, o processamento da camada 3 pode manipulá-los conforme descrito acima. Em particular, o rastreador de conexão pode rastreá-los por IP e porta, e pode enviar respostas do proxy de meias de volta para o dispositivo correto.
Não é necessário o MAC NAT, não é necessário rastreamento de conexão baseado em MAC que colabore com o L5, etc.
Eu gostaria de testar isso com alguns namespaces de rede, para que eu pudesse dar a receita inteira, mas infelizmente não vou ter tempo para isso hoje ou nos próximos dias.