Existem duas maneiras de conseguir isso. O primeiro é muito anormal e pode causar estranheza, então o segundo é melhor.
Método 1 (NÃO recomendado)
A tabela de roteamento típica é semelhante a esta:
% ip route
10.23.11.0/24 dev wlan0 proto kernel scope link src 10.23.11.209
default via 10.23.11.1 dev wlan0 proto static
Que diz ao kernel que os destinos em 10.23.11.0/24 estão diretamente conectados a wlan0, e todo o restante deve passar pelo roteador em 10.23.11.1. É esta primeira rota que diz ao kernel para fazer uma requisição ARP e enviar o pacote diretamente. Se você removê-lo, tudo deve passar pelo roteador. Esta rota é configurada por padrão, portanto, você precisará explicitamente removê-la em algum lugar. Sua eventual tabela de roteamento deve se parecer com isso:
% ip route
default via 10.23.11.1 dev wlan0 proto static
Método 2 (recomendado)
O melhor método é colocar cada máquina em sua própria sub-rede, para que cada sub-rede seja um domínio Ethernet (como normalmente deveria ser). Você faria isso atribuindo a cada máquina uma sub-rede / 30, com o roteador recebendo um desses IPs. Sua rede seria algo como isto:
(machine1) 10.0.0.2/30 <-------> 10.0.0.1/30 (router) 10.0.0.5/30 <--------> 10.0.0.6/30 (machine2)