Udostępnianie internetu na inny komputer + konfiguracja DHCP.

Poniższy artykuł pisany jest w oparciu o serwer (udostępniający) z systemem
Linux Slackware 12.1 z kernelem 2.6.28.4.

Potrzebne rzeczy.
– Serwer lub inny komputer dysponujący dwoma interfejsami sieciowymi i systemem Linux
– Drugi komputer z kartą sieciową na który udostępniamy internet.
– Kabel UTP (skrętka) skrosowany w standardzie T568B na T568A.
– Zainstalowane pakiety (iptables i DHCP)

(W moim przykładzie posługuję się interfejsami sieciowymi:
eth0 – połączenie internetowe, eth1 – udostępnia)

Na początek spinamy serwer z komputerem skrętką ,następnie tworzymy skrypt i wpisujemy do niego poniższe (a jeżeli mamy już skrypt firewalla oparty na iptables to modyfikujemy go wg podanego przykładu)

#!/bin/sh

# lokalizacja sysctl
SYSCTL=”/sbin/sysctl -w”

# lokalizacja iptables
IPTABLES=”/usr/sbin/iptables”
IPTABLESS=”/usr/sbin/iptables-save”
IPTABLESR=”/usr/sbin/iptables-restore”

# interfejs internetowy
INET_IFACE=”eth0″
INET_ADDRESS=”78.88.20.128″

# lan
LAN_IFACE=”eth1″
LAN_IP=”192.168.0.1″

# network
NET_ADDRESS=”192.168.0.0″
NET_MASK=”255.255.255.0″

# hosts
HOST_ADDRESS=”192.168.0.2″

# interfejs lokalny
LO_IFACE=”lo”
LO_IP=”127.0.0.1″

# przywracanie i zapisywanie argumentow
if [ „$1” = „save” ]
then
$IPTABLESS > /etc/sysconfig/iptables
exit 0
elif [ „$1” = „restore” ]
then
$IPTABLESR < /etc/sysconfig/iptables
exit 0
fi

# ip forward
if [ „$SYSCTL” = „” ]
then
echo 1 > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward=”1″
fi

# ignorowanie pakietów ICMP
if [ „$SYSCTL” = „” ]
then
echo „1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=”1″
fi

# przeladowanie wszystkich tabel
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t filter -F
$IPTABLES -t mangle -F

# czyszczenie wszystkich lancuchow
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t filter -X
$IPTABLES -t mangle -X

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE –source-port 68 –destination-port 67 -j ACCEPT

$IPTABLES -t filter -P FORWARD DROP
$IPTABLES -t filter -A FORWARD -s $NET_ADDRESS/$NET_MASK -d 0/0 -j ACCEPT
$IPTABLES -t filter -A FORWARD -s 0/0 -d $NET_ADDRESS/$NET_MASK -j ACCEPT

$IPTABLES -t nat -A POSTROUTING -s $NET_ADDRES -d 0/0 -j MASQUERADE

Konfiguracja DHCP (Dynamic Host Configuration Protocol)

do pliku /etc/rc.d/rc.local dopisujemy następujące linie:

ifconfig eth1 192.168.0.1 up
route add -host dhcp dev eth1
/usr/sbin/dhcpd eth1

Następnie edytujemy plik /etc/dhcpd.conf wg poniższego przykładu:

# domena
option domain-name „ns1.klodzko.linux.pl”;

# Adresy DNS (w moim przypadku vectranetu, mogą być inne wolne DNSy np z opendns.com)
option domain-name-servers 88.156.96.61, 82.139.8.7, 88.156.63.9;

# dynamicznie uaktualniane adresy DNS
ddns-update-style none;

# domyślny czas dzierżawy adresu
default-lease-time 8640000;

# maksymalny czas dzierżawy adresu
max-lease-time 8640000;

# adres podsieci DHCP
subnet 192.168.0.0 netmask 255.255.255.0 {

# zakres adresów przydzielanych przez DHCP
range 192.168.0.10 192.168.0.200;
option broadcast-address 192.168.0.255;

# adres bramy
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
}

### adresy statyczne ### (opcjonalnie)

host laptop {
# adres mac klienta
hardware ethernet 00:1b:38:0c:10:cf;

# przydzielony adres IP
fixed-address 192.168.0.2;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
}

Na koniec można jeszcze do pliku /etc/hosts dopisać:

255.255.255.255         dhcp

Teraz pozostaje tylko restart serwera i wszystko powinno działać. Dla pewności po restarcie można sprawdzić polecenie route które powinno zwrócić mniej więcej coś takiego:

Destination     Gateway           Genmask               Flags      Metric       Ref          Use      Iface
dhcp                       *          255.255.255.255       UH            0           0               0       eth1
192.168.0.0            *         255.255.255.0            U              0           0               0       eth1

Autor: Krzysztof Wnuk

  • Łukasz
    Paź 27th, 2009 at 18:27 | #1

    bardzo przydatne informacje

Zostaw komentarz