Dê uma olhada no Transocks , que pode interceptar conexões tcp com iptables e encapsulá-las através do Socks. Deve trabalhar com binários estáticos.
O DNS sobre TCP existe, mas é bastante fora do padrão para uso típico. Eu não acho que libnsswitch pode usar tcp, mas você poderia instalar um servidor de nomes local falando tcp dns. Você precisa garantir que você tenha um resolvedor recursivo em algum lugar do lado de fora que aceite tcp.
Se você estiver no controle de uma máquina externa, pode ser mais fácil configurar alguns vpn para encapsular o tráfego UDP; um openvpn tsocksified ou openssh com a opção -w.