[Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Serwery i sieci oparte na Slackware, wszelkiego rodzaju usługi, troubleshooting.

Moderatorzy: Moderatorzy, Administratorzy

Wild
Użytkownik
Posty: 74
Rejestracja: 2008-10-05, 11:34

[Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Wild » 2008-12-29, 17:15

Mam pewien problem. Nie wiem jak go opisze ale mam nadzieje, że zrozumiecie o co mi biega.

Mam PC i laptopa, na obu jest Slackware 12.1. Chce żeby PC udostępniał neostrade laptopowi.
Na PC umieszczam skrypt iptable w katalogu /etc/rc.d/rc.masq

Może komuś będzie potrzebna mimo tego że skrypt jak się domyślam nie jest doskonały ale działa czyli jest udostępniane połączenie internetowe laptopowi. Owy skrypt wygląda następująco:

Kod: Zaznacz cały

!/bin/bash
#=======================
#Regulki dla firewalla
#=======================
#uruchamiamy forwardowanie pakietĂłw:
echo 1 > /proc/sys/net/ipv4/ip_forward
#Czyszczenie tablic
/usr/sbin/iptables -F
/usr/sbin/iptables -X
/usr/sbin/iptables -F -t nat
/usr/sbin/iptables -t nat -X
#Domyslnie nic nie przepuszczamy
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT DROP
#
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o ppp0 -j ACCEPT
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT -m state --state NEW
/usr/sbin/iptables -A FORWARD -i eth0 -s 192.168.0.0/24 -m state --state NEW -j ACCEPT
#Dopuszczenie ruchu z sieci zewnĂŞtrznej (zaufana)
#/usr/sbin/iptables -A INPUT -i ppp0 -s 212.    191.    160.    0/24 -j ACCEPT
#Dopuszczenie wszystkich dla www
#/usr/sbin/iptables -A INPUT  -p tcp -j ACCEPT -m state --state NEW --dport 80

#Polaczenia juz nawiazane
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#MASKARADA NAT
/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
Powyższy skrypt działał na SUSE oraz działa na Slackware. Automatyczne uruchamianie iptable wyglada następująco:
1. Nadanie odpowiednich praw: chmod a+x rc.masq
2. Żeby skrypt rc.masq wykonywał się automatycznie po uruchomieniu kompa trzeba dopisać w pliku /etc/rc.local na koncu: /etc/rc.d/rc.masq. Przypominam, że to dla kogoś kto może szukać kiedyś coś na temat iptable. Wiem, że są rożne żródła np: TO ale przypominam, że ten skrypt działa czyli udostępnia połączenie 2 kompowi.

Ale do rzeczy nie mam pojęcia w jaki sposób można pod Slackware wpisać z palucha adres IP.

Wpisuje pod konsolą dla PC:

Kod: Zaznacz cały

ifconfig eth0 up ------------------- muszę podnosić kartę za każdym bo nie wstaje mi
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
Spod konsoli w laptopie wpisuje:

Kod: Zaznacz cały

ifconfig eth0 up ------------------- też nie wstaje mi tutaj karta po uruchomieniu laptopa
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
route add default gw 192.168.0.1 ----------- bramka


Po wpisaniu z palucha IP, maski pod PC i laptopem oraz bramki wtedy dopiero jest udostępniany net laptopowi. Moje pytanie brzmi czy można na sztywno wpisać parametry interfejsów tak żeby po restarcie ponownym uruchomieniu PC, laptopa były już przydzielone owe odresy.

Wcześniej miałem na PC SUSE i pod nim miałem skonfigurowanego DHCPa. Pod SUSE (PC) wpisywałem na sztywno IP oraz maskę w ustawieniach sieciowych:
IP: 192.168.0.1
maska: 255.255.255.0
a na laptopie ustawiałem w Centrum Sterowania -> Internet i sieć -> Ustawienia sieci -> konfiguracja eth0 --> automatyczne przydzielanie IP za pomocą DHCP.

Ale pod Slackware (teraz również PC) ten skrypt nie działa, nie jest przydzielany IP laptopowi za pomocą DHCP.
skrypt dhcpd.conf wygląda następująco:

Kod: Zaznacz cały

ddns-update-style interim;
ignore client-updates;
deny unknown-clients;
subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers 192.168.0.1;
  option subnet-mask 255.255.255.0;
  option nis-domain "domenalokalna";
  option domain-name "krzysiek.dom.pl";
  option domain-name-servers 194.204.159.1, 194.204.152.34;
  option time-offset 3600;
  range 192.168.0.2 192.168.0.3;
  default-lease-time 43200;
  max-lease-time 43200;
}
host Laptop {
  hardware ethernet XX:XX:XX:XX:XX:XX;
  fixed-address 192.168.0.2;
}


Serwer uruchamia się automatycznie ale nie przydziela IP laptopowi. Lub można go uruchomić za pomocą komendy: /etc/rc.d/./rc.dnsmasq start | restart | stop. Chyba to jest plik uruchamiający rc.dnsmasq bo w materiałach które przeglądałem było napisane że po uruchomieniu pliku rc.dhcpd następuje uruchomienie lub zatrzymanie lub restart serwera DHCP.

I tutaj też rodzi się pytanie w jaki sposób można skonfigurować DHCP żeby przydzielał automatycznie IP laptopowi. Tak jest chyba wygodniej jak jest przydzielany IP z DHCPa.
Ogólnie chciałbym otrzymać pomoc dzięki której PC by udostępniał neo laptopowi po restarcie lub uruchomieniu PC i laptopa. Żeby nie trzeba było z paucha wpisywać: ifconfig eth0 192.168.0.1 netmask 255.255.255.0 --> PC oraz ifconfig eth0 192.168.0.2 netmask 255.255.255.0 --> laptop i route add default gw 192.168.0.1 --> laptop.

Proszę o pomoc.
Ostatnio zmieniony 2008-12-30, 09:10 przez Wild, łącznie zmieniany 2 razy.

Awatar użytkownika
wojtekor
Użytkownik
Posty: 434
Rejestracja: 2007-08-24, 00:28
Lokalizacja: Edinburgh
Kontakt:

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: wojtekor » 2008-12-29, 17:26

Wild pisze:Spod konsoli w laptopie wpisuje:
Kod:

ifconfig eth0 up ------------------- też nie wstaje mi tutaj karta po uruchomieniu laptopa
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
route add default gw 192.168.0.1 ----------- bramka


Po wpisaniu z palucha IP, maski pod PC i laptopem oraz bramki wtedy dopiero jest udostępniany net laptopowi. Moje pytanie brzmi czy można na sztywno wpisać parametry interfejsów tak żeby po restarcie ponownym uruchomieniu PC, laptopa były już przydzielone owe odresy.
dadaj wszystkie te wpisy do /etc/rc.d/rc.local i bedziesz mial te ustawienia na stale po kazdym reboocie
linux registered user # 447967
linux registered machine # 354787

Wild
Użytkownik
Posty: 74
Rejestracja: 2008-10-05, 11:34

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Wild » 2008-12-29, 17:41

wojtekor pisze:
Wild pisze:Spod konsoli w laptopie wpisuje:
Kod:

ifconfig eth0 up ------------------- też nie wstaje mi tutaj karta po uruchomieniu laptopa
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
route add default gw 192.168.0.1 ----------- bramka


Po wpisaniu z palucha IP, maski pod PC i laptopem oraz bramki wtedy dopiero jest udostępniany net laptopowi. Moje pytanie brzmi czy można na sztywno wpisać parametry interfejsów tak żeby po restarcie ponownym uruchomieniu PC, laptopa były już przydzielone owe odresy.
dadaj wszystkie te wpisy do /etc/rc.d/rc.local i bedziesz mial te ustawienia na stale po kazdym reboocie
W jaki sposób moge dodać te wpisy dla eth0. Tak żeby automatycznie mi karta wstawała oraz przydzielany był adres ip i maska.

Jak sie domyslam trzeba skrypt napisać jakiś na uruchamianie karty oraz dopisywanie ip oraz maski następnie w rc.local podać scieżkę do tego skrytpu?
Ostatnio zmieniony 2008-12-29, 17:44 przez Wild, łącznie zmieniany 1 raz.

Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Pajaczek » 2008-12-29, 18:56

Jeny.. jakie skrypty... jakie /etc/rc.d/rc.local ?? A /etc/rc.d/rc.inet1.conf to od czego w systemie jest??

Wild
Użytkownik
Posty: 74
Rejestracja: 2008-10-05, 11:34

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Wild » 2008-12-29, 20:24

Pajaczek pisze:Jeny.. jakie skrypty... jakie /etc/rc.d/rc.local ?? A /etc/rc.d/rc.inet1.conf to od czego w systemie jest??
Wielkie dzieki zadziałało w koncu, 2 razy zrestartowałem PC i laptopa i z automatu wszystko się uruchamia.

Reasumując w pliku etc/rc.d/rc.inet1.conf --> konfiguracja dla PC (serwer - udostepnia neo) wpisałem adresy w podane miejsca.
Ustawienia dla PC:

Kod: Zaznacz cały

# Config information for eth0:
IPADDR[0]="192.168.0.1"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]="slackware.krzysiek.dom.pl" --------------->> nie wiem czy to jest potrzebne
Ustawienia dla laptopa:

Kod: Zaznacz cały

# Config information for eth0:
IPADDR[0]="192.168.0.2"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]="no"
DHCP_HOSTNAME[0]="slackware.krzysiek.dom.pl" ------------>> chyba jednak niepotrzebne, ale nie      przeszkadza w działaniu
                     :
                     :
                     :
# Default gateway IP address:
GATEWAY="192.168.0.1"
Mam jeszcze jeden problem mianowicie z iptable, po uruchomieniu skrypt rc.masq jest udostępniana neo laptopowi ale jak już pinguje laptopa (192.168.0.2) z PC (192.168.0.1):
ping 192.168.0.2
to mam odpowiedz, że:

Kod: Zaznacz cały

PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted


Natomiast jak pinguje PC(192.168.0.1) z laptopa (192.168.0.2), to jest wszystko OK, odpowiada PC.
Wina leży po stronie skryptu jak już wspominałem nie jest to doskonały skrypt. Może ktoś z Was wie co trzeba zrobić żeby nie blokować dostępu do laptopa, żeby odpowiadał mi laptop po jego spingowaniu.
Ostatnio zmieniony 2008-12-29, 20:39 przez Wild, łącznie zmieniany 1 raz.

khwll
Użytkownik
Posty: 14
Rejestracja: 2008-11-14, 20:45

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: khwll » 2008-12-29, 21:08

Wild pisze: Mam jeszcze jeden problem mianowicie z iptable, po uruchomieniu skrypt rc.masq jest udostępniana neo laptopowi ale jak już pinguje laptopa (192.168.0.2) z PC (192.168.0.1):
ping 192.168.0.2
popatrz na początkowe regułki - nie masz zezwolenia OUTPUT na interfejsie eth0 do wysyłania pakietów (w szczególności icmp)
dopisz w wierszu poleceń: iptales -I OUTPUT -i eth0 -j ACCEPT i sprawdź działanie
lub iptable -A OUTPUT.... w skrypcie

pozdrawiam
khwll

Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Pajaczek » 2008-12-30, 02:48

Niom... coś w tym stylu jak khwll, napisał. A przy okazji... dobrą polityką domyślną na zwykłym routerze dla OUTPUT jest ACCEPT a nie DROP (wówczas możesz się również pozbyć pozostałych regułek na OUTPUT). DROP zostaw dla INPUT i FORWARD (wyjątkiem dla tej reguły jest sytuacja gdy np. udostępniasz shella).

Wild
Użytkownik
Posty: 74
Rejestracja: 2008-10-05, 11:34

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Wild » 2008-12-30, 09:06

Pajaczek pisze:Niom... coś w tym stylu jak khwll, napisał. A przy okazji... dobrą polityką domyślną na zwykłym routerze dla OUTPUT jest ACCEPT a nie DROP (wówczas możesz się również pozbyć pozostałych regułek na OUTPUT). DROP zostaw dla INPUT i FORWARD (wyjątkiem dla tej reguły jest sytuacja gdy np. udostępniasz shella).
Poszło zmieniłem

Kod: Zaznacz cały

/usr/sbin/iptables -P OUTPUT DROP
na

Kod: Zaznacz cały

/usr/sbin/iptables -P OUTPUT ACCEPT
Natomiast to co napisał:
khwll pisze:popatrz na początkowe regułki - nie masz zezwolenia OUTPUT na interfejsie eth0 do wysyłania pakietów (w szczególności icmp)
dopisz w wierszu poleceń: iptales -I OUTPUT -i eth0 -j ACCEPT i sprawdź działanie lub iptable -A OUTPUT.... w skrypcie
Nie wiem czy dobrze zrozumiałem w skrypcie dopisałem:

Kod: Zaznacz cały

/usr/sbin/iptables -A OUTPUT -i eth0 -j ACCEPT
Wyskakuje mi komunikat:
nie można używać -i z OUTPUT
spróbuj iptables -h lub iptables --help dla uzyskania więcej informacji
Ogólnie skrypt wygląda tak:

Kod: Zaznacz cały

#!/bin/bash
#=======================
#Regulki dla firewalla
#=======================
#uruchamiamy forwardowanie pakietĂłw:
echo 1 > /proc/sys/net/ipv4/ip_forward
#Czyszczenie tablic
/usr/sbin/iptables -F
/usr/sbin/iptables -X
/usr/sbin/iptables -F -t nat
/usr/sbin/iptables -t nat -X
#Domyslnie nic nie przepuszczamy
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT ACCEPT
#/usr/sbin/iptables -A OUTPUT -i eth0 -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o ppp0 -j ACCEPT
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/8 -j ACCEPT -m state --state NEW
/usr/sbin/iptables -A FORWARD -i eth0 -s 192.168.0.0/8 -m state --state NEW -j ACCEPT
#Dopuszczenie ruchu
/usr/sbin/iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
#Polaczenia juz nawiazane
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#MASKARADA NAT
/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/8 -j MASQUERADE
WIELKIE dzięki za pomoc wszystkim za sztywne ip oraz iptable
Ostatnio zmieniony 2008-12-30, 09:09 przez Wild, łącznie zmieniany 1 raz.

khwll
Użytkownik
Posty: 14
Rejestracja: 2008-11-14, 20:45

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: khwll » 2008-12-30, 10:28

Wild pisze:
... w skrypcie dopisałem:

Kod: Zaznacz cały

/usr/sbin/iptables -A OUTPUT -i eth0 -j ACCEPT
Wyskakuje mi komunikat:
nie można używać -i z OUTPUT
/usr/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/8 -j ACCEPT -m state --state NEW
/usr/sbin/iptables -A FORWARD -i eth0 -s 192.168.0.0/8 -m state --state NEW -j ACCEPT
/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/8 -j MASQUERADE
[/code]
mea maxima culpa - uderzam się w cherlawą pierś!
napisałem coś czego nie używam i nie sprawdziłem - iptables nie akceptuje OUTPUT na interfejsie! zawsze jednak użyć lepiej adresu i maski.
tylko dlaczego używasz złej maski? powinno być conajmniej 16-bitowa a z Twego pierszego postu masz 24-bitową (255.255.255.0) więc i tu należałoby to poprawić (to już właściwie kosmetyka)

khwll

Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: Pajaczek » 2008-12-30, 14:08

khwll pisze:iptables nie akceptuje OUTPUT na interfejsie!
No niezupełnie tak, ale ja ślepok też nie zwróciłem wcześniej uwagi na to... w łańcuchu OUTPUT jak najbardziej może być użyty interfejs, ale nie wejsciowy ;) tylko wyjściowy (no bo niby jak miało by coś wejść interfejsem jak jest OUT)... a więc

Kod: Zaznacz cały

iptables -A OUTPUT -o eth0 -j ACCEPT
gdyż iż...
-i -interface wejsciowy (in)
-o - interface wyjściowy (out)
Wild, taka uwaga. Jak już zmieniłeś politykę OUTPUT na ACCEPT, to wszelkie kolejne regułki zezwalające (ACCEPT) dla tego łańcucha tracą sens. A więc możesz je ze skryptu usunąć. Sens miły by na przykład odrzucające (DROP), lub puste (bez podania celu - takie dla celów statystycznych).

tompl
Użytkownik
Posty: 20
Rejestracja: 2008-07-05, 15:30
Lokalizacja: Olsztyn
Kontakt:

Re: [Rozw]udostepnianie neo - iptable, DHCP, przydzielanie IP

Post autor: tompl » 2008-12-31, 14:36

moduly sa wczytywane poprzez rc.M w /etc/rc.d/

Kod: Zaznacz cały

#!/bin/sh
#
# rc.M          This file is executed by init(8) when the system is being
#               initialized for one of the "multi user" run levels (i.e.
#               levels 1 through 6).  It usually does mounting of file
#               systems et al.
#
# Version:      @(#)/etc/rc.d/rc.M      2.23    Wed Feb 26 19:20:58 PST 2003
#
# Author:       Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#               Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
#

# Tell the viewers what's going to happen.
echo "Going multiuser..."

# Update all the shared library links:
if [ -x /sbin/ldconfig ]; then
  echo "Updating shared library links:  /sbin/ldconfig &"
  /sbin/ldconfig &
fi
Musisz tam skopiowiac i poprawic warunek if, by wgrywal z automata plik rc.*
Ostatnio zmieniony 2008-12-31, 14:41 przez tompl, łącznie zmieniany 3 razy.

ODPOWIEDZ