Einrichten eines Rechners als Router
From LUGUM
Inhaltsverzeichnis |
Der Router
Ein Router ist ein Rechner oder Hardware Box die mit 2 verschiedenen Netzwerken verbunden ist, und Pakete zwischen diesen Netzen weiterleitet. Der IP-Adressen Bereich eines Netzwerks wird dabei bestimmt durch die IP-Adresse und die subnet mask.
Im Privatbereich stehen diese Router normalerweise zwischen dem lokalen Netzwerk und dem Internet.
Diese Anleitung soll helfen einen Router einzurichten, der DHCP, DNS, DynDNS, Firewall und noch ein Paar Dienste anbietet.
Einwahl einrichten
TODO
Firewall Script
#!/bin/bash
#
# /etc/init.d/firewall
#
PATH=$PATH:/usr/bin
iptables=/sbin/iptables
modprobe=/sbin/modprobe
rmmod=/sbin/rmmod
isp_dev=ppp0;
isp_transfer_dev=eth1;
trusted_local_net=192.168.0.0/255.255.255.0
lan_dev=eth0;
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
set-forward () {
echo "1" > /proc/sys/net/ipv4/ip_forward
}
unset-forward () {
echo "0" > /proc/sys/net/ipv4/ip_forward
}
load-modules () {
$modprobe iptable_nat
$modprobe ip_nat_ftp
$modprobe ip_conntrack
$modprobe ip_conntrack_ftp
}
unload-modules () {
for module in ip_conntrack_ftp ip_nat_ftp iptable_nat \
ip_conntrack ip_tables; do
$rmmod $module
$rmmod -a
done
}
set-rules () {
############################################
# Default-Policies setzen - alles loeschen #
############################################
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT DROP
#js# das ist schon mal ein guter Anfang
# Regeln der NAT-Tabelle ausspuehlen
$iptables -t nat -F
# Regeln der Filter-Tabelle ausspuehlen
$iptables -F
$iptables -X
# Bereits aufgebaute Verbindungen werden akzeptiert!!!
for chain in INPUT FORWARD OUTPUT; do
$iptables -A $chain -m state --state ESTABLISHED,RELATED -j ACCEPT;
done
###################
# Incoming-Regeln #
###################
$iptables -A INPUT -m state --state INVALID -j DROP
$iptables -A FORWARD -m state --state INVALID -j DROP
# Von Intern wird alles erlaubt!!!
$iptables -A INPUT -m state --state NEW -i ! $isp_dev -j ACCEPT
# Vom Localhost wird alles erlaubt!!!
$iptables -A INPUT -i lo -j ACCEPT
# Pings werden erlaubt
$iptables -A INPUT -i $isp_dev -p icmp --icmp-type echo-request -j ACCEPT
#####################
# Akzeptierte Ports #
#####################
for service in www https ftp imap ssh smtp ; do
$iptables -A INPUT -i $isp_dev -p tcp --destination-port $service -j ACCEPT
done
#####################
# Forwarding-Regeln #
#####################
# Port 8080 Extern zu 80 intern
### Portforwarding #############################################################################
# $iptables -t nat -A PREROUTING -i $isp_dev -p tcp --dport 8080 -j DNAT --to 192.168.0.8:80
## $iptables -A FORWARD -i $isp_dev -p tcp --dport 80 -d 192.168.0.8 -j ACCEPT
################################################################################################
# Lokal -> Internet : Alles wird erlaubt!!!
$iptables -A FORWARD -i $lan_dev -o $isp_dev -j ACCEPT
$iptables -A FORWARD -i $isp_dev -m mark --mark 1 -j ACCEPT
$iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
##################
#Outgoing-Regeln #
##################
# Ins lokale Netzwerk wird alles erlaubt!!!
$iptables -A OUTPUT -o $lan_dev -j ACCEPT
# An den Localhost wird alles erlaubt!!!
$iptables -A OUTPUT -o lo -j ACCEPT
# Ins Internet wird alles erlaubt!!!
$iptables -A OUTPUT -o $isp_dev -j ACCEPT
################
# Masquerading #
################
$iptables -A POSTROUTING -o $isp_dev -t nat -j MASQUERADE
###########
# Logging #
###########
# Alles was bis hier kommt wird mitgeloggt
#iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "
#iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "
#iptables -A INPUT -j LOG --log-prefix "Nicht rein: "
}
unset-rules () {
$iptables -t nat -F
$iptables -t mangle -F
$iptables -F
$iptables -X
}
case "$1" in
start)
echo -n "Starting service firewall"
# load modules
# setze regeln
set-rules
# setze forwarding
set-forward
echo "."
;;
stop)
echo -n "Shutting down service firewall"
# loesche forwarding
unset-forward
# loesche rules
unset-rules
# entlade module
# unload-modules
echo "."
;;
reload)
echo -n "Reloading firewall"
# loesche rules
unset-rules
# setze rules
set-rules
echo "."
;;
restart)
$0 stop && $0 start
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
;;
esac
exit 0
DHCP einrichten
TODO
DNS einrichten
siehe DNS/Bind9 für Einsteiger
Dyndns einrichten
TODO
Debmirror einrichten
siehe: Debmirror_einrichten

