Usando o servidor linux como roteador para rede

2

Eu gostaria de configurar meu servidor Debian Lenny como um roteador para minha rede doméstica usando o iptables, mas até agora não tive sucesso. Abaixo está um diagrama da arquitetura de rede desejada

 INTERNET - (eth0) Debian server + router (eth1) -- Netgear 5 port gigabit switch  -- Clients

Eu tenho um servidor DHCP e um servidor DNS em execução para a rede interna, mas estou com dificuldades para configurar o iptables. Eu preciso de porta 80 e 22 aberta de fora (eu posso adicionar os outros abertos mais tarde) e acesso total ao servidor de dentro.

Qualquer ajuda seria muito apreciada, Obrigado, RayQuang

    
por RayQuang 12.12.2010 / 10:25

2 respostas

4

Aqui está uma configuração que usei com grande sucesso em uma situação quase idêntica à sua. Eu entendo que suas circunstâncias são as seguintes (por favor corrija-me se eu estiver errado):

  • Os clientes na LAN têm acesso total à Internet. As conexões de saída dos clientes da rede local são mascaradas para o endereço IP público fornecido ao seu servidor / roteador pelo seu provedor de serviços de Internet.
  • Os clientes na LAN têm acesso total ao seu servidor por meio de sua interface conectada à rede local (eth1).
  • Todo o tráfego de entrada da Internet (via eth0) é bloqueado, exceto: (1) tráfego envolvido em uma conexão preexistente, (2) tráfego vinculado às portas TCP 22 ou 80 ou (3) solicitações de ping ICMP.
  • As portas TCP 22 e 80 estão abertas para a Internet (via eth0) e são gerenciadas pelo seu servidor.
  • Seu servidor responde às solicitações de ping ICMP da Internet.
  • Por conveniência, suponho que seu intervalo de endereços de rede LAN seja 10.10.10.0/24 . Modifique o script abaixo conforme necessário para usar seu endereço real.

Primeiro, verifique se o encaminhamento de IP está ativado. Em /etc/sysctl.conf , você deve ter isto:

net.ipv4.ip_forward=1

Em seguida, crie suas regras do netfilter de acordo com o seguinte script:

#!/bin/sh
IPT=/sbin/iptables

# Flush all chains, to start with a clean slate.
$IPT -F
$IPT -t nat -F

# Set filter Policies. By default, DROP everything.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Set server INPUT rules.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth1 -j ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT

# Set server OUTPUT rules.
$IPT -A OUTPUT -j ACCEPT

# Set router FORWARD rules.
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade outgoing LAN traffic.
$IPT -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Isso deve ser o suficiente para criar uma estrutura.

    
por 12.12.2010 / 19:17
1

Você precisa de um conjunto de regras como o seguinte:

$ sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# Forward SSH packets destined to port 22
$ sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 22 -j allowed
# Forward HTTP packets destined to port 80
$ sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 80 -j allowed
# NATing rules for SSH and HTTP
$ sudo iptables -A PREROUTING -d your_public_ip -p tcp -m tcp --dport 22 -j DNAT --to-destination your_private_ip:22
$ sudo iptables -A PREROUTING -d your_public_ip -p tcp -m tcp --dport 80 -j DNAT --to-destination your_private_ip:80

Por favor, note que estas regras podem não ser a lista completa. No entanto, ajudará você a começar. Além disso, não se esqueça de ativar o encaminhamento de IP!

    
por 12.12.2010 / 11:15