Różnice między wybraną wersją a wersją aktualną.
| Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
| proxmox [2013/08/01 16:19] – [Konfiguracja] kamil | proxmox [2025/01/11 18:58] (aktualna) – edycja zewnętrzna 127.0.0.1 | ||
|---|---|---|---|
| Linia 1: | Linia 1: | ||
| ===== Proxmox ===== | ===== Proxmox ===== | ||
| + | |||
| + | Przykładowy log z instalacji: [[proxmoxlog|Log]] | ||
| ==== Wstęp ==== | ==== Wstęp ==== | ||
| - | Instalujemy minimalną wersję Debiana - czyli: podstawowe narzędzia oraz serwer | + | Instalujemy minimalną wersję Debiana - czyli: podstawowe narzędzia oraz SSH. |
| === Użytkownik === | === Użytkownik === | ||
| Linia 18: | Linia 20: | ||
| < | < | ||
| - | aptitude install bzip2 mc subversion subversion-tools iptables-persistent telnet tcpdump unzip openvpn zip hdparm smartmontools | + | aptitude install bzip2 unzip p7zip-full |
| </ | </ | ||
| Linia 37: | Linia 39: | ||
| < | < | ||
| - | aptitude install pve-firmware pve-kernel-2.6.32-20-pve | + | aptitude install pve-firmware pve-kernel-2.6.32-26-pve |
| </ | </ | ||
| - | W moim przypadku instalowałem | + | Usuwamy stary kernel |
| < | < | ||
| - | cat / | + | apt-get remove linux-image-amd64 linux-image-3.2.0-4-amd64 linux-base |
| - | mv / | + | |
| </ | </ | ||
| Linia 50: | Linia 51: | ||
| < | < | ||
| - | root@proxmox: | + | root@proxmox: |
| - | Linux proxmox | + | 2.6.32-26-pve |
| </ | </ | ||
| Linia 57: | Linia 58: | ||
| < | < | ||
| - | aptitude install pve-headers-2.6.32-20-pve proxmox-ve-2.6.32 ntp lvm2 postfix ksm-control-daemon vzprocps open-iscsi bootlogd | + | aptitude install pve-headers-2.6.32-26-pve proxmox-ve-2.6.32 ntp lvm2 postfix ksm-control-daemon vzprocps open-iscsi bootlogd |
| </ | </ | ||
| Linia 131: | Linia 132: | ||
| < | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | ### VARS | ||
| + | |||
| + | ethNet=" | ||
| + | ethLan=" | ||
| + | ethVpn=" | ||
| + | |||
| + | netLan=" | ||
| + | netVpn=" | ||
| + | |||
| + | IPHE1=" | ||
| + | IPHE2=" | ||
| + | |||
| + | IPALLOW=" | ||
| + | |||
| + | serverVirt=" | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | |||
| + | ### POLICY | ||
| + | |||
| + | POLICY=" | ||
| + | iptables -P OUTPUT | ||
| + | iptables -P INPUT | ||
| + | iptables -P FORWARD $POLICY | ||
| + | |||
| + | ### DROP | ||
| + | |||
| + | # Block spoof address localhost other interfaces with the exception lo | ||
| + | iptables -A INPUT -t filter ! -i lo -s 127.0.0.0/8 -j DROP | ||
| + | |||
| + | # Block spoof address private networks in wan interface | ||
| + | iptables -A INPUT -i $ethNet -s 10.0.0.0/8 -j DROP | ||
| + | iptables -A INPUT -i $ethNet -s 172.16.0.0/ | ||
| + | iptables -A INPUT -i $ethNet -s 192.168.0.0/ | ||
| + | |||
| + | # Flood protection | ||
| + | iptables -A INPUT -m limit --limit 1/hour -j LOG | ||
| + | iptables -A INPUT -i $ethNet -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT | ||
| + | |||
| + | #Block invalid packet | ||
| + | iptables -A INPUT -i $ethNet -p tcp -m state --state INVALID -j DROP | ||
| + | |||
| + | ### ACCEPT | ||
| + | |||
| + | # Accept all packets in localhost | ||
| + | iptables -A INPUT -t filter -i lo -j ACCEPT | ||
| + | iptables -A OUTPUT | ||
| + | iptables -A FORWARD -t filter -o lo -j ACCEPT | ||
| + | |||
| + | # Accept established and related connection | ||
| + | iptables -A INPUT -i $ethNet -m state --state ESTABLISHED, | ||
| + | iptables -A INPUT -i $ethLan -m state --state ESTABLISHED, | ||
| + | iptables -A INPUT -i $ethVpn -m state --state ESTABLISHED, | ||
| + | |||
| + | # Accept ping | ||
| + | iptables -A INPUT -p icmp -j ACCEPT | ||
| + | iptables -A FORWARD -p icmp -j ACCEPT | ||
| + | # Accept output connection | ||
| + | iptables -A OUTPUT -o $ethNet -j ACCEPT | ||
| + | |||
| + | iptables -A OUTPUT -o $ethLan -j ACCEPT | ||
| + | iptables -A INPUT -i $ethLan -j ACCEPT | ||
| + | |||
| + | # VPN | ||
| + | iptables -A OUTPUT -o $ethVpn -j ACCEPT | ||
| + | iptables -A INPUT -i $ethVpn -j ACCEPT | ||
| + | |||
| + | # IP ALLOW | ||
| + | for ipa in $IPALLOW | ||
| + | do | ||
| + | | ||
| + | done | ||
| + | |||
| + | ## Services | ||
| + | |||
| + | # SSH | ||
| + | iptables -A INPUT -p tcp --dport 12345 -j ACCEPT | ||
| + | # HTTP | ||
| + | iptables -A INPUT -p tcp --dport 80 -j ACCEPT | ||
| + | # HTTPS | ||
| + | iptables -A INPUT -p tcp --dport 443 -j ACCEPT | ||
| + | # VPN | ||
| + | #iptables -A INPUT -p udp --dport 1144 -j ACCEPT | ||
| + | #iptables -A INPUT -p tcp --dport 1144 -j ACCEPT | ||
| + | |||
| + | ## FORWARD | ||
| + | |||
| + | # Forward new connection to Lan network | ||
| + | iptables -A FORWARD -d $netLan -p tcp -m state --state NEW -j ACCEPT | ||
| + | |||
| + | # Forward established and related connection | ||
| + | iptables -A FORWARD -t filter -p tcp -m state --state ESTABLISHED, | ||
| + | iptables -A FORWARD -t filter -p udp -m state --state ESTABLISHED, | ||
| + | iptables -A FORWARD -t filter -p icmp -m state --state ESTABLISHED, | ||
| + | |||
| + | # Forward from Lan network | ||
| + | iptables -A FORWARD -s $netLan -j ACCEPT | ||
| + | iptables -A FORWARD -s $netVpn -j ACCEPT | ||
| + | iptables -A FORWARD -s 192.1.1.0/ | ||
| + | |||
| + | ### DNAT (services in Lan) | ||
| + | |||
| + | # server virt | ||
| + | iptables -t nat -A PREROUTING --dst $IPHE2 -p tcp --dport 443 -j DNAT --to-destination $serverVirt: | ||
| + | |||
| + | ### SNAT (maskarada) | ||
| + | |||
| + | # Set address for server Srutex | ||
| + | iptables -t nat -A POSTROUTING -o $ethNet -s $serverVirt -j SNAT --to $IPHE2 | ||
| + | # Set address for Lan | ||
| + | iptables -t nat -A POSTROUTING -o $ethNet -s $netLan -j SNAT --to $IPHE1 | ||
| + | |||
| + | iptables-save > / | ||
| + | |||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | |||
| + | iptables -F INPUT | ||
| + | iptables -F OUTPUT | ||
| + | iptables -F FORWARD | ||
| + | iptables -t nat -F | ||
| + | iptables -t nat -F POSTROUTING | ||
| + | iptables -t nat -F PREROUTING | ||
| + | iptables -t mangle -F | ||
| + | iptables -t mangle -F POSTROUTING | ||
| + | iptables -t mangle -F PREROUTING | ||
| + | |||
| + | # Flush firewall rules (-F before -X) | ||
| + | iptables -t filter -F | ||
| + | iptables -t nat -F | ||
| + | iptables -t mangle -F | ||
| + | |||
| + | # Delete firewall chains | ||
| + | iptables -t filter -X | ||
| + | iptables -t nat -X | ||
| + | iptables -t mangle -X | ||
| + | |||
| + | # Set counter to zero | ||
| + | iptables -t filter -Z | ||
| + | iptables -t nat -Z | ||
| + | iptables -t mangle -Z | ||
| + | |||
| + | # Default policy | ||
| + | iptables -P INPUT ACCEPT | ||
| + | iptables -P OUTPUT ACCEPT | ||
| + | iptables -P FORWARD ACCEPT | ||
| + | |||
| + | fi | ||
| + | |||
| + | |||
| + | if [ " | ||
| + | $0 stop | ||
| + | $0 start | ||
| + | fi | ||
| + | |||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | fi | ||
| </ | </ | ||
| Linia 152: | Linia 317: | ||
| </ | </ | ||
| + | === Sieć wirtualna === | ||
| + | |||
| + | Należy stworzyć podsieć na potrzeby komunikacji z serwerami wirtualnymi, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Po kliknięciu OK należy wykonać restart serwera, ale uwaga! W moim przypadku Proxmox usunął z konfiguracji sieci wpis: | ||
| + | |||
| + | < | ||
| + | allow-hotplug eth0 | ||
| + | </ | ||
| + | |||
| + | Należy edytować plik / | ||
| + | |||
| + | < | ||
| + | iface eth0 inet static | ||
| + | </ | ||
| + | |||
| + | Po upewnieniu się, że konfiguracja jest poprawna należy wykonać restart serwera. | ||
| + | |||
| + | === Komunikat o subskrypcji === | ||
| + | |||
| + | Jeśli irytuje nas komunikat o nie wykupionej subskrypcji to możemy go wyłączyć modyfikując kod: | ||
| + | |||
| + | < | ||
| + | cp / | ||
| + | export test0=" | ||
| + | cat / | ||
| + | mv / | ||
| + | </ | ||
| + | |||
| + | ==== Wirtualki ==== | ||
| + | |||
| + | === Dodawanie === | ||
| + | |||
| + | Klikamy: | ||
| + | * Create VM, | ||
| + | * podajemy nazwę wirtualnej maszyny - nazwa musi być zgodna z domeną - czyli najlepiej same litery, znaki i ew " | ||
| + | * zaznaczamy odpowiedni system operacyjny, w przypadku Debiana będzie to Linux 3.x/2.6.x Kernel, | ||
| + | * aby zainstalować system należy podmontować obraz iso do wirtualnej maszyny, w tym celu należy wybrać obraz iso, lista wyboru obrazów jest zależna od tego co się znajduje w katalogu / | ||
| + | * dysk twardy, ja zalecam wybieranie Bus/Device: Virtio i Format: RAW, | ||
| + | * CPU: jeśli jest to Linuks to zazwyczaj wybieram maszyny 64bitowe - czyli domyślnie kvm64, w przypadku Windowsów w zależności od posiadanej wersji: kvm32 lub kvm64, | ||
| + | * Network: jeśli na wirtualnej maszynie będzie Linuks to wybieramy e1000 lub VirtIO, w przypadku Windowsów E1000. | ||
| + | * klikamy na Finish. | ||
| + | |||
| + | Po stworzeniu wirtualnej maszyny klikamy na nią oraz wybieramy Console - maszyna nie jest jeszcze włączona. Po otworzeniu się nowego okienka w przeglądarce uruchomi się konsola, która wymaga Javy! Aplet Javy połączy się za pomocą przeglądarki (z naszego komputera) do maszyny fizycznej - i tu mała uwaga będzie się łączył na porty 5900-n - gdzie n to ilość otartych konsol na serwerze - te porty należy odblokować dla naszych IP, z których będziemy się łączyć. Po uruchomieniu się konsoli oraz apletu Javy należy kliknąć na Start. | ||
| + | |||
| + | === Forwardowanie ruchu === | ||
| + | |||
| + | Forwardować ruch możemy na dwa sposoby, za pomocą firewall' | ||
| + | |||
| + | Regułka dla firewalla: | ||
| + | |||
| + | < | ||
| + | iptables -t nat -A PREROUTING --dst $IPZEW -p tcp --dport $PORT_NA_IP_ZEW -j DNAT --to-destination $IPWEW_WIRTUALKI: | ||
| + | </ | ||
| + | |||
| + | Nginx - przykładowy Vhost: | ||
| + | |||
| + | < | ||
| + | server { | ||
| + | listen 443; | ||
| + | server_name vhostname.domain.ltd; | ||
| + | |||
| + | ssl on; | ||
| + | ssl_certificate cert.crt; | ||
| + | ssl_certificate_key cert.key; | ||
| + | |||
| + | ssl_session_timeout 5m; | ||
| + | |||
| + | ssl_protocols SSLv3 TLSv1; | ||
| + | ssl_ciphers ALL: | ||
| + | ssl_prefer_server_ciphers on; | ||
| + | |||
| + | | ||
| + | proxy_pass | ||
| + | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; | ||
| + | proxy_redirect off; | ||
| + | proxy_buffering off; | ||
| + | proxy_set_header | ||
| + | proxy_set_header | ||
| + | proxy_set_header | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | W przypadku Nginx' | ||
| + | |||
| + | < | ||
| + | aptitude install nginx | ||
| + | </ | ||
| + | |||
| + | === Przenoszenie na innego Proxmoxa === | ||
| + | |||
| + | Przy przenoszeniu należy wyłączyć maszynę wirtualną, zarchiwizować plik RAW, który znajduje się w / | ||
| + | |||
| + | < | ||
| + | tar czf / | ||
| + | </ | ||
| + | |||
| + | Po spakowaniu należy skopiować plik tgz na nowy serwer. Na nowym serwerze należy stworzyć wirtualną maszynę z uwzględnieniem ustawień maszyny na starym Proxmoksie, czyli: | ||
| + | * typ systemu operacyjnego, | ||
| + | * typ kontrolera, | ||
| + | * format dysku wirtualnego, | ||
| + | * typ karty sieciowej oraz mac address. | ||
| + | |||
| + | Należy wypakować plik tgz i podmienić go z nowo stworzonym plikiem nowej wirtualki. | ||