Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Maskarada - konfiguracja routera  (Przeczytany 7063 razy)

matulik

  • Gość
Maskarada - konfiguracja routera
« dnia: 2012-12-29, 00:22:58 »
Witam. Mam problem z konfiguracją komputera pod router. Sytuacja wygląda tak:

mat-srv configs # ifconfig
eth0: flags=4163  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::21c:c0ff:fe4b:ba7b  prefixlen 64  scopeid 0x20
        ether 00:1c:c0:4b:ba:7b  txqueuelen 1000  (Ethernet)
        RX packets 398  bytes 179271 (175.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 430  bytes 57999 (56.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20e:2eff:fe72:5a45  prefixlen 64  scopeid 0x20
        ether 00:0e:2e:72:5a:45  txqueuelen 1000  (Ethernet)
        RX packets 1695  bytes 169462 (165.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1236  bytes 283176 (276.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Gdzie:
eth0 -  to karta sieciowa podpięta bezpośrednio do modemu ADSL, adres pozyskiwany automatycznie z modemu;
eth1 - to karta sieciowa podpięta do switcha która będzie udostępniać połączenie dalej

Serwer DHCP działa dobrze:
option domain-name "mat-srv";
option domain-name-servers 10.0.0.1;
option routers 10.0.0.1;
ddns-update-style none;

default-lease-time 600;
max-lease-time 7200;

subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.2 10.0.0.100;
}

host matulik-pc {
    hardware ethernet DC:0E:A1:65:C1:F4;
    fixed-address 10.0.0.2;
    option routers 10.0.0.1;
    option broadcast-address 10.0.0.255;
}
plik resolv.conf:
# Generated by dhcpcd from eth0
# /etc/resolv.conf.head can replace this line
nameserver 192.168.1.1
# /etc/resolv.conf.tail can replace this line
192.168.1.1 to adres ip modemu.

Adresy są ładnie przypisywane do komputerów, jednak mam problem z udostępnianiem łącza.
Mam taki skrypt:
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -A FORWARD -i eth1 -s 10.0.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i eth0 -d 10.0.0.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Po wykonaniu tego skryptu na komputerze w sieci lokalnej działają takie usługi jak gg, skype, jednak nie działają strony. Nie pinguje niczego po nazwie domeny. Wygląda jakby problem był z dns-em.

Dziwną sprawą też jest, że z lokalnego komputera mam dostęp modemu (192.168.1.1) chociaż jest on wogóle z innej klasy adresów.

Ma ktoś pomysł, jak naprawić ten problem, oraz ewentualnie inaczej napisać reguły iptables to prawidłowego i bezpiecznego działania routera?

matulik

  • Gość
Maskarada - konfiguracja routera
« Odpowiedź #1 dnia: 2012-12-29, 01:25:39 »
Udało mi się uzyskać dostęp do internetu na komputerze lokalnym poprzez dodanie "na sztywno" DNSów w konfiguracji DHCP.

Teraz zostało tylko odpowiednie zabezpieczenie serwera.
Dopóki nie funkcjonował on jako router, używałem następujących reguł:

#!/bin/bash
#deklaracja zmiennych
IPTABLES=/sbin/iptables #scieka do iptables
NO_ROUTING=0

OPEN_FTP=0
OPEN_SSH=1
OPEN_HTTP=1
OPEN_PING=1
OPEN_SAMBA=1
OPEN_NOIP=1
OPEN_RSYNC=1
OPEN_TORRENTS=1

#czscimy
$IPTABLES -F
#Dropujemy wszystko
#$IPTABLES -P INPUT DROP
if [ "$NO_ROUTING" = "1" ]; then
$IPTABLES -P FORWARD DROP
fi

if [ "$OPEN_FTP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 21 -j ACCEPT
echo "Dodawanie regul dla ftp.."
fi

if [ "$OPEN_SSH" = "1" ]; then
$IPTABLES -I INPUT -p tcp --dport 22 -j ACCEPT
#$IPTABLES -A INPUT --protocol tcp --destination-port 22 -j ACCEPT
echo "Dodawanie regul dla ssh.."
fi

if [ "$OPEN_HTTP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 80 -j ACCEPT
echo "Dodawanie regul dla http.."
fi

if [ "$OPEN_RSYNC" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 873 -j ACCEPT
echo "Dodawanie regul dla rsync.."
fi

if [ "$OPEN_SAMBA" = "1" ]; then
$IPTABLES -A INPUT --protocol udp -s 10.0.0.0/24 --destination-port 137 -j ACCEPT
$IPTABLES -A INPUT --protocol udp -s 10.0.0.0/24 --destination-port 138 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp -s 10.0.0.0/24 --destination-port 139 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp -s 10.0.0.0/24 --destination-port 445 -j ACCEPT
echo "Dodawanie regul dla samba.."
fi

if [ "$OPEN_NOIP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 8245 -j ACCEPT
echo "Dodawanie regul dla noip.."
fi

if [ "$OPEN_PING" = "1" ]; then
$IPTABLES -A INPUT --protocol icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT --protocol icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT --protocol icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT --protocol icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Dodawanie regul dla ping..."
fi

if [ "$OPEN_TORRENTS" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 6881:6899 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp --destination-port 6969 -j ACCEPT

echo "Dodawanie regul dla torrents.."
fi


########POWROT#######
#FTP
$IPTABLES -A INPUT --protocol tcp --source-port 21 -j ACCEPT
#HTTP
$IPTABLES -A INPUT --protocol tcp --source-port 80 -j ACCEPT
#SHTTP
$IPTABLES -A INPUT --protocol tcp --source-port 8080 -j ACCEPT
#SSH
$IPTABLES -A INPUT --protocol tcp --source-port 22 -j ACCEPT
#DNS
$IPTABLES -A INPUT --protocol udp --source-port 53 -j ACCEPT
#NOIP
$IPTABLES -A INPUT --protocol tcp --source-port 8245 -j ACCEPT
#RSYNC
$IPTABLES -A INPUT --protocol tcp --source-port 873 -j ACCEPT
#TORRENTS
$IPTABLES -A INPUT --protocol tcp --source-port 6881:6899 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp --source-port 6969 -j ACCEPT
Jak to połączyć wraz z maskaradą powyżej, żeby miało to ręce i nogi i było w miare dobrym zabezpieczeniem mojego serwera?

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Maskarada - konfiguracja routera
« Odpowiedź #2 dnia: 2012-12-29, 05:53:50 »
Zajrzyj do tego tematu http://forum.linux.pl/viewtopic.php?id=19705&action=new i dostosuj skrypt do swoich potrzeb. Jeśli masz zmienne IP, to zamiast snat i dnat użyj maskarady. W skrócie powinno to wyglądać mniej więcej tak.

# Czyszczenie reguł

iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X

# Polityka bezpieczeństwa (odrzuca cały ruch sieciowy możesz dostosować do własnych potrzeb)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Reguły dotyczące pętli zwrotnej

iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

# Reguły zezwalające tylko na ruch z połączeń inicjowanych z wewnątrz sieci i już nawiązanych oraz do DMZ


iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Udostępnianie połączenia - NAT

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
Cytuj
Dopóki nie funkcjonował on jako router, używałem następujących reguł
Te same reguły dodajesz do łańcucha input przed regułami dla tego łańcucha. Jeśli zaś chodzi o FTP, przy polityce bezpieczeństwa zaproponowanej przeze mnie, powinieneś uruchomić moduł ip_conntrack_ftp do śledzenia portów, wykorzystywanych podczas sesji FTP.

matulik

  • Gość
Maskarada - konfiguracja routera
« Odpowiedź #3 dnia: 2012-12-29, 20:09:21 »
Dzięki. Udało mi się wszystko ładnie uruchomić :)

Tylko mam teraz inny problem. Ustawiłem na modemie DMZ na adres ip serwera (na eth0) i mimo to usługi nie są na niego przekazywane.
Po wpisaniu ip serwera przekierowuje mnie (nawet z zewnątrz) do konfiguracji modemu.

Jest to problem konfiguracji modemu czy coś z iptables?

#!/bin/bash
#deklaracja zmiennych
IPTABLES=/sbin/iptables #scieka do iptables

OPEN_FTP=0
OPEN_SSH=1
OPEN_HTTP=1
OPEN_PING=1
OPEN_SAMBA=1
OPEN_NOIP=1
OPEN_RSYNC=1
OPEN_TORRENTS=1

#czscimy
$IPTABLES -F
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X

#Dropujemy wszystko
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT #DROP!

####REGULY DLA SERWERA####
if [ "$OPEN_FTP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 21 -j ACCEPT
echo "Dodawanie regul dla ftp.."
fi

if [ "$OPEN_SSH" = "1" ]; then
$IPTABLES -I INPUT -p tcp --dport 22 -j ACCEPT
#$IPTABLES -A INPUT --protocol tcp --destination-port 22 -j ACCEPT
echo "Dodawanie regul dla ssh.."
fi

if [ "$OPEN_HTTP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 80 -j ACCEPT
echo "Dodawanie regul dla http.."
fi

if [ "$OPEN_RSYNC" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 873 -j ACCEPT
echo "Dodawanie regul dla rsync.."
fi

if [ "$OPEN_SAMBA" = "1" ]; then
$IPTABLES -A INPUT --protocol udp -s 192.168.0.0/16 --destination-port 137 -j ACCEPT
$IPTABLES -A INPUT --protocol udp -s 192.168.0.0/16 --destination-port 138 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp -s 192.168.0.0/16 --destination-port 139 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp -s 192.168.0.0/16 --destination-port 445 -j ACCEPT
echo "Dodawanie regul dla samba.."
fi

if [ "$OPEN_NOIP" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 8245 -j ACCEPT
echo "Dodawanie regul dla noip.."
fi

if [ "$OPEN_PING" = "1" ]; then
$IPTABLES -A INPUT --protocol icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT --protocol icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT --protocol icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT --protocol icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Dodawanie regul dla ping..."
fi

if [ "$OPEN_TORRENTS" = "1" ]; then
$IPTABLES -A INPUT --protocol tcp --destination-port 6881:6899 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp --destination-port 6969 -j ACCEPT

echo "Dodawanie regul dla torrents.."
fi


########POWROT#######
#FTP
$IPTABLES -A INPUT --protocol tcp --source-port 21 -j ACCEPT
#HTTP
$IPTABLES -A INPUT --protocol tcp --source-port 80 -j ACCEPT
#SHTTP
$IPTABLES -A INPUT --protocol tcp --source-port 8080 -j ACCEPT
#SSH
$IPTABLES -A INPUT --protocol tcp --source-port 22 -j ACCEPT
#DNS
$IPTABLES -A INPUT --protocol udp --source-port 53 -j ACCEPT
#NOIP
$IPTABLES -A INPUT --protocol tcp --source-port 8245 -j ACCEPT
#RSYNC
$IPTABLES -A INPUT --protocol tcp --source-port 873 -j ACCEPT
#TORRENTS
$IPTABLES -A INPUT --protocol tcp --source-port 6881:6899 -j ACCEPT
$IPTABLES -A INPUT --protocol tcp --source-port 6969 -j ACCEPT

##############ROUTING##################

#Petla zwrotna
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A FORWARD -o lo -j ACCEPT

#Ruch tylko wewnatrz sieci oraz DMZ
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#Przekierowania
$IPTABLES -t nat -I PREROUTING 1 --protocol tcp --destination-port 8080 -j DNAT --to-destination 192.168.0.20:8080
$IPTABLES -t nat -I PREROUTING 1 --protocol tcp --destination-port 12000 -j DNAT --to-destination 192.168.0.20:12000
$IPTABLES -t nat -I PREROUTING 1 --protocol tcp --destination-port 16000 -j DNAT --to-destination 192.168.0.20:16000
$IPTABLES -t nat -I PREROUTING 1 --protocol tcp --destination-port 16001 -j DNAT --to-destination 192.168.0.20:16001
$IPTABLES -t nat -I PREROUTING 1 --protocol udp --destination-port 16001 -j DNAT --to-destination 192.168.0.20:16001

#Maskarada
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
$IPTABLES -A FORWARD -s 192.168.0.0/16 -j ACCEPT
Edit:
Przekierowania z modemu działają dobrze, także mam problem z przekierowaniem w iptables.
Chce aby te porty były przekierowane w obie strony na zewnątrz. Co jest nie tak?

matulik

  • Gość
Maskarada - konfiguracja routera
« Odpowiedź #4 dnia: 2012-12-30, 10:21:22 »
Problem rozwiązany. Miałem poprostu ustawione INPUT, OUTPUT I FORWARD na DROP. Dodałem reguły zezwalające na dostęp do sieci z przekierowanych portów i już działa :)

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Maskarada - konfiguracja routera
« Odpowiedź #5 dnia: 2013-01-01, 16:49:13 »
Cytat: matulik
Przekierowania z modemu działają dobrze, także mam problem z przekierowaniem w iptables.
Chce aby te porty były przekierowane w obie strony na zewnątrz. Co jest nie tak?
Chodzi o to, że pakiet wysłany z sieci na adres zewnętrzny (zewnętrzny mam na myśli na interfejsie wyjściowym za NATem, niekoniecznie musi to być adres publiczny), dociera do bramy, ale z niej nie wraca. Dodaj taką regułkę i powinno pomóc.

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -d x.x.x.x -j SNAT --to 192.168.0.20
Gdzie: x.x.x.x to adres zewnętrzny, natomiast eth1 zakładam, że jest interfejsem sieci lokalnej, czyli jeśli pakiet przyjdzie z adresem źródłowym z sieci 192.168/16 na adres docelowy (adres zewnętrzny) przez interfejs sieci lokalnej, przekaż go do hosta o adresie IP podanym w regule.

Problemem może być tylko jeśli masz zmienne IP.

fnowak7

  • Gość
Maskarada - konfiguracja routera
« Odpowiedź #6 dnia: 2013-04-21, 18:32:34 »
Mi się też tak wydaję.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Maskarada - konfiguracja routera
« Odpowiedź #7 dnia: 2013-04-21, 19:18:21 »
Cytat: fnowak7
Mi się też tak wydaję.
@fnowak7 - strzał ostrzegawczy za posty nie wnoszące nic do wątku.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy