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
bardzo przydatne informacje