iproute2 - multirouting

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

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
haclet
Użytkownik
Posty: 40
Rejestracja: 2004-06-13, 21:34
Lokalizacja: ŁódĽ/Opole

iproute2 - multirouting

Post autor: haclet »

Witajcie...

Mam problem który nałogowicznie pojawia się w internecie - przeczytałem wiele stron, wiele rzeczy zrobiłem czytając materiały napisane przez innych w sieci... i niestety to co robię nie działą do końca, a już opisuję co dokładnie robię :D

Sieć jest następująca:

Kod: Zaznacz cały

LAN 
  [ 192.168.100.0/24 ]
  [ 192.168.1.0/24 ]
  |
  |
ROUTER (LINUX)
  -  ETH0 (Interfejs z IP zewnętrznym [1Dostawca]) 
           [ 10.0.0.0/24 ]
  -  ETH1 (Interfejs z 2 lanami) 
           [ 192.168.100.0/24 ]
           [ 192.168.1.0/24 ] 
  -  ETH2 (interfejs z IP zewnętrznym [2 Dostawca]) 
           [ 192.168.10.10/24 ]
Teraz muszę tak skonfigurować linuxa aby pakiety z sieci 192.168.100.0/24 były kierowane na interfejs ETH2 (i tylko przez niego przechodziły).

Oczywiście postępowałem według instrukcji: (iptables mark i iproute2).

Kod: Zaznacz cały

echo 200 test_newtable >> /etc/iproute2/rt_table
ip rule add from 192.168.100.0/24 fwmark 1 dev eth1 table test_newtable
ip route add default IP_OD_GW_2_Dostawcy dev eth2 table test_newtable

iptables -t mangle -A PREROUTING -i eth1 -s 192.168.100.0/24 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j SNAT --to-source 192.168.10.10
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
I wszystko powinno teraz ladnie dzialać, czyli:
- Pakiety z sieci 192.168.1.0 - powinny być natowane i wysyłane przez interfejs eth0 z adresem 10.0.0.8 (działa)
- Pakiety z sieci 192.168.100.0 - powinny być natowane i wysyłane przez interfejs eth2 z adresem 192.168.10.10 (działa).

Problem jest w tym że jeżeli wysyłam pakiety z sieci 192.168.100.0 - wychodzą one przez eth2, docierają do celu - wracają od celu przez eth2 i .... i pakiet nagle znika (nie wraca już do komputera z sieci 192.168.100.0)... Problemem jest albo nat (coś nie tak) - albo z routingiem.

Tak wygląda tcpdump z eth2 - jak wysłany jest pakiet z sieci 192.168.100.0:

Kod: Zaznacz cały

16:04:45.488000 IP 192.168.100.10 > 195.116.132.4: icmp 64: echo request seq 1
16:04:45.488392 IP 192.168.10.10 > 195.116.132.4: icmp 64: echo request seq 1
16:04:45.543657 IP 195.116.132.4 > 192.168.10.10: icmp 64: echo reply seq 1
Jak widać pakiet został wysłany (nat zadziałał) - i pakiet powrócił. Ale powrócił do linuxa (tego ze schematu wyżej) - i dalej już nie dociera nigdzie. (Nie ma już wysłania pakietu do komputer 192.168.100.10)

Na linuxie nie ma żadnego firewalla !!! (Są tylko te regułki, które napisałem).

Tak więc zgłaszam się z kilkoma pytaniami:
1) Jak (czy jest) możliwość monitoringu pakietów przechodzących przez iptables (nie logowanie - to nie działa - na logowaniu otrzymuję dokładnie to co pokazuje mi tcpdump - czyli pakiet wchodzi i ginie -logowanie na wszystkich tabelach: nat, mangle, etc).
2) Jak korzystać z narzędzie rtmon, ip monitor route, (iproute2) - dane są zapisywane do plików ale nie wiem jak je odczytać...
3) Jak sprawdzić dlaczego pakiet ginie ... cokolwiek - jakiś debug (tak jak w cisco routerach, etc???)
4) Ktoś miał podobny problem - jak tak - to będę wdzięczny za jakąkolwiek pomoc.

Na tyle co ja widzę to jest jakiś problem z natem połączonym z iproute2 - czy jest możliwość śledzenia połączeń nat'a: cat /proc/...cos_tam... ??

Pozdrawiam
:)
i zaprawszam do rozwiązania problemu ;)

[ Dodano: 2004-08-03, 15:13 ]
Jakoże nikt tutaj nic nie miał do dodania, to postanowiłem odpowiedzieć samemu sobie ;-)

Oczywiście nie do końca rozumiem jak mi to zaczęło działać - ale działa - tak więc pragnę się podzielić informacjami z wami.

Przedstawiam rozwiązanie do zagadnienia jakie przestawiłem wcześniej. Jeden linux - 2 łącza dostawców podłączone do niego.
Normal - normalne łącze.
Mel - dodatkowe łącze.

Zamieszczam skrypty - gdyż szybciej to będzie opisane.
Konfiguracja jest najprostrza jaka może być, ale za to działająca:

Konfiguracja iptables: (iptables.sh)

Kod: Zaznacz cały

#!/bin/sh

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t mangle -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j SNAT --to-source 192.168.10.10
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
Oczywiście jest to tylko zwykły SNAT - każda osoba choć raz pisząca swojego firewalla wie, że to wystarcza aby LAN miał interenet. Ale nie wystarcza do tego aby np działał FTP, IRC lub żeby taki firewall zabezpieczył serwer. Ale celem tego dokumentu nie jest przekazanie informacji o super firewallu, tylko o tym jak zrobić aby przy pomocy linuxa ruch był kierowany na poszczególne łącze w zależności od adresu z jaikiego jest wysłany.

Powyższe dwie linijki - oznaczają to iż pakiety z sieci 192.168.100.0/24 mają wychodzić przez interfejs eth2 a pakiety z sieci 192.168.1.0/24 mają wychodzić przez interfejs eth0.

Teraz najważniejsza część - gdyż stworzenie odpowiednich tablic routingu tak aby to działało.

Routing: (iproute2.sh)

Kod: Zaznacz cały

!/bin/sh

ip link set dev eth0 down
ip link set dev eth1 down
ip link set dev eth2 down

ip addr flush dev eth0
ip addr flush dev eth1
ip addr flush dev eth2

ip link set dev eth0 up
ip link set dev eth1 up
ip link set dev eth2 up

ip addr add 10.0.0.8/24 brd + dev eth0
ip addr add 192.168.1.20/24 brd + dev eth1
ip addr add 192.168.100.1/24 brd + dev eth1
ip addr add 192.168.10.10/24 brd + dev eth2

ip ru | \
egrep -v "^0:" | egrep -v "^32766:" | egrep -v "^32767:" | \
cut -d":" -f 2 | \
while read RULE; do ip ru d $RULE;
done

ip rule add from 10.0.0.8 pref 500 table normal
ip rule add from 192.168.1.0/24 pref 501 table normal
ip rule add from 192.168.10.10 pref 410 table mel
ip rule add from 192.168.100.0/24 pref 411 table mel

ip route flush table mel

ip route add default via 10.0.0.2 dev eth0 table normal
ip route add default via 192.168.10.20 dev eth2 table mel

ip route sh table normal
ip route sh table mel

ip route sh | grep -v ^default | while read ROUTE; do \
ip route a ${ROUTE} table mel
ip route a ${ROUTE} table normal
done

# --- default ---
ip route del default
ip route add default via 10.0.0.2 dev eth0

# --- Must be ---
ip route flush cache
ip r s
Powyższy skrypt ustawi interfejsy i tablice routingu na serwerze:

Kod: Zaznacz cały

$ip a
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:00:e8:ef:54:a6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:10:a7:20:41:72 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global eth1
    inet 192.168.100.1/24 brd 192.168.100.255 scope global eth1
4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:05:1c:13:5f:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.10/24 brd 192.168.10.255 scope global eth2

$ip ru
0:      from all lookup local
410:    from 192.168.10.10 lookup mel
411:    from 192.168.100.0/24 lookup mel
500:    from 10.0.0.8 lookup normal
501:    from 192.168.1.0/24 lookup normal
32766:  from all lookup main
32767:  from all lookup default
Przy takiej konfiguracji - działa dokładnie to co chciałem - czyli w zależności z jakiej sieci pochodzi pakiet, jest odpowiednio kierowny na poszczególny interfejs.

Oto dowody tego że tak jest jak powinno być:
Pakiet z sieci 192.168.1.0/24:

Kod: Zaznacz cały

ICMP echo req (84 bytes) from 192.168.1.25 to 213.180.130.200 (src HWaddr 00e098a31960) on eth1                                       
ICMP echo req (84 bytes) from 10.0.0.8 to 213.180.130.200 (src HWaddr 0000e8ef54a6) on eth0                                           
ICMP echo rply (84 bytes) from 213.180.130.200 to 10.0.0.8 (src HWaddr 00300a0e4893) on eth0                                          
ICMP echo rply (84 bytes) from 213.180.130.200 to 192.168.1.25 (src HWaddr 0010a7204172) on eth1
Pakiet wyszedł z sieci na adres zw. przez interfejs eth0 i przez niego powrócił.

Pakiet z sieci 192.168.100.0/24:

Kod: Zaznacz cały

ICMP echo req (84 bytes) from 192.168.100.10 to 213.180.130.200 (src HWaddr 00e098a31960) on eth1                                     
ICMP echo req (84 bytes) from 192.168.10.10 to 213.180.130.200 (src HWaddr 00051c135f8d) on eth2                                      
ICMP echo rply (84 bytes) from 213.180.130.200 to 192.168.10.10 (src HWaddr 0010a70d9f88) on eth2                                     
ICMP echo rply (84 bytes) from 213.180.130.200 to 192.168.100.10 (src HWaddr 0010a7204172) on eth1
Pakiet wyszedł z sieci na adres zw. przez interfejs eth2 i przez niego powrócił.

Czyli - pełny sukces: :D

Niestety - takie rozwiązanie ma też kilka wad: :(
1) nie wiem do końca dlaczego to działa - a tak naprawdę nie wiem jak jest zarządzany routing przez kernel w iproute2. Te regułki, które podałem były rezultatem najróżniejszych eksperymentów, aż w końcu zadziałało, ale do końca nie wiem jak to działa.
2) Jak na razie nie udało mi się zrobić tego przy pomocy mark'a z iptables.

Jakoże przy roziwązaniu problemu pomogło mi wiele dokumentów, tak więc postanowiłem że umieszczę linki od tych najważniejszych i najbardziej konkretnych - aby innym ułatwić podobne problemy:
- http://www.ssi.bg/~ja/ (Patche do jądra)
- http://linux-ip.net/html/adv-rpdb.html
- http://lartc.org/howto/lartc.rpdb.multiple-links.html

Należą się też podziękowania dla wszystkich tych co przez kilkanaście dni służyli mi chętnie pomocą @ 8)

PS.
Jak będę miał chwilkę czasu - to napiszę ładny dokument - opisujący to wszystko.

Pozdrawiam ;)
Pozdrawiam ;-]
Nie amator - nie elita... ;-)
Teddy47
Użytkownik
Posty: 12
Rejestracja: 2005-03-02, 00:16
Lokalizacja: Zdzieszowice
Kontakt:

Re: iproute2 - multirouting

Post autor: Teddy47 »

Witam.

Mam pewien problem z iproute2.

Tak wyglada mój plik /etc/iproute2/rt_tables:

Kod: Zaznacz cały

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
2       kolej
3       dsl
4       polpak
Tak wygląda mój firewall:

Kod: Zaznacz cały

#!/bin/bash
echo "Laduje moduly do iptables";
/sbin/modprobe ipt_conntrack;
/sbin/modprobe ip_conntrack;
/sbin/modprobe ip_conntrack_ftp;
/sbin/modprobe ip_conntrack_irc;
/sbin/modprobe ip_nat_ftp;
/sbin/modprobe ip_nat_irc;
/sbin/modprobe ip_nat_snmp_basic;
/sbin/modprobe ipt_p2p;
/sbin/modprobe ipt_ipp2p;
/sbin/modprobe ipt_TTL;

echo "Wlaczamy forwarding pakietow";
echo "1" > /proc/sys/net/ipv4/ip_forward;

echo "Czyszcze iptables";
iptables -F INPUT;
iptables -F FORWARD;
iptables -F OUTPUT;
iptables -F -t nat;

echo "Ustawiam polityke zabezpieczen.";
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P INPUT DROP

echo "Zamykamy dziurke w iptables"
iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP;

echo "Pozwalamy na ruch na petli lokalnej";
iptables -A INPUT -i lo -j ACCEPT;
iptables -A OUTPUT -o lo -j ACCEPT;
iptables -A INPUT -i eth1 -j ACCEPT;

echo "Pozwalamy na polaczenia juz dzialajace";
iptables -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED;
iptables -A INPUT -p tcp -j ACCEPT -m state --state RELATED;
iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED;
iptables -A INPUT -p udp -j ACCEPT -m state --state RELATED;
iptables -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED;
iptables -A INPUT -p icmp -j ACCEPT -m state --state RELATED;

echo "Nie pozwalamy na flood-pingi";
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEP
T;
iptables -A INPUT -p icmp -s 0/0 -d 0/0 --icmp-type echo-reply -j ACCEPT;
iptables -A INPUT -p icmp -s 0/0 -d 0/0 --icmp-type time-exceeded -j ACCEPT;
iptables -A INPUT -p icmp -s 0/0 -d 0/0 -j DROP;

echo "Blokujemy porty wykorzystywane przez wirusy";
VIRUS_PORT_DENY="135 137 138 139 445 1025 2745 3127 4751 6129 6346 17300";
if [ ! "$VIRUS_PORT_DENY" == "" ]; then
    for i in $VIRUS_PORT_DENY
    do
    iptables -A FORWARD -p tcp -s 0/0 --dport $i -j DROP;
    iptables -A FORWARD -p udp -s 0/0 --dport $i -j DROP;
    iptables -A FORWARD -p tcp -d 0/0 --dport $i -j DROP;
    iptables -A FORWARD -p udp -d 0/0 --dport $i -j DROP;
    done
fi

echo "Wpuszczamy na serwer do wybranych uslug";
echo "20, 21, 25, 53, 60, 110, 443, 465, 201, 202, 203";
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 20 -m state --state NEW,RELATED,E
STABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 21 -m state --state NEW,RELATED,E
STABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 22 -m state --state NEW,RELATED,E
STABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 25 -m state --state NEW,RELATED,E
STABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 53 -m state --state NEW,ESTABLISH
ED -j ACCEPT;
iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 53 -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 80 -m state --state NEW,ESTABLISH
ED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 110 -m state --state NEW,ESTABLIS
HED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 465 -m state --state NEW,RELATED,
ESTABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 443 -m state --state NEW,ESTABLIS
HED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 8080 -m state --state NEW,RELATED
,ESTABLISHED -j ACCEPT;
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3128 -m state --state NEW,RELATED
,ESTABLISHED -j ACCEPT;

echo "Zezwolenie na forwarding pakietow w sieci wewnetrznej";
iptables -A FORWARD -i eth1 -s 10.10.0.0/16 -j ACCEPT;

echo "Zezwalamy na ruch w ramach juz dozwolonych pakietow";
iptables -A FORWARD -p tcp -j ACCEPT -m state --state ESTABLISHED;
iptables -A FORWARD -p tcp -j ACCEPT -m state --state RELATED;
iptables -A FORWARD -p udp -j ACCEPT -m state --state ESTABLISHED;
iptables -A FORWARD -p udp -j ACCEPT -m state --state RELATED;
iptables -A FORWARD -p icmp -j ACCEPT -m state --state ESTABLISHED;
iptables -A FORWARD -p icmp -j ACCEPT -m state --state RELATED;

echo "Maskarada w sieci wewnetrznej";
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -o eth0 -j MASQUERADE;

#echo "Przekierowanie www na SQUIDa";
#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.10.10.251:8080
Mam 3 łącza:
KOLPAK 2mpbs - eth0
DSL 2mbps - eth2
POLPAK-T 2mbps - eth3

sieć lokalna na eth1 (10.10.0.0/16).

Brama dla komputerów w sieci lokalnej to ip serwera czyli 10.10.10.251.

Mój plik z ustawieniami iproute wygląda tak:

Kod: Zaznacz cały

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to-source 82.160.38.130
iptables -t nat -A POSTROUTING -s 10.10.11.0/24 -o eth2 -j SNAT --to-source 83.16.58.130
iptables -t nat -A POSTROUTING -s 10.10.11.16 -o eth3 -j SNAT --to-source 192.168.1.2
#iptables -t nat -A POSTROUTING -s 10.10.10.251 -o eth0 -j SNAT --to-source 82.160.38.130
echo "3";
ip link set dev eth0 down
ip link set dev eth1 down
ip link set dev eth2 down
#ip link set dev eth3 down
echo "4";
ip addr flush dev eth0
ip addr flush dev eth1
ip addr flush dev eth2
#ip addr flush dev eth3
echo "5";
ip link set dev eth0 up
ip link set dev eth1 up
ip link set dev eth2 up
#ip link set dev eth3 up
echo "6";
ip addr add 82.160.38.130/28 brd + dev eth0
ip addr add 10.10.10.0/24 brd + dev eth1
ip addr add 10.10.11.0/24 brd + dev eth1
ip addr add 83.16.58.130/30 brd + dev eth2
#ip addr add 192.168.1.2/24 brd + dev eth3
echo "7";
ip ru | egrep -v ^0: | egrep -v ^32766: | egrep -v ^32767: | cut -d: -f 2 | while read RULE;
do ip ru d $RULE;
done
echo "8";
ip rule add from 82.160.38.130 pref 500 table kolej
ip rule add from 10.10.10.0/24 pref 501 table kolej
ip rule add from 83.16.58.130 pref 410 table dsl
ip rule add from 10.10.11.0/24 pref 411 table dsl
#ip rule add from 192.168.1.2 pref 310 table polpak
#ip rule add from 10.10.11.16 pref 311 table polpak
echo "9";
ip route flush table dsl
#ip route flush table polpak
ip route add default via 82.160.38.129 dev eth0 table kolej
ip route add default via 83.16.58.129 dev eth2 table dsl
#ip route add default via 192.168.1.1 dev eth3 table polpak
echo "10";
ip route sh table kolej
ip route sh table dsl
#ip route sh table polpak
echo "11";
ip route sh | grep -v ^default | while read ROUTE; do
ip route a ${ROUTE} table dsl
ip route a ${ROUTE} table kolej
#ip route a ${ROUTE} table polpak
done
echo "12";
ip route del default
echo "12a";
ip route add default via 82.160.38.129 dev eth0
echo "13";
ip route flush cache
ip r s
Pakiety idą tak jak powinny, tzn klasa 10.10.10.0/24 wychodzi koleją, klasa 10.10.11.0/24 wychodzi DSLem a komputer 10.10.10.251 wychodzi polpakiem.

Niestety ruch dziwnie "zamula" i nie działa na routerze część usług, tzn klienci mający wpisanego DNSa 10.10.10.251 nie mają internetu a po zalogowaniu się przez putty'ego na routerek i zrobieniu ping wp.pl wypisuje unknown host.
Pingi po IP też nie działają. Router udostępnia internet, ale sam go nie ma...
Co muszę zrobić, żeby on korzystał z jakiegoś łącza??

:cry:

Na początek chcę uruchomić to, a potem będę się męczył z podziałem ruchu na łącza ze względu na usługi.
Chciałbym P2P przekierować na POLPAK-T.
Awatar użytkownika
bzyk
Moderator w st. spocz.
Posty: 991
Rejestracja: 2004-06-05, 06:32
Lokalizacja: Pszczyna
Kontakt:

Re: iproute2 - multirouting

Post autor: bzyk »

Teddy, na początek wywaliłbym w diabły całe iptables (oprócz nat) i ustawił policy na ACCEPT. A potem sprawdził czy proglem z pingiem i dnsem dalej występuje. Jeśli dalej będzie bolało, to spróbuj puścić pinga innym interfejsem (nie defaultowym).
In /dev/null no one can hear you scream.
luka5z
Użytkownik
Posty: 19
Rejestracja: 2004-12-15, 16:22

Re: iproute2 - multirouting

Post autor: luka5z »

Problem z iproute2.
Tak wyglada /etc/iproute2/rt_tables:

Kod: Zaznacz cały

#
# reserved values
#
255     local
254     main
253     default

# dodane przeze mnie

200     T1
199     T2
0       unspec
#
# local
#
#1      inr.ruhep
A po sprawdzeniu :# ip rule show

Kod: Zaznacz cały

0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default
Z kad te roznice... ? :oops:
Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: iproute2 - multirouting

Post autor: snaj »

rule to sa rule, ich zadaniem nie jet wyswietlenie tables ale rule - jesli to nie jest dla ciebei zrozumiale to odsylam do dokumentacji ip wtedy to co napisalem stanie sie oczywiste.
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*
ODPOWIEDZ