Einrichten eines Rechners als Router

From LUGUM

Jump to: navigation, search

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

Persönliche Werkzeuge