Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
it:server:openvpn [2025/06/04 21:31] – Petr Nosek | it:server:openvpn [2025/06/18 12:20] (aktuální) – Petr Nosek | ||
---|---|---|---|
Řádek 175: | Řádek 175: | ||
* Pro zobrazení logů: | * Pro zobrazení logů: | ||
- | | + | <code bash> |
- | journalctl -u openvpn-client@myclient | + | journalctl -u openvpn-client@myclient |
- | </ | + | </ |
---- | ---- | ||
Řádek 203: | Řádek 203: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/bin/env bash |
- | INTERNAL_IP=" | + | set -euo pipefail |
- | INTERNAL_IF=" | + | |
+ | # Tento skript nakonfiguruje DNAT z OpenVPN (tun0) na interní stroj 10.112.234.112 | ||
+ | # Přesměrování všech portů kromě SSH (port 22) s vyčištěním starých pravidel | ||
+ | |||
+ | # Kontrola, zda běží pod rootem | ||
+ | if [[ " | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Proměnné – upravte podle potřeby | ||
+ | VPN_IF=" | ||
+ | INT_IF=" | ||
+ | DEST_IP=" | ||
+ | EXCLUDE_PORT="22" | ||
+ | |||
+ | # 0) Načtení FTP helper modulů | ||
+ | #modprobe nf_conntrack_ftp | ||
+ | #modprobe nf_nat_ftp | ||
+ | |||
+ | # 0b) Připojení FTP helperu pro control channel (port 21) | ||
+ | iptables-legacy -t raw -A PREROUTING \ | ||
+ | -i " | ||
+ | -p tcp --dport 21 \ | ||
+ | -j CT --helper ftp | ||
+ | |||
+ | |||
+ | # 1) Vyčištění stávajících pravidel NAT a FORWARD | ||
+ | iptables-legacy -t nat -F PREROUTING | ||
+ | iptables-legacy -t nat -F POSTROUTING | ||
+ | iptables-legacy -F FORWARD | ||
+ | |||
+ | # 2) Povolit IP forwarding | ||
+ | sysctl -w net.ipv4.ip_forward=1 | ||
+ | if ! grep -q ' | ||
+ | echo ' | ||
+ | fi | ||
+ | |||
+ | # 3) DNAT: přesměrování všech TCP portů kromě SSH na interní stroj | ||
+ | iptables-legacy -t nat -A PREROUTING \ | ||
+ | -i " | ||
+ | -p tcp -m tcp ! --dport " | ||
+ | -j DNAT --to-destination ${DEST_IP} | ||
+ | |||
+ | # 4) DNAT: přesměrování všech UDP portů kromě SSH na interní stroj | ||
+ | iptables-legacy -t nat -A PREROUTING \ | ||
+ | -i " | ||
+ | -p udp -m udp ! --dport " | ||
+ | -j DNAT --to-destination ${DEST_IP} | ||
+ | |||
+ | # 5) Povolit forward chain pro směry tun0 → eth0 (nové i navázané relace) | ||
+ | iptables-legacy -A FORWARD \ | ||
+ | -i "$VPN_IF" | ||
+ | -j ACCEPT | ||
+ | iptables-legacy -A FORWARD \ | ||
+ | -i " | ||
+ | -m state --state ESTABLISHED, | ||
+ | -j ACCEPT | ||
+ | |||
+ | # 6) SNAT/ | ||
+ | iptables-legacy -t nat -A POSTROUTING \ | ||
+ | -o " | ||
+ | -d " | ||
+ | -j MASQUERADE | ||
+ | |||
+ | # Hotovo | ||
+ | echo " | ||
- | iptables -t nat -A PREROUTING -i tun0 -p tcp ! --dport 22 -j DNAT --to-destination $INTERNAL_IP | ||
- | iptables -t nat -A PREROUTING -i tun0 -p udp -j DNAT --to-destination $INTERNAL_IP | ||
- | iptables -A FORWARD -i tun0 -o $INTERNAL_IF -d $INTERNAL_IP -j ACCEPT | ||
- | iptables -t nat -A POSTROUTING -s $INTERNAL_IP -o tun0 -j MASQUERADE | ||
</ | </ | ||
Řádek 216: | Řádek 278: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/bin/env bash |
- | INTERNAL_IP=" | + | set -euo pipefail |
- | INTERNAL_IF="eth0" | + | |
+ | # Tento skript odstraní pravidla DNAT a SNAT z předchozího setupu | ||
+ | |||
+ | # Kontrola, zda běží pod rootem | ||
+ | if [[ " | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Proměnné – musí odpovídat setup skriptu | ||
+ | VPN_IF=" | ||
+ | INT_IF=" | ||
+ | DEST_IP=" | ||
+ | EXCLUDE_PORT="22" | ||
+ | |||
+ | # Odstranění raw/FTP helper pravidla | ||
+ | iptables-legacy -t raw -D PREROUTING -i " | ||
+ | |||
+ | # Vyčištění pravidel NAT a FORWARD vztahujících se k tun0 a DEST_IP | ||
+ | iptables-legacy -t nat -D PREROUTING -i " | ||
+ | iptables-legacy -t nat -D PREROUTING -i " | ||
+ | iptables-legacy -t nat -D POSTROUTING -o " | ||
+ | iptables-legacy -D FORWARD -i " | ||
+ | iptables-legacy -D FORWARD -i " | ||
+ | |||
+ | # Volitelné: vrátit ip_forward do výchozí hodnoty (pokud potřebujete) | ||
+ | # sysctl -w net.ipv4.ip_forward=0 | ||
+ | |||
+ | echo " | ||
- | iptables -t nat -D PREROUTING -i tun0 -p tcp ! --dport 22 -j DNAT --to-destination $INTERNAL_IP | ||
- | iptables -t nat -D PREROUTING -i tun0 -p udp -j DNAT --to-destination $INTERNAL_IP | ||
- | iptables -D FORWARD -i tun0 -o $INTERNAL_IF -d $INTERNAL_IP -j ACCEPT | ||
- | iptables -t nat -D POSTROUTING -s $INTERNAL_IP -o tun0 -j MASQUERADE | ||
</ | </ | ||
Řádek 246: | Řádek 332: | ||
<code bash> | <code bash> | ||
- | iptables -t nat -L -n -v | + | iptables-legacy |
- | iptables -L -n -v | + | iptables-legacy |
</ | </ | ||