Estou trabalhando em uma implementação do MirrorLink para o Google Pixel (Android 8.1.0). Eu preciso implementar um servidor DHCP; no entanto, os aplicativos Android não podem escutar em portas reservadas.
O aplicativo Android está atento a transmissões DHCP DISCOVERY na porta UDP 6700. Minha intenção é encaminhar o tráfego DHCP para 6700 de modo que meu aplicativo possa manipular a solicitação DHCP.
Não consigo encontrar uma combinação de regras de iptables que resultem em tráfego DHCP chegando ao meu aplicativo. Se eu enviar um DHCP DISCOVERY diretamente para a porta 6700, recebo o tráfego.
# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N bw_FORWARD
-N bw_INPUT
-N bw_OUTPUT
-N bw_costly_rmnet_data0
-N bw_costly_shared
-N bw_costly_tun0
-N bw_data_saver
-N bw_happy_box
-N bw_penalty_box
-N fw_FORWARD
-N fw_INPUT
-N fw_OUTPUT
-N fw_dozable
-N fw_powersave
-N fw_standby
-N natctrl_FORWARD
-N natctrl_tether_counters
-N nm_mdmprxy_doze_mode_skip
-N nm_mdmprxy_iface_pkt_fwder
-N oem_fwd
-N oem_out
-N st_OUTPUT
-N st_clear_caught
-N st_clear_detect
-N st_penalty_log
-N st_penalty_reject
# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N natctrl_nat_POSTROUTING
-N oem_nat_pre
Eu tentei várias combinações das seguintes regras:
iptables -A INPUT -i ncm0 -p udp --dport 67 -J REDIRECT --to-port 6700
iptables -A FORWARD -i ncm0 -p udp --dport 6700 -j ACCEPT
iptables -A INPUT -i ncm0 -p udp --dport 6700 -j ACCEPT
iptables -A PREROUTING -t nat -i ncm0 -p udp --dport 67 -j REDIRECT --to-port 6700
Suspeito de um erro grave de configuração do iptables (provável), considerações especiais para o tráfego DHCP ou conflitos específicos do Android / dispositivo.
Eu gostaria de receber ajuda para fazer isso funcionar. É a última barreira para alcançar a implementação do MirrorLink.
Eu tenho acesso root ao dispositivo, se isso já não estava claro.