[+] IP zewn

Konfiguracja serwerów, usług, itp.
fasol_0
Posty: 6
Rejestracja: 02 marca 2010, 18:34

[+] IP zewnętrzne na IP wewnętrzne, 1 karta, 2 IP zewnętrzne

Post autor: fasol_0 »

Witam.
Na wstępie informuję, że siedziałem nad tym problemem już dłuższy czas i przeczesałem kawał odpowiedzi z Google - bez pozytywnego rezultatu.

Problem z regułką DNAT w przypadku przekierowania drugiego adresu publicznego na jednej karcie.

Chodzi o maszyną ruter z 4 eth - dla dwóch dostawców internetu i dwóch podsieci.

Kod: Zaznacz cały

ifconfig

Kod: Zaznacz cały

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:80.x.x.187  Bcast:80.x.x.191  Mask:255.255.255.248
          inet6 addr: fe80::xxx:xxx:xxx:bc53/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:84431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:92566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:38477503 (36.6 MiB)  TX bytes:49884359 (47.5 MiB)
          Memory:e1a00000-e1a20000 

eth1    Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:62.x.x.146  Bcast:62.x.x.151  Mask:255.255.255.248
          inet6 addr: fe80::xxx:xxx:xxx:f0ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1830350 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1703109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1855751741 (1.7 GiB)  TX bytes:976677441 (931.4 MiB)
          Interrupt:16 Base address:0xe100 

eth2      Link encap:Ethernet  HWaddr 00:22:6b:bb:f1:7f  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::222:6bff:febb:f17f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:100086 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85805 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:50899082 (48.5 MiB)  TX bytes:38915565 (37.1 MiB)
          Interrupt:17 Base address:0x4000 

eth3      Link encap:Ethernet  HWaddr 00:15:17:9c:bc:51  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:fe9c:bc51/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1710297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1813275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:982112668 (936.6 MiB)  TX bytes:1852930388 (1.7 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3852 (3.7 KiB)  TX bytes:3852 (3.7 KiB)
Interfejs eth0 zaopatruje w internet podsieć (eth2) 192.168.1.0/24, natomiast eth1 zaopatruje w internet podsieć (eth3) 192.168.2.0/24.

Reguły realizujące ruch.

Dodana tablica dsl do rt_tables.

Kod: Zaznacz cały

ip route sh - tablica main

Kod: Zaznacz cały

80.x.x.184/29 dev eth0  proto kernel  scope link  src 80.x.x.187 
62.x.x.144/29 dev eth1  proto kernel  scope link  src 62.x.x.146 
192.168.2.0/24 dev eth3  proto kernel  scope link  src 192.168.2.1 
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.1 
default via 62.x.x.145 dev eth1 

Kod: Zaznacz cały

ip route sh tab dsl

Kod: Zaznacz cały

80.x.x.184/29 dev eth0  proto kernel  scope link  src 80.x.x.187 
192.168.2.0/24 dev eth3  proto kernel  scope link  src 192.168.2.1 
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.1 
default via 80.x.x.185 dev eth0 

Kod: Zaznacz cały

ip ru sh

Kod: Zaznacz cały

0:	from all lookup local 
32765:	from all fwmark 0x2 lookup dsl 
32766:	from all lookup main 
32767:	from all lookup default 
rc_route - konfiguracja routingu:

Kod: Zaznacz cały

#!/bin/bash
echo "start"

ip route flush t dsl

echo "trasy do bram"
# trasa do bramy dsl
ip route add 80.x.x.184/29 dev eth0 proto kernel scope link src 80.x.x.187 table dsl
ip route add default via 80.x.X.185 table dsl

echo "zasady"
#konfiguracja tablic routingu
ip rule add fwmark 0x2 table dsl

echo "dodatkowe wpisy"
#dodatkowe wpisy dla lan
echo "1"
ip route add 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1 table dsl
ip route add 192.168.2.0/24 dev eth3 proto kernel scope link src 192.168.2.1 table dsl

ip route flush cache

#echo 0 > /proc/sys/net/ipv4/all/rp_filter
echo 12
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 >$f
done
rc_masq - prosty firewall z markowaniem i SNAT

Kod: Zaznacz cały

#!/bin/bash
echo "jedziemy fire"

modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_irc

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "polityka"

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

#iptables -F INPUT
#iptables -F OUTPUT
#iptables -F FORWARD

iptables -F PREROUTING -t nat
iptables -F POSTROUTING -t nat

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

iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -m mark --mark 0x2 -j CONNMARK --save-mark

#ustawieni adresow zrodlowych dla pakietow, ktore wylatuja poszczegolnymi interfejsami
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 80.x.x.187
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to-source 62.x.x.146

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
Dla takich ustawień (obojętne czy SNAT czy MASQUERADE) internet normalnie działa tam gdzie trzeba, każda podsieć idzie swoją drogą.

Teraz chciałbym dołożyć do tego prostego firewalla regułkę umożliwiającą przy użyciu drugiego ip publicznego dla neti, tj. 62.x.x.147, dostać się na komputer w podsieci 192.168.2.0/24 (dokładnie o adresie 192.168.2.14), na którym jest strona www odpalana poprzez https://192.168.2.14.

Użyta reguła umieszczona na samym końcu kodu rc_masq:

Kod: Zaznacz cały

iptables -A PREROUTING -t nat -i eth1 -d 62.x.x.147 -j DNAT --to-destination 192.168.2.14
Wiem, że należy dopisać do karty eth1 drugi adres - robiłem to przy użyciu konfiguracji pliku interfaces

Kod: Zaznacz cały

auto eth1
iface eth1 inet static
	address 62.x.x.146
	netmask 255.255.255.248
	network 62.x.x.144
	broadcast 62.x.x.151
	gateway 62.x.x.145
	dns-nameserver 213.241.79.37 213.241.79.38
auto eth1:1
iface eth1:1 inet static
	address 62.x.x.147
	netmask 255.255.255.248
oraz przy użyciu komendy:

Kod: Zaznacz cały

 ip a a 62.x.x.147 dev eth1
Niestety bez skutku.

Zauważyłem jedynie, że przy takiej regułce pakiety w nią nie wpadają - brak przyrostu:

Kod: Zaznacz cały

iptables -t  nat -L -n -v
usuwając -i eth1, tj.

Kod: Zaznacz cały

iptables -A PREROUTING -t nat -d 62.x.x.147 -j DNAT --to-destination 192.168.2.14
Pojawia się przyrost o 1, komunikacja przeglądarki strony się wydłuża, ale nadal nie wyświetla się odpowiednia witryna.

Proszę o pomoc i z góry dziękuję Michał D
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Reguła przekierowania dla tego pojedynczego adresu musi być przed reguła podsieci do której ten adres IP należy.

Reguły do przekierowanie IP

Kod: Zaznacz cały

iptables -t nat -A PREROUTING $PROT -s 0/0 -d $EXT_IP -j DNAT --to $LOCAL_IP
iptables -t nat -A POSTROUTING $PROT -s $LOCAL_IP -d 0/0 -j SNAT --to $EXT_IP
fasol_0
Posty: 6
Rejestracja: 02 marca 2010, 18:34

Post autor: fasol_0 »

mariaczi pisze:Reguła przekierowania dla tego pojedynczego adresu musi być przed reguła podsieci do której ten adres IP należy.

Reguły do przekierowanie IP

Kod: Zaznacz cały

iptables -t nat -A PREROUTING $PROT -s 0/0 -d $EXT_IP -j DNAT --to $LOCAL_IP
iptables -t nat -A POSTROUTING $PROT -s $LOCAL_IP -d 0/0 -j SNAT --to $EXT_IP
Dzięki za zainteresowanie, mimo to nie działa :(
Przypisuje alias do karty eth1

Kod: Zaznacz cały

ifconfig eth1:1 up 62.x.x.147
Pinguje to IP - jest ok.
Strona w sieci lokalnej pod adresem https://192.168.2.14 działa.
Dopisuje zgodnie z wskazówkami do rc_masq:

Kod: Zaznacz cały

#!/bin/bash
echo "start"

modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_irc

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "polityka"

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

#iptables -F INPUT
#iptables -F OUTPUT
#iptables -F FORWARD

iptables -F PREROUTING -t nat
iptables -F POSTROUTING -t nat

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

iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -m mark --mark 0x2 -j CONNMARK --save-mark

#ustawieni adresow zrodlowych dla pakietow, ktore wylatuja poszczegolnymi interfejsami
iptables -t nat -A PREROUTING -s 0/0 -d 62.x.x.147 DNAT --to 192.168.2.14
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to 62.233.226.146
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 80.55.214.187
I nic...strona nadal się nie wyświetla.
Przyrost tak jak poprzednio o 1 iptables -t nat -L...długi czas reakcji przeglądarki.

Może jakieś inne pomysły.

Z góry dziękuję MD
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Kod: Zaznacz cały

#ustawieni adresow zrodlowych dla pakietow, ktore wylatuja poszczegolnymi interfejsami
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 80.55.214.187
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to-source 62.233.226.146 
Nie bardzo rozumiem po co tu ten SNAT, jeżeli obie karty mają inne adresy (obie fizyczne) i

Kod: Zaznacz cały

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
chyba tu wystarczyło by napisać, że z ethx do ethy i po co ten SNAT?
fasol_0
Posty: 6
Rejestracja: 02 marca 2010, 18:34

Post autor: fasol_0 »

grzesiek pisze:

Kod: Zaznacz cały

#ustawieni adresow zrodlowych dla pakietow, ktore wylatuja poszczegolnymi interfejsami
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 80.55.214.187
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to-source 62.233.226.146 
Nie bardzo rozumiem po co tu ten SNAT, jeżeli obie karty mają inne adresy (obie fizyczne) i

Kod: Zaznacz cały

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
chyba tu wystarczyło by napisać, że z ethx do ethy i po co ten SNAT?
SNAT to naleciałość po próbach kierowania ruchem przy dwóch dostawcach int.

Dla:

Kod: Zaznacz cały

iptables -A PREROUTING -t nat -s 0/0 -d 62.x.x.147 -j DNAT --to 192.168.2.14
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
czy

Kod: Zaznacz cały

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
iptables -A PREROUTING -t nat -s 0/0 -d 62.x.x.147 -j DNAT --to 192.168.2.14
niestety też nie działa.

Przytoczę wcześniejsze spostrzeżenie, ten przyrost o 1. Czyli ogólnie regułka łapie tylko nie ma informacji zwrotnej.
Jak sprawdzić, co się dzieje z pakietem lecącym drogą powrotną?

Pomóżcie, bo wychodzę z siebie :)
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

grzesiek pisze: Nie bardzo rozumiem po co tu ten SNAT, jeżeli obie karty mają inne adresy (obie fizyczne) i

Kod: Zaznacz cały

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
chyba tu wystarczyło by napisać, że z ethx do ethy i po co ten SNAT?
Bo dobrym nawykiem jest korzystanie z SNATa jeśli jest to tylko możliwe. Jest szybszy niż MASQUERADE, którego używa się w sytuacjach gdy publiczny adres IP jest zmienny. Nie trzeba wtedy za każdym razem, gdy zmieni się ten adres, poprawiać reguły firewalla.
fasol_0
Posty: 6
Rejestracja: 02 marca 2010, 18:34

Post autor: fasol_0 »

mariaczi pisze:
grzesiek pisze: Nie bardzo rozumiem po co tu ten SNAT, jeżeli obie karty mają inne adresy (obie fizyczne) i

Kod: Zaznacz cały

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE 
chyba tu wystarczyło by napisać, że z ethx do ethy i po co ten SNAT?
Bo dobrym nawykiem jest korzystanie z SNATa jeśli jest to tylko możliwe. Jest szybszy niż MASQUERADE, którego używa się w sytuacjach gdy publiczny adres IP jest zmienny. Nie trzeba wtedy za każdym razem, gdy zmieni się ten adres, poprawiać reguły firewalla.
Zgadza się :)
Cieszę się z dyskusji tyle, że nadal mam problem. Być może to czeski błąd. Pomóżcie dobrzy ludzie :)
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Po bojach na maszynie okazalo sie, że kolega miał źle wpisaną bramę na maszynie, którą chciał wystawić na świat.
fasol_0
Posty: 6
Rejestracja: 02 marca 2010, 18:34

Post autor: fasol_0 »

mariaczi pisze:Po bojach na maszynie okazalo sie, że kolega miał źle wpisaną bramę na maszynie, którą chciał wystawić na świat.
To prawda... brama 192.169.2.1 :) czeski błąd.

Wielkie dzięki.
ODPOWIEDZ