Я хотел бы настроить свой сервер Debian Lenny в качестве маршрутизатора для моей домашней сети с помощью iptables, но пока мне это не удалось. Ниже представлена диаграмма желаемой сетевой архитектуры.
INTERNET - (eth0) Debian server + router (eth1) -- Netgear 5 port gigabit switch -- Clients
У меня есть DHCP-сервер и DNS-сервер, работающие во внутренней сети, но мне трудно настроить iptables. Мне нужно, чтобы порты 80 и 22 были открыты снаружи (я могу добавить другие открытые позже) и полный доступ к серверу изнутри.
Любая помощь будет очень принята, спасибо, RayQuang
Вот установка, которую я с большим успехом использовал в ситуации, почти идентичной вашей. Я понимаю, что у вас следующие обстоятельства (поправьте меня, если я ошибаюсь):
10.10.10.0/24
. При необходимости измените сценарий ниже, чтобы использовать свой фактический адрес.Сначала убедитесь, что IP-переадресация включена. В /etc/sysctl.conf
, у вас должно получиться следующее:
net.ipv4.ip_forward=1
Затем создайте свои правила netfilter согласно следующему сценарию:
#!/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
Этого должно быть достаточно для построения основы.
Вам понадобится набор правил вроде следующего:
$ 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
Обратите внимание, что эти правила могут быть не полным списком. Однако это поможет вам начать работу. Также не забудьте включить переадресацию IP!