Transcript NAT

Network Address Translation
Materiały:
• http://www.openbsd.org/faq/pf/pl/nat.html
• http://www.cisco.com/en/US/tech/tk648/tk3
61/technologies_tech_note09186a008009
4831.shtml
• Konfiguracja pracujących urządzeń
Wprowadzenie
Translacja adresów (ang. Network Address
Translation - NAT) daje możliwość
zmapowania całej sieci (lub wielu sieci) do
pojedynczego adresu IP (bądź grupy
adresów IP). NAT jest niezbędny, gdy
liczba adresów IP przydzielonych przez
Dostawcę Usług Internetowych (ISP) jest
mniejsza niż całkowita liczba maszyn,
który mają mieć dostęp do Internetu. NAT
jest opisany w RFC 1631.
Zarezerwowane bloki adresów:
• NAT pozwala korzystać z dobrodziejstw
zarezerwowanych bloków adresów zdefiniowanych w
RFC 1918. Zwykle, wewnętrzna sieć będzie
skonfigurowana przy użyciu jednego lub więcej z tych
bloków, a są to:
• 10.0.0.0/8 (10.0.0.0 - 10.255.255.255)
• 172.16.0.0/12 (172.16.0.0 - 172.31.255.255)
• 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)
Maszyna realizująca NAT będzie miała co najmniej dwa
adaptery sieciowe, jeden do Internetu, drugi do sieci
wewnętrznej. NAT będzie tłumaczył wywołania z sieci
wewnętrznej tak, aby wydawało się, że pochodzą one z
maszyny realizującej NAT.
Jak działa NAT
• Gdy klient w sieci wewnętrznej łączy się z
maszyną w Internecie, wysyła pakiety IP
zaadresowane do tej maszyny. Pakiety te
zawierają wszystkie informacje adresowe,
niezbędne aby dotrzeć do celu. NAT zajmuje się
następującymi danymi:
• Źródłowy adres IP (na przykład, 192.168.1.35)
• Źródłowy port TCP lub UDP (na przykład, 2132)
Jak działa NAT
• Gdy pakiety przechodzą przez bramkę NAT, są
modyfikowane tak aby wydawały się pochodzić z samej
bramki (ang. gateway) NAT. Bramka NAT zapamiętuje
zmiany, wykonywane na pakietach, w swojej tabeli
stanów, aby móc: a) odwrócić zmiany w powracających
pakietach oraz b) zapewnić, że powracające pakiety są
przepuszczane przez firewall i nie są blokowane. Na
przykład, mogą wystąpić następujące zmiany:
• Źródłowe IP: zamienione na zewnętrzny adres bramki
(na przykład, 212.244.219.19)
• Źródłowy port: zamieniony na losowo wybrany,
nieużywany port na bramce (na przykład, 53136)
Jak działa NAT
Ani wewnętrzna maszyna, ani host w
Internecie nie obawiają się tych translacji.
Dla komputera z sieci lokalnej, system
realizujący NAT jest po prostu bramką. Dla
hosta w Internecie, pakiety wydają się
pochodzić wprost z systemu, na którym
realizowany jest NAT; nawet nie zdaje
sobie sprawy, że wewnętrzne stacje
robocze w ogóle istnieją.
Jak działa NAT
Kiedy host w Internecie odpowiada na pakiety wewnętrznej
maszyny, są one adresowane do zewnętrznego IP
bramki realizującej NAT (212.244.219.19) i na
przetłumaczony port (53136). Bramka NAT przeszuka
wówczas tabelę stanów, aby sprawdzić, czy
powracające pakiety pasują do jakiegoś już
nawiązanego połączenia. Niepowtarzalne dopasowanie
zostaje dokonane na podstawie kombinacji IP/port, która
mówi, że datagarmy należą do połączenia
zainicjowanego przez wewnętrzną maszynę
192.168.1.35. Bramka NAT wykona wówczas odwrócone
zmiany w stosunku do wychodzących pakietów i
przekaże je do maszyny w sieci wewnętrznej.
Dostęp do sieci za NAT-em
Realizacja translacji adresów umożliwia
także przekazywanie pakietów z zewnątrz
(najczęściej sieć Internet) do wnętrza sieci
przy zastosowaniu mapowania portów,
bądź mapowania adresów.
Dostęp do sieci za NAT-em
Jeśli dysponujemy więcej niż jednym
zewnętrznym adresem IP możemy
powiązać ten adres z pojedynczym
adresem IP z sieci wewnętrznej. Takie
powiązanie spowoduje, że jeśli pojawi się
próba nawiązania nowego połączenia do
adresu IP zewnętrznego, to zostanie ono
po modyfikacji nagłówka przekazane do
wskazanej stacji w sieci wewnętrznej
(mapowanie 1:1).
Dostęp do sieci za NAT-em
Jeśli nie chcemy z powodów
bezpieczeństwa używać mapowania 1:1,
bądź dysponujemy pojedynczym adresem
IP dla całej sieci wewnętrznej możemy
skorzystać z mapowania poszczególnych
portów, a nie całych adresów IP.
Ciekawostki:
•
•
•
•
•
•
Protokoły FTP, H.323, irc, etc. a NAT,
Wielokrotny NAT,
Sposób znalezienia własnego IP,
Tunelowanie a NAT,
Ograniczenia technologii NAT,
Forwarding pakietów,
Przykład konfiguracji routera
CISCO
interface Ethernet0
ip address 192.168.0.51 255.255.0.0
ip nat inside
!
interface Serial0
ip address 217.97.221.70 255.255.255.252
ip nat outside
!
ip nat pool maskara 217.97.221.70 217.97.221.70 netmask 255.255.255.252
ip nat inside source list 5 pool maskara overload
ip nat inside source static tcp 192.168.0.10 80 217.97.221.70 80 extendable
ip route 0.0.0.0 0.0.0.0 217.97.221.69
!
access-list 5 permit 192.168.0.0 0.0.255.255
Przykład konfiguracji Linux
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -j SNAT --to 154.222.104.25
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -d ! 172.16.0.0/24 -j SNAT --to
154.222.104.25
iptables -t nat -A PREROUTING -p tcp -d 154.222.104.10 --dport 80 -j DNAT --to
10.10.0.10:80
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
sysctl -a | grep conntrack
net.ipv4.ip_conntrack_max = 65000000
net.ipv4.netfilter.ip_conntrack_buckets = 4000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 86400
…..
Przykład konfiguracji FreeBSD
(1/2)
options
IPFILTER
------------------------------------------------------------------------------------------/sbin/ipnat -f /usr/local/etc/ipnat.conf
cat /usr/local/etc/ipnat.conf
map bge0 172.16.255.0/24 -> 172.16.0.3/32
bimap bge0 172.16.255.123/32 -> 172.16.0.4/32
sysctl net.inet.ip.forwarding=1
------------------------------------------------------------------------------------------ipnat -l
List of active MAP/Redirect filters:
map bge0 172.16.255.0/24 -> 172.16.0.3/32
List of active sessions:
MAP 172.16.255.74 3987 <- -> 172.16.0.3
MAP 172.16.255.231 1482 <- -> 172.16.0.3
MAP 172.16.255.231 1467 <- -> 172.16.0.3
3987 [65.33.242.249 2575]
1482 [172.165.118.186 1214]
1467 [83.252.83.45 3221]
Przykład konfiguracji FreeBSD
(2/2)
options IPFIREWALL
options
IPDIVERT
------------------------------------------------------sysctl net.inet.ip.forwarding=1
natd –n sis0 –u –s
ipfw add divert natd all from any to any
------------------------------------------------------natd -n sis0 -u -s -redirect_port tcp
192.168.4.111:22 83.16.97.114:22