Brama to system łączący wiele sieci komputerowych. Ten termin odnosi się do lokalnej sieci komputerowej jako do „punktu wyjścia” na obowiązkowej ścieżce do wszystkich zewnętrznych adresów IP. Brama jest podłączona do każdej sieci, z którą się razem łączy, a działa jako router do przekazywania pakietów pomiędzy jego różnymi interfejsami.
Podczas, gdy sieć lokalna używa prywatnego zakresu adresów (nie rutowalnych w Internecie), to brama musi zaimplementować „maskaradę” adresów tak, aby maszyny w sieci komputerowej mogły się komunikować ze światem zewnętrznym. Maskarada (translacja adresów sieciowych) odbywa się za pomocą proxy działającego na poziomie sieci: każde wychodzące połączenie z wewnętrznej maszyny jest zastępowane przez połączenie z samej bramy (ponieważ brama ma zewnętrzny, rutowalny adres); dane przechodzące przez połączenie poddane translacji są wysyłane do nowego połaczenia, a dane powracające jako odpowiedź są wysyłane do połączenia (poddanego translacji) z wewnętrzną maszyną. Brama wykorzystuje do tego celu szereg dedykowanych portów TCP, zwykle o bardzo dużej liczbie (ponad 60000). Każde połączenie, przychodzące z wewnętrznej maszyny, pojawia się w świecie zewnętrznym jako połączenie pochodzące z jednego z tych zarezerwowanych portów.
The gateway can also perform two kinds of network address translation (or NAT for short). The first kind, Destination NAT (DNAT) is a technique to alter the destination IP address (and/or the TCP or UDP port) for a (generally) incoming connection. The connection tracking mechanism also alters the following packets in the same connection to ensure continuity in the communication. The second kind of NAT is Source NAT (SNAT), of which masquerading is a particular case; SNAT alters the source IP address (and/or the TCP or UDP port) of a (generally) outgoing connection. As for DNAT, all the packets in the connection are appropriately handled by the connection tracking mechanism. Note that NAT is only relevant for IPv4 and its limited address space; in IPv6, the wide availability of addresses greatly reduces the usefulness of NAT by allowing all “internal” addresses to be directly routable on the Internet (this does not imply that internal machines are accessible, since intermediary firewalls can filter traffic).
Enough theory, let's get practical. Turning a Debian system into a gateway is a simple matter of enabling the appropriate option in the Linux kernel, by way of the /proc/
virtual filesystem:
#
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
This option can also be automatically enabled on boot if /etc/sysctl.conf
sets the net.ipv4.conf.default.forwarding
option to 1
.
Przykład 10.1. The /etc/sysctl.conf
file
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
The same effect can be obtained for IPv6 by simply replacing ipv4
with ipv6
in the manual command and using the net.ipv6.conf.all.forwarding
line in /etc/sysctl.conf
.
Enabling IPv4 masquerading is a slightly more complex operation that involves configuring the netfilter firewall.