
No último mês não consegui resolver isso, fiz regras de iptables diferentes, habilitei e desabilitei módulos no kernel, mas obtive os mesmos resultados e ainda mais pacotes foram descartados pelo iptables. Isso faz com que os usuários tenham um atraso de 3/5 segundos ao tentar acessar diferentes pastas compartilhadas de 192.168.1.0/24 a 192.168.3.0/28 na máquina virtual.
Eu vejo isso nos logs:
14 de fevereiro 13:53:02 kernel ns129115: [12426815.202643] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 DF PROTO=TCP SPT=22115 DPT=49225 JANELA=384 RES=0x00 ACK PSH URGP=0 14 de fevereiro 13:53:02 kernel ns129115: [12426815.393379] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61933 DF PROTO=TCP SPT=22115 DPT=49225 JANELA=384 RES=0x00 ACK URGP=0 14 de fevereiro 13:53:02 kernel ns129115: [12426815.834944] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61934 DF PROTO=TCP SPT=22115 DPT=49225 JANELA=384 RES=0x00 ACK URGP=0 14 de fevereiro 13:53:02 kernel ns129115: [12426815.835219] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 DF PROTO=TCP SPT=22115 DPT=49225 JANELA=384 RES=0x00 ACK PSH URGP=0 14 de fevereiro 13:53:19 kernel ns129115: [12426832.829664] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=vnet0 PHYSOUT=eth2 MAC=70:85:c2:4f:14:c1:00:16:3e :ea:18:01:08:00 SRC=192.168.1.156 DST=192.168.1.125 LEN=319 TOS=0x00 PREC=0x00 TTL=128 ID=16660 DF PROTO=TCP SPT=49169 DPT=54820 JANELA=256 RES= 0x00 ACK PSH URGP=0 14 de fevereiro 13:53:39 kernel ns129115: [12426852.496117] IPTables-OUTPUT-Dropped: IN = OUT = br0 SRC = 192.168.1.115 DST = 192.168.1.231 LEN = 104 TOS = 0x10 PREC = 0x00 TTL = 64 DF PROTO=TCP SPT=22115 DPT=52214 JANELA=263 RES=0x00 ACK PSH URGP=0 14 de fevereiro 13:53:49 kernel ns129115: [12426862.856776] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:ea:18:01:90:2b:34 :b0:20:a4:08:00 SRC=192.168.1.237 DST=192.168.1.156 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=1644 DF PROTO=TCP SPT=49244 DPT=49169 JANELA=1879 RES= 0x00 ACK URGP=0 14 de fevereiro 13:53:50 kernel ns129115: [12426863.288983] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=29069 DF PROTO=TCP SPT=22115 DPT=52214 JANELA=263 RES=0x00 ACK PSH URGP=0 14 de fevereiro 13:54:19 kernel ns129115: [12426892.906806] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:ea:18:01:74:d4:35 :6a:18:7a:08:00 SRC=192.168.1.199 DST=192.168.1.156 LEN=248 TOS=0x00 PREC=0x00 TTL=128 ID=13244 DF PROTO=TCP SPT=49678 DPT=49169 JANELA=256 RES= 0x00 ACK PSH URGP=0 14 de fevereiro 13:54:42 kernel ns129115: [12426915.939242] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 DF PROTO=TCP SPT=22115 DPT=49225 JANELA=384 RES=0x00 ACK PSH URGP=0
O servidor Debian com iptables e 2 pontes
- BR0, é a ponte de acesso à Internet para o gateway 192.168.1.1 e todos os usuários estão nesta rede
- VIRBR10, a 2ª ponte, vm1 foi conectado nessa ponte com ip 192.168.3.12 (192.168.3.0/28) e tem nat com iptables para fora passando por br0
Aqui »» O gráfico da rede com gateway e hipervizor
Aqui está minha tabela de rotas
~ lista de rotas
Tabela de roteamento IP do kernel Gateway de destino Genmask Flags Métrica Ref Use Iface padrão 192.168.1.1 0.0.0.0 UG 0 0 0 br0 192.168.1.0 * 255.255.255.0 U 0 0 0 br0 192.168.3.0 * 255.255.255.240 U 0 0 0 virbr10
~brctl mostrar
nome da ponte ID da ponte Interfaces habilitadas para STP br0 8000.0cc47ac18d3c sim eth2 virbr10 8000.525400c4b847 sim virbr10-dummy vnet2
~ regras do iptables
#!/bin/sh #Liberando todas as regras iptables -P ENTRADA ACEITAR iptables -P FORWARD ACEITAR iptables -P SAÍDA ACEITAR iptables -t nat -F iptables -t mangle -F tabelas de ip -F tabelas de ip -X # Permitir tráfego INPUT básico. iptables -A INPUT -m state --state ESTABELECIDO, RELACIONADO -j ACEITAR iptables -A INPUT -i lo -j ACEITAR iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NOVO -j ACEITAR iptables -A INPUT -p icmp -m conntrack --ctstate NOVO -j ACEITAR # #MTU iptables -t mangle -A FORWARD -o virbr1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1460 iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #PME #Porta: netbios - 445/tcp #Porta: netbios-ns – 137/udp – Serviço de nomes NETBIOS #Porta: netbios-dgm – 138/udp – Serviço de datagrama NETBIOS #Porta: netbios-ssn – 139/tcp – Serviço de sessão NETBIOS iptables -A INPUT -m estado --state NOVO -m tcp -p tcp --dport 445 -j ACEITAR iptables -A INPUT -p udp -m udp --dport 445 -j ACEITAR iptables -A INPUT -p udp -m udp --dport 137:138 -j ACEITAR iptables -A INPUT -m estado --state NOVO -m tcp -p tcp --dport 139 -j ACEITAR #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NOVO --sport 137 -j ACEITAR #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NOVO --sport 138 -j ACEITAR #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NOVO --sport 139 -j ACEITAR #RDP #Porta: 3389 # conexões externas iptables -I FORWARD -o virbr10 -d 192.168.3.12 -j ACEITAR iptables -t nat -I PREROUTING -p tcp --dport 3589 -j DNAT --to 192.168.3.12:3389 # Mascarar sub-rede local iptables -I FORWARD -o virbr10 -d 192.168.3.0/28 -j ACEITAR iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -j MASQUERADE iptables -A FORWARD -o virbr10 -m state --state RELACIONADO, ESTABELECIDO -j ACEITAR #Permite conexões salientes de virbr10 para o vermelho 192.168.1.0/24 iptables -A FORWARD -i virbr10 -o br0 -j ACEITAR iptables -A FORWARD -o virbr10 -i br0 -j ACEITAR iptables -A FORWARD -i virbr10 -o lo -j ACEITAR ### #KVM convidado roteado # Pacotes DHCP enviados para VMs não possuem soma de verificação (devido a um bug antigo). iptables -t mangle -A POSTROUTING -o virbr10 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fil # Não se disfarce nesses blocos de endereços reservados. iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 224.0.0.0/24 -j RETURN iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 255.255.255.255/32 -j RETURN # Mascarar todos os pacotes que vão das VMs para a LAN/Internet. iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p tcp -j MASQUERADE --to-ports 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p udp -j MASQUERADE --to-ports 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -j MASQUERADA # Aceite conexões SSH. iptables -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NOVO --dport 22 -j ACEITAR #Aceite o Radmin iptables -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NOVO --dport 4899 -j ACEITAR # Permitir tráfego de entrada para a sub-rede privada. iptables -A FORWARD -d 192.168.3.0/28 -o virbr10 -m state --state ESTABELECIDO, RELACIONADO -j ACEITAR #7218-12_07 Acesso lento à mesa iptables -A FORWARD -d 192.168.1.0/24 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT #7218-12_07 Acesso lento à mesa iptables -A FORWARD -d 192.168.3.0/28 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Permitir tráfego de saída da sub-rede privada. iptables -A FORWARD -s 192.168.3.0/28 -i virbr10 -m state --state ESTABELECIDO, RELACIONADO -j ACEITAR #7218-12_07 Acesso lento à mesa iptables -A FORWARD -s 192.168.1.0/24 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT #7218-12_07 Acesso lento à mesa iptables -A FORWARD -s 192.168.3.0/28 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Permitir tráfego entre máquinas virtuais. iptables -A FORWARD -i virbr10 -o virbr10 -j ACEITAR # Rejeite todo o resto. iptables -A FORWARD -i virbr10 -j REJECT --reject-with icmp-port-unreachable # Aceite pacotes DNS (porta 53) e DHCP (porta 67) de VMs. iptables -A INPUT -i virbr10 -p udp -m udp -m multiporta --dports 53,67 -j ACEITAR iptables -A INPUT -i virbr10 -p tcp -m tcp -m multiporta --dports 53,67 -j ACEITAR #ICMP iptables -A SAÍDA -p icmp -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITAR # Rejeite todo o resto. iptables -A INPUT -m conntrack --ctstate INVÁLIDO -j DROP iptables -A INPUT -p tcp -m tcp -j REJECT --rejeitar-com tcp-reset iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable #Log pacotes descartados iptables -A INPUT -m limite --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4 iptables -A FORWARD -m limite --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4 iptables -A OUTPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
Atualizações
- Alterou a cadeia de logs para o final do script e cole as novas entradas de log
Responder1
Depois de pesquisar no Google posso resolver isso.
- O acesso lento a arquivos compartilhados com SMB no controlador de domínio no Windows Server 2012 R2 ocorre porque o GPO de redirecionamento de pasta faz alterações nas permissões na pasta de perfil do usuário durante o processo de redirecionamento quando a pasta não existe no destino. Baseado em iamrafic da Microsfot Technet (link), precisamos alterar as permissões da pasta para isto:
Crie a pasta no local desejado. Desative a herança de permissões do pai e remova todas as permissões herdadas clicando no botão apropriado. Uma entrada já estará na DACL: Administradores Locais.
Alterar administradores locais: controle total: esta pasta, subpastas e arquivos
Adicionar SISTEMA: Controle Total: Esta pasta, subpasta e arquivos.
Adicionar PROPRIETÁRIO DO CRIADOR: Controle total: esta pasta, subpastas e arquivos.
Adicionar usuários autenticados: listar pasta/ler dados, criar pastas/anexar dados: apenas esta pasta
Adicionar administradores de domínio: Controle total: esta pasta, subpastas e arquivos.
Clique OK.
- O outro problema eram minhas regras de iptables, eu precisava realizar novas cadeias completas e corrigir a ordem de cada regra FORWARD porque isso altera o desempenho quando o pacote é analisado. Aqui os novos.
#!/bin/sh #Liberando todas as regras iptables -P ENTRADA ACEITAR iptables -P FORWARD ACEITAR iptables -P SAÍDA ACEITAR iptables -t nat -F iptables -t mangle -F tabelas de ip -F tabelas de ip -X iptables -t bruto -F # Tabelas básicas iptables -A INPUT -m conntrack --ctstate ESTABELECIDO,RELACIONADO -j ACEITAR iptables -A INPUT -i lo -j ACEITAR # iptables -A FORWARD -o virbr32 -s 192.168.1.0/24 -d 192.168.100.0/28 -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITAR iptables -A FORWARD -i virbr32 -s 192.168.100.0/28 -d 192.168.1.0/24 -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITAR iptables -A FORWARD -o virbr32 -i br0 -j ACEITAR iptables -A FORWARD -i virbr32 -s 192.168.100.0/2 -j ACEITAR iptables -A FORWARD -i virbr32 -o virbr32 -j ACEITAR iptables -A FORWARD -i virbr32 -j LOG --log-prefix "iptables-FORWARD-REJECT:" iptables -A FORWARD -i virbr32 -j REJECT --reject-with icmp-port-unreachable # Mascarar sub-rede local iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -j MASQUERADE # Não se disfarce nesses blocos de endereços reservados. iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 224.0.0.0/24 -j RETURN iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 255.255.255.255/32 -j RETURN #PME #RPC EPM TCP 135 # RPC sobre HTTPS TCP 593 # SMB (para pipes nomeados) TCP 445 # Alcance Efêmero, Dinâmico * iptables -I FORWARD 6 -o virbr32 -i br0 -m conntrack --ctstate NOVO -p tcp -d 192.168.100.12 --dport 445 -j ACEITAR iptables -I FORWARD 7 -o virbr32 -i br0 -m conntrack --ctstate NOVO -p tcp -d 192.168.100.12 --dport 139 -j ACEITAR # Aceite pacotes DNS (porta 53) e DHCP (porta 67) de VMs. iptables -I FORWARD 8 -o virbr32 -i br0 -m conntrack --ctstate NOVO -p tcp -m tcp -m multiport --dports 53,67 -j ACEITAR iptables -I FORWARD 9 -i virbr32 -o br0 -m conntrack --ctstate NOVO -p udp -m udp -m multiport --dports 53,67 -j ACEITAR # # # As duas regras abaixo garantem que apenas os pacotes TCP sejam examinados. Todos os outros # continue na tabela *filter. iptables -t raw -N TCPFLAGS iptables -t raw -A PREROUTING -p tcp -j TCPFLAGS iptables -t raw -A PREROUTING -j ACEITAR # Aceite rapidamente apertos de mão padrão # PERMITIR ACK ou ACK/SYN #-A TCPFLAGS -j ACEITAR iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK -j ACEITAR # Permitir ACK/FIN com URG ou PSH, ou ambos, ou nenhum # mas SYN e RST não podem ser configurados iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST ACK,FIN -j ACEITAR # Permitir SYN ou ACK/SYN iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACEITAR #Permitir RST ou ACK/RST iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACEITAR # Esta regra captura ataques de árvores de natal e barbatanas iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN FIN -j DROP # Esta regra captura ataques xmas-tree e syn/rst iptables -t raw -A TCPFLAGS -p tcp --tcp-flags SYN SYN -j DROP #Esta regra captura ataques nulos iptables -t raw -A TCPFLAGS -p tcp --tcp-flags TODOS NENHUMA -j DROP #-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP # essas regras detectam combinações de ack ruins #-A TCPFLAGS -p tcp --tcp-flags ACK ACK -j ACC #iptables -t raw -A TCPFLAGS -j ACEITAR # Então, o que aceitamos para tcp? # apertos de mão (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), # e pacotes de dados com PSH ou URG ou FIN ou ACK # #Log pacotes descartados iptables -A INPUT -m limite --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4 iptables -A FORWARD -m limite --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4 iptables -A OUTPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
- Como você pode ver, usei iptables -I FORWARD em vez de iptables -A FORWARD porque com isso posso executar regras ordenadas na minha tabela de filtros colocando primeiro as regras mais importantes e depois ir mais fundo após DROP ou negar o resto. Todas as regras FORWARD vão antes desta linha
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NOVO -j ACEITAR
Editar: Só preciso fazer algumas alterações para ter mais taxa de transferência na hora de copiar arquivos da vm para fora na lan 192.168.1.0/24, não aguento mais que 4Mb/s. Qualquer conselho será apreciado!!