Gateway Linux usando dados duplos na AT & T, o meu iptables está errado?

1

Tenho uma ligação à Internet por telemóvel com a AT & T. Todo mundo se conecta ao ponto de acesso Wi-Fi que eu tenho o meu Raspberry Pi conectado como servidor DNS / DCHP / Gateway.

No meu Pi eu uso o dnsmasq para dar a cada dispositivo um endereço IP estático se ele estiver na lista. Então eu uso iptables para definir regras para cada dispositivo, (para contar a largura de banda e restringir se over) este é um exemplo de dois dispositivos.

Chain FORWARD (policy ACCEPT)
target     prot opt source             destination
usb-w      all  --  0.0.0.0/0          192.168.1.3
usb-w      all  --  192.168.1.3        0.0.0.0/0       MAC 00:11:22:33:44:55
tab        all  --  0.0.0.0/0          192.168.1.4
tab        all  --  192.168.1.4        0.0.0.0/0       MAC 66:77:88:99:AA:BB
Local      all  --  0.0.0.0/0          0.0.0.0/0

Chain Local (2 references)
target     prot opt source               destination
ACCEPT     all  --  192.168.1.0/24       192.168.1.0/24
REJECT     all  --  192.168.1.0/24       0.0.0.0       reject-with icmp-port-unreachable

Chain usb-w (2 references)
target     prot opt source               destination
Local      all  --  0.0.0.0/0            0.0.0.0/0

Chain tab (2 references)
target     prot opt source               destination
ACCEPT      all  --  0.0.0.0/0            0.0.0.0/

Em um script PHP, eu registro a contagem de bytes das tabelas de usuários e zero-as. Se o dispositivo exceder o limite predefinido, a tabela do usuário será alterada para Tabela local. Tem trabalhado ok por um tempo.

Então, dois meses atrás, começamos a repassar muito o limite de AT & T . Passando pela fase de solução de problemas, descobri que, como exemplo , gravei 10 GB de uso, mas a AT & T e seu dispositivo de internet diz que usei 20 GB.

Depois de estar no telefone com eles (Eles dizem que sou eu) Eu fiz um teste de download. Eu baixei o arquivo debian-live-8.4.0-i386-cannamon-desktop.iso do site do Debian conectado diretamente ao dispositivo AT & T e novamente conectado ao pi. E descobri que meu Pi está usando o dobro dos dados.

Então, como posso resolver isso? Receber cobranças adicionais é caro, essa fatura de meses é de mais de US $ 600.

    
por Randell 01.05.2016 / 11:55

1 resposta

0

Não há nada óbvio para mim errado com suas regras. Eu ia postar isso como um comentário, mas é muito longo.

Eu abordaria isso de forma diferente - tente usar o wireshark na NIC que se conecta ao telefone.

Encerre todos os dispositivos usando a rede e envie / receba a partir de pacotes únicos. Eu sugiro um ping com payload usando o sinalizador -s no linux; Não me lembro da bandeira do Windows. Envie um pacote conhecido, receba o pacote de volta e verifique seu script e wireshark procurando por discrepâncias. Se houver algum, você poderá ver em wireshark se estiver transmitindo 2x, recebendo 2x ou seu script php tem problemas. Se necessário, aumente o tamanho da transferência para um valor maior, mas conhecido. Se necessário, alterne do ping para o ftp ou http, pois o problema pode depender do protocolo. Por exemplo, o ICMP e o UDP são sem conexão, o TCP não é - o TCP poderia solicitar retransmissões no nível do protocolo, os outros dois não (o UDP pode, mas no nível do aplicativo)

O Wireshark deve ter a resposta 'verdadeira', a menos que haja um problema com o próprio telefone fazendo retransmissões. Você provavelmente tem uma ferramenta de medição de dados no telefone, redefina isso antes deste teste para ver se ele começa a se separar significativamente de suas contagens de wireshark e php.

Basicamente, estou sugerindo que você confirme que é um problema real e comece a caracterizar o problema antes de mergulhar na depuração de baixo nível. Pode de fato ser iptables, mas eu não começaria lá. Depois de fazer esses testes, tente executá-los novamente sem as regras personalizadas do iptables e verifique se há uma mudança no comportamento.

Se você coletar esses dados, provavelmente a resposta será apresentada, mas, caso não seja publicada, os resultados.

Se for o telefone, você pode fazer um teste de loopback (transferir algo para um servidor externo e redirecioná-lo para você), mas a configuração seria um pouco dolorosa.

    
por 01.05.2016 / 13:04