Sieć

Przekierowanie ruchu sieciowego pomiędzy kartami sieciowymi

Włączenie przekazywania pakietów (IP Forwarding)

Na początku należy sprawdzić konfigurację sysctl

sudo vim /etc/sysctl.conf

i szukamy wpisu:

net.ipv4.ip_forward = 1

Przeładowujemy konfigurację

sudo sysctl -p

image.png

i sprawdzamy czy opcja jest aktywna:

cat /proc/sys/net/ipv4/ip_forward

image.png

Jeśli wynik to 1, przekazywanie pakietów jest włączone.

Konfiguracja NAT (SNAT) poprzez IPTABLES
sudo iptables -t nat -I POSTROUTING -p all -s AdresacjaIPskąd ! -d AdresacjaIPdokąd -j SNAT --to-source JakimIPmaWychodzić

Przykład z całymi podsieciami:

sudo iptables -t nat -I POSTROUTING -p all -s 172.18.0.0/29 ! -d 172.18.0.0/29 -j SNAT --to-source 10.95.227.9
Co robi ta reguła?

Sprawdzamy czy reguła została dodana:

sudo iptables -t nat -L -v -n

image.png

Zapisujemy konfigurację:

sudo service iptables save
sudo iptables-save | sudo tee /etc/sysconfig/iptables

 

Skrypt tworzący reguły przekierowania dla portów mailowych

Uruchamiamy na systemie proxy:

#!/bin/bash

# Sposób użycia: sudo ./mail_routing.sh <docelowy_adres_IP>
#
# Przykład: sudo ./mail_routing.sh 192.168.1.138
# Sprawdzenie, czy podano adres IP

if [ -z "$1" ]; then
    echo "Użycie: $0 <docelowy_adres_IP>"
    exit 1
fi

TARGET_IP="$1"

# Lista standardowych portów pocztowych
MAIL_PORTS=(25 465 587 143 993 110 995)

echo "Usuwanie poprzednich reguł..."
iptables -t nat -F PREROUTING
iptables -F FORWARD
iptables -t nat -F POSTROUTING

echo "Dodawanie nowych reguł przekierowania dla adresu: $TARGET_IP"

# Dodawanie reguł przekierowania dla każdego portu
for PORT in "${MAIL_PORTS[@]}"; do
    echo "Przekierowanie portu $PORT na $TARGET_IP:$PORT"
    iptables -t nat -A PREROUTING -p tcp --dport $PORT -j DNAT --to-destination $TARGET_IP:$PORT
    iptables -A FORWARD -p tcp --dport $PORT -d $TARGET_IP -j ACCEPT
    iptables -t nat -A POSTROUTING -p tcp -d $TARGET_IP --dport $PORT -j MASQUERADE
done

# Zapisywanie reguł, aby przetrwały restart systemu
echo "Zapisywanie reguł iptables..."
iptables-save > /etc/sysconfig/iptables 2>/dev/null || service iptables save 2>/dev/null

echo "Konfiguracja zakończona! Sprawdzenie reguł:"
iptables -t nat -L -v -n
iptables -L -v -n

Przykładowa część wyniku:

image.png

Weryfikacja zapory sieciowej (firewalld) oraz dodanie wyjątków

Komendy wykonujemy z CLI bash / sh z uprawnieniami root (sudo)

Sprawdzenie wszystkich reguł firewallD:
sudo firewall-cmd --list-all

Dodanie portu:

sudo firewall-cmd --add-port=NumerPortu/tcp --permanent

Dodanie portu ograniczając do jednej zone

sudo firewall-cmd --zone=NazwaZony --add-port=NumerPortu/tcp --permanent

Dodanie usługi:

sudo firewall-cmd --permanent --add-service=NazwaService

Po zmianach należy przeładować firewallD:

sudo firewall-cmd --reload
Co to jest "rich rule" w firewallD?

Rich rules to zaawansowane reguły w firewallD, które pozwalają na bardziej precyzyjne definiowanie zasad niż standardowe strefy i usługi. Umożliwiają m.in.:

Przykład dodania rich-rule:

sudo firewall-cmd --add-rich-rule='rule protocol value="NazwaProtokołu" accept' --permanent

Przykład wpuszczenia ruchu ssh z jednego adresu IP

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' --permanent

Po zmianach należy przeładować firewallD:

sudo firewall-cmd --reload