Używam instancji Amazon EC2, która działa za pośrednictwem Ubuntu. Domyślnie zgodnie z ograniczeniami bezpieczeństwa nie mogę binować mojej aplikacji do portu 80, więc po prostu wiążę ją z portem 8080, a następnie ustawiam przekierowanie routingu z portu 80 na 8080 za pomocą następującego polecenia:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
Odkryłem jednak, że po ponownym uruchomieniu serwera ustawienia te nie są aktywne, dopóki nie wywołam tego polecenia ponownie.
Więc moje pytanie brzmi: jak włączyć przekierowanie portu, nawet jeśli system został ponownie uruchomiony?
Zamiast tego użyj polecenia iptables-save. Reguły zapory nigdy nie powinny wchodzić w skrypt rc.local. rc.local jest ostatnią rzeczą do wykonania. Jeśli reguła blokująca została umieszczona w pliku rc.local, istnieje krótki przedział czasowy, w którym atakujący może wykorzystać nieistniejącą regułę. Chociaż prawdopodobnie nie ma to znaczenia w tej sytuacji, nadal najlepiej nie wpaść w zły nawyk, który może cię później ugryźć.
źródło
iptables-save > some-file-path
oszczędza zasady, a następnie przywróci je przeziptables-restore < some-file-path
wrc.local
. Lub zainstaluj,iptables-persistent
który robi to podczas rozruchu jako usługa.Oto jak uczy nas oficjalna dokumentacja ipttable. Spójrz tutaj
Dodaj te dwa wiersze w / etc / network / interfaces:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules
Wiersz „post-down iptables-save> /etc/iptables.rules” zapisze reguły do użycia przy następnym uruchomieniu.
źródło
Odkryłem zestaw katalogów na Ubuntu 16.04, w
/etc/network
którym będą uruchamiane skrypty w różnych momentach podczas inicjowania i zamykania sieci:Więc odkryłem, że mogę zrzucić konfigurację jak zwykle:
Następnie utworzyłem plik `/etc/network/if-pre-up.d/restore:
... i oznaczył go jako wykonywalny
źródło