Saltar para o conteúdo principal

Manual de utilização do mudfish-exclude

info

Este programa apenas está disponível em Mudfish Cloud VPN 6.5.4 ou superior.

mudfish-exclude é uma ferramenta de linha de comandos do Mudfish para Linux que permite executar determinados programas fora da rota do Mudfish. É especialmente útil com Full VPN quando pretende que navegadores, aplicações de mensagens, leitores de vídeo ou ferramentas de transferência utilizem diretamente a ligação à Internet habitual.

일반 프로그램       -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷

Esta ferramenta não acrescenta opções ao painel do Mudfish. Basta iniciar o programa que pretende excluir com mudfish-exclude, em vez do comando habitual.

Compatibilidade: atualmente, apenas Linux e IPv4 são suportados. A ferramenta não funciona no Windows, macOS ou Android e não aplica uma política de encaminhamento separada ao tráfego IPv6.

Requisitos​

Todas as condições seguintes são obrigatórias:

  • O Mudfish para Linux deve estar instalado.
  • cgroup v2 deve ser montado em /sys/fs/cgroup.
  • Os comandos ip e iptables, assim como a correspondência cgroup do iptables, têm de estar disponíveis.
  • Precisa de permissões de sudo para configurar o encaminhamento por políticas e as regras da firewall.
  • A tabela de encaminhamento main do Linux tem de conter uma rota IPv4 predefinida válida.

Os ficheiros executáveis instalados estão normalmente localizados em:

/opt/mudfish/<미꾸라지 버전>/bin/mudfish-exclude

O caminho de instalação atual pode ser encontrado com o seguinte comando:

ls /opt/mudfish/*/bin/mudfish-exclude

Se o executável não estiver no PATH, substitua mudfish-exclude nos exemplos abaixo pelo caminho completo encontrado. Por exemplo, na versão 6.5.4, o caminho de instalação predefinido é /opt/mudfish/6.5.4/bin/mudfish-exclude.

Utilização básica​

  1. Inicie o Mudfish e estabeleça a ligação com os itens pretendidos ou com o modo Full VPN.
  2. Se o programa a excluir já estiver aberto, encerre-o completamente, incluindo os processos em segundo plano e o ícone na área de notificação.
  3. Execute novamente o programa no terminal com o seguinte formato:
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

Por exemplo, para excluir o Discord do Mudfish, execute:

sudo mudfish-exclude discord

Para excluir o Firefox e abrir uma janela privada, execute:

sudo mudfish-exclude firefox --private-window

Se o caminho para o executável contiver espaços, coloque-o entre aspas.

sudo mudfish-exclude "/path/to/My Program" --option

sudo é utilizado para configurar a política de rede. Sempre que possível, o programa iniciado através de sudo mudfish-exclude ... utiliza o UID, o GID, a pasta pessoal e o ambiente da sessão gráfica do utilizador original que invocou sudo.

Informações importantes​

  • A política de exclusão aplica-se aos novos processos iniciados com mudfish-exclude e aos seus processos filhos.
  • Não é possível aplicar a política posteriormente a um programa que já esteja em execução. Feche-o completamente para evitar que um programa de instância única reutilize o processo existente.
  • Na utilização normal, a política é removida automaticamente quando o programa e todos os seus processos filhos terminam.
  • Pode executar vários comandos mudfish-exclude em simultâneo. As políticas partilhadas são removidas quando termina o último programa excluído.
  • O tráfego IPv4 dos programas excluídos não utiliza os servidores de retransmissão do Mudfish, a aceleração nem o IP público dessa rota.

Verificar o funcionamento​

A verificação é mais simples quando o IP público IPv4 da ligação original difere do IP público do servidor utilizado no modo Full VPN.

Primeiro, verifique o endereço num terminal normal com Full VPN ligado.

curl -4 https://myip.mudfish.net

Execute o mesmo comando através de mudfish-exclude.

sudo mudfish-exclude curl -4 https://myip.mudfish.net

O primeiro resultado deve mostrar o IP do servidor de retransmissão do Mudfish, e o segundo deve mostrar o IP da ligação à Internet original. A opção -4 limita a verificação a IPv4, que é o protocolo suportado pela ferramenta.

Para verificar no navegador, feche-o completamente, inicie-o como se mostra abaixo e aceda a https://myip.mudfish.net.

sudo mudfish-exclude firefox

Encerrar e remover as políticas​

Não é necessário nenhum comando de limpeza separado durante o encerramento normal. No entanto, a política pode manter-se se o processo mudfish-exclude for terminado à força, o terminal for fechado de forma anormal ou o sistema for interrompido.

Primeiro, feche todos os programas executados com esta ferramenta e, em seguida, execute o seguinte comando.

sudo mudfish-exclude --cleanup

Se utilizar --cleanup enquanto um programa excluído ainda estiver em execução, este pode deixar imediatamente de utilizar a rota direta.

Opções de comando​

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
OpçãoDescrição
-h, --helpMostra a ajuda.
--setupConfigura apenas a política de rede de exclusão e termina. Não permite indicar um programa em simultâneo.
--cleanupRemove a política de rede de exclusão e termina. Não permite indicar um programa em simultâneo.
--no-setupEntra no cgroup indicado e executa o programa sem voltar a configurar a política existente.
--cgroup NAMEEspecifica o nome do cgroup v2 a utilizar. O predefinido é mudfish-exclude.
--mark VALUEDefine a marca de firewall aplicada aos pacotes. O valor predefinido é 0x6d660001.
--priority VALUEDefine a prioridade da regra de política IPv4. O valor predefinido é 8252.
--table VALUEDefine o número da tabela de encaminhamento que guarda a rota predefinida original. O valor predefinido é 8252.

Pode indicar o programa depois de -- para assinalar explicitamente o fim das opções.

sudo mudfish-exclude -- firefox --private-window

Reutilizar políticas com vários programas​

Para a utilização habitual, recomendamos executar cada programa diretamente através da ferramenta. Se precisar de configurar a política uma vez e reutilizá-la com vários comandos, siga esta sequência.

sudo mudfish-exclude --setup
sudo mudfish-exclude --no-setup discord
sudo mudfish-exclude --no-setup firefox

Depois de fechar todos os programas, remova sempre a política.

sudo mudfish-exclude --cleanup

O modo manual não remove as políticas automaticamente. Além disso, alguns programas gráficos podem mudar para outro cgroup do systemd durante a execução. Para esses programas, o modo normal é mais adequado, pois acompanha as mudanças de cgroup e faz a limpeza automática.

Se alterar --cgroup, --mark, --priority ou --table, utilize os mesmos valores em --setup, --no-setup e --cleanup. Os valores personalizados não podem entrar em conflito com marcas de firewall ou regras de encaminhamento por políticas já existentes no sistema.

Resolução de problemas​

mudfish-exclude: command not found​

O executável não está no PATH. Localize a instalação com os comandos abaixo e execute-o através do caminho completo.

ls /opt/mudfish/*/bin/mudfish-exclude
sudo /opt/mudfish/6.5.4/bin/mudfish-exclude discord

No segundo comando, substitua o número da versão pela versão instalada.

network policy setup requires root​

Não tem permissões para configurar a política de rede. Acrescente sudo antes do comando e volte a executá-lo.

sudo mudfish-exclude discord

cgroup v2 is required at /sys/fs/cgroup​

O sistema não utiliza cgroup v2 ou este não está montado na localização esperada. Verifique com o comando abaixo.

test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 사용 가능"

Se o comando não apresentar resultados, consulte como ativar cgroup v2 na sua distribuição.

Erro de iptables rule add failed ou de correspondência cgroup​

Confirme que iptables está instalado e que o kernel e o iptables suportam a correspondência cgroup. Mesmo em distribuições baseadas em nftables, esta ferramenta invoca diretamente comandos compatíveis com iptables, pelo que é necessária uma camada de compatibilidade iptables funcional.

failed to find the IPv4 default route​

Não foi encontrada a rota IPv4 predefinida da ligação à Internet original na tabela main. Verifique se o resultado do comando abaixo contém uma rota default.

ip -4 route show default table main

Se não existir uma rota predefinida ou se esta já apontar para outra interface VPN, mudfish-exclude não consegue configurar a rota original da Internet.

O IP público não muda apesar de o programa estar excluído​

Verifique os seguintes pontos pela ordem indicada.

  1. Confirme que Full VPN está ligado e que, ao executar o programa normalmente, aparece o IP do servidor de retransmissão.
  2. Feche todos os processos do programa, incluindo os que estão em segundo plano, e volte a iniciá-lo.
  3. Utilize curl -4 ou outro método de verificação IPv4 para não confundir os resultados com IPv6.
  4. Verifique se o programa delega a execução num serviço separado ou num Launcher que já esteja ativo. A política de exclusão só se aplica à árvore de processos criada por mudfish-exclude.
  5. Confirme que a rota predefinida de ip -4 route show default table main aponta para a interface real de acesso à Internet.

O comando do terminal não termina depois de fechar o programa​

Podem existir processos filhos ou em segundo plano ainda ativos no cgroup de exclusão. Feche também os ícones da área de notificação, Launchers e processos de atualização associados. O modo normal aguarda que todos os processos filhos terminem antes de remover a política.

A rede funciona incorretamente após uma interrupção anormal​

Feche todos os programas iniciados com esta ferramenta e remova as políticas restantes.

sudo mudfish-exclude --cleanup

Se o problema continuar, feche o Mudfish, verifique a rota predefinida do sistema e as regras do iptables e volte a estabelecer a ligação.

Como funciona​

mudfish-exclude coloca o programa num cgroup v2 separado e aplica uma marca iptables aos pacotes IPv4 desse grupo. Os pacotes marcados utilizam uma tabela de encaminhamento por políticas separada, que os envia pela rota predefinida encontrada na tabela main do Linux. É aplicado NAT MASQUERADE quando necessário.

Este procedimento não altera as configurações nem o estado da memória partilhada de mudrun, mudflow, mudfish ou mudwfp_proxy. A política de exclusão atua apenas nas camadas cgroup, iptables e encaminhamento por políticas IPv4 do sistema operativo.