Eu fiz um script para definir um firewall iptables, mas está causando instabilidade na aplicação de rede local. O firewall está suspendendo a conexão entre os clientes e o servidor por algum tempo quando o cliente e o servidor estão conectados.
Minha rede (192.168.x.y):
| Modem-1 | ---- | Modem-2
--------- || ------------ ||
| LoadBalance Router |
---------- || -----------------
Firewall e Servidor DHCP |
Modem-1 e 2 são all-in-one (roteadores WiFi também)
Modem-1 Local: 192.168.1.0
Modem-2 Local: 192.168.2.0
LoadBalance: 192.168.3.0
Firewall Network 192.168.0.0
Meu servidor Firewall NÃO é Servidor DNS, na rede nós temos o Windows AD como Servidor DNS.
#! /bin/bash
iniciar() {
# Limpando politicas e regras
iptables -X
iptables -F
iptables -Z
# Bloqueando tudo
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Forward - WAN to LAN
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Forward - LAN to WAN
iptables -A FORWARD -i eno2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eno2 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eno2 -p tcp --dport 587 -j ACCEPT
iptables -A FORWARD -i eno2 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eno2 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -i eno2 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i eno2 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i eno2 -p icmp -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A FORWARD -i eno1 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.3.0/24 --dport 53 -j ACCEPT
# Input
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
# Output
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 22 -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 4000 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 81 -j ACCEPT
# DVR 1 Portas 80, 8000 e 554
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 80 -i eno1 -j DNAT --to 192.168.0.251:80
iptables -A FORWARD -p TCP -d 192.168.0.251 --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 8000 -i eno1 -j DNAT --to 192.168.0.251:8000
iptables -A FORWARD -p TCP -d 192.168.0.251 --dport 8000 -j ACCEPT
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 554 -i eno1 -j DNAT --to 192.168.0.251:554
iptables -A FORWARD -p TCP -d 192.168.0.251 --dport 554 -j ACCEPT
# DVR 2 8080,8001 e 1024
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 8080 -i eno1 -j DNAT --to 192.168.0.254:8080
iptables -A FORWARD -p TCP -d 192.168.0.254 --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 8001 -i eno1 -j DNAT --to 192.168.0.254:8001
iptables -A FORWARD -p TCP -d 192.168.0.254 --dport 8001 -j ACCEPT
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 1024 -i eno1 -j DNAT --to 192.168.0.254:1024
iptables -A FORWARD -p TCP -d 192.168.0.254 --dport 1024 -j ACCEPT
#iptables -t nat -A PREROUTING -p TCP -d 0/0 --dport 53 -i eno1 -j DNAT --to 0/0
#iptables -A FORWARD -p TCP -d 0/0 --dport 53 -j ACCEPT
#iptables -t nat -A PREROUTING -p UDP -d 0/0 --dport -i eno1 -j DNAT --to 0/0
#iptables -A FORWARD -p -d 0/0 --dport 53 -j ACCPET
# Acesso Remoto
iptables -t nat -A PREROUTING -p TCP -d 192.168.3.0/24 --dport 3389 -i eno1 -j DNAT --to 192.168.0.13:3389
iptables -A FORWARD -p TCP -d 192.168.0.13 --dport 3389 -j ACCEPT
}
parar(){
iptables -X
iptables -F
iptables -Z
}
case "$1" in
"start") iniciar;;
"restart") parar; iniciar;;
*) echo "Use start ou restart"
esac
Editar: Eu estava conversando com meu professor sobre isso e ele disse que a instabilidade pode ser causada por incompetência de hardware, eu preciso mudar para outro sistema operacional (não distro Linux, outro sistema operacional) para resolver isso
Editar2: Outra coisa que causa o erro, talvez seja a hora que eu fixei para IPs eu deixei 30 minutos, depois disso o servidor checa se o IP estava em uso, eu resolvo a alteração do problema para o SO FreeBSD baseado
Tags networking iptables firewall