it:server:openvpn

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:server:openvpn [2025/06/04 21:31] Petr Nosekit:server:openvpn [2025/06/18 12:20] (aktuální) Petr Nosek
Řádek 175: Řádek 175:
  
   * Pro zobrazení logů:     * Pro zobrazení logů:  
-    <code bash> +<code bash> 
-    journalctl -u openvpn-client@myclient +journalctl -u openvpn-client@myclient 
-    </code>+</code>
  
 ---- ----
Řádek 203: Řádek 203:
  
 <code bash> <code bash>
-#!/bin/bash +#!/usr/bin/env bash 
-INTERNAL_IP="192.168.0.120" +set -euo pipefail 
-INTERNAL_IF="eth0"nebo jiné rozhraní dle sítě+ 
 +# 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 [[ "$EUID" -ne 0 ]]; then 
 +  echo "Prosím spusťte jako root nebo pomocí sudo." >&
 +  exit 1 
 +fi 
 + 
 +# Proměnné – upravte podle potřeby 
 +VPN_IF="tun0" 
 +INT_IF="eth0" 
 +DEST_IP="192.168.0.120" 
 +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 "$VPN_IF"
 +    -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 '^net.ipv4.ip_forward' /etc/sysctl.conf; then 
 +  echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
 +fi 
 + 
 +# 3) DNAT: přesměrování všech TCP portů kromě SSH na interní stroj 
 +iptables-legacy -t nat -A PREROUTING \ 
 +    -i "$VPN_IF"
 +    -p tcp -m tcp ! --dport "$EXCLUDE_PORT"
 +    -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 "$VPN_IF"
 +    -p udp -m udp ! --dport "$EXCLUDE_PORT"
 +    -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" -o "$INT_IF" -d "$DEST_IP"
 +    -j ACCEPT 
 +iptables-legacy -A FORWARD \ 
 +    -i "$INT_IF" -o "$VPN_IF"
 +    -m state --state ESTABLISHED,RELATED \ 
 +    -j ACCEPT 
 + 
 +6) SNAT/MASQUERADE pro interní stroj, pokud nemá přímou zpětnou cestu 
 +iptables-legacy -t nat -A POSTROUTING \ 
 +    -o "$INT_IF"
 +    -d "$DEST_IP"
 +    -j MASQUERADE 
 + 
 +# Hotovo 
 +echo "Vyčištěna stará pravidla a aplikován DNAT pro všechna porty kromě portu ${EXCLUDE_PORT}."
  
-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 
 </code> </code>
  
Řádek 216: Řádek 278:
  
 <code bash> <code bash>
-#!/bin/bash +#!/usr/bin/env bash 
-INTERNAL_IP="192.168.0.120" +set -euo pipefail 
-INTERNAL_IF="eth0"+ 
 +# Tento skript odstraní pravidla DNAT a SNAT z předchozího setupu 
 + 
 +# Kontrola, zda běží pod rootem 
 +if [[ "$EUID" -ne 0 ]]; then 
 +  echo "Prosím spusťte jako root nebo pomocí sudo." >&
 +  exit 1 
 +fi 
 + 
 +# Proměnné – musí odpovídat setup skriptu 
 +VPN_IF="tun0" 
 +INT_IF="eth0" 
 +DEST_IP="192.168.0.120" 
 +EXCLUDE_PORT="22" 
 + 
 +# Odstranění raw/FTP helper pravidla 
 +iptables-legacy -t raw -D PREROUTING -i "$VPN_IF" -p tcp --dport 21 -j CT --helper ftp || true 
 + 
 +# Vyčištění pravidel NAT a FORWARD vztahujících se k tun0 a DEST_IP 
 +iptables-legacy -t nat -D PREROUTING -i "$VPN_IF" -p tcp -m tcp ! --dport "$EXCLUDE_PORT" -j DNAT --to-destination ${DEST_IP} || true 
 +iptables-legacy -t nat -D PREROUTING -i "$VPN_IF" -p udp -m udp ! --dport "$EXCLUDE_PORT" -j DNAT --to-destination ${DEST_IP} || true 
 +iptables-legacy -t nat -D POSTROUTING -o "$INT_IF" -d "$DEST_IP" -j MASQUERADE || true 
 +iptables-legacy -D FORWARD -i "$VPN_IF" -o "$INT_IF" -d "$DEST_IP" -j ACCEPT || true 
 +iptables-legacy -D FORWARD -i "$INT_IF" -o "$VPN_IF" -m state --state ESTABLISHED,RELATED -j ACCEPT || true 
 + 
 +# Volitelné: vrátit ip_forward do výchozí hodnoty (pokud potřebujete) 
 +# sysctl -w net.ipv4.ip_forward=0 
 + 
 +echo "Pravidla DNAT/SNAT byla odstraněna."
  
-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 
 </code> </code>
  
Řádek 246: Řádek 332:
  
 <code bash> <code bash>
-iptables -t nat -L -n -v +iptables-legacy -t nat -L -n -v 
-iptables -L -n -v+iptables-legacy -L -n -v
 </code> </code>
  
  • it/server/openvpn.1749072698.txt.gz
  • Poslední úprava: 2025/06/04 21:31
  • autor: Petr Nosek