meta data for this page
  •  

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
linux:network [2024/03/21 16:49] adminlinux:network [2026/05/18 18:02] (aktuális) – [Port tesztelés BASH-sel] admin
Sor 70: Sor 70:
  
   nc -zv hoszt port   nc -zv hoszt port
 +
 +python-nal:
 +
 +  python3 -c "import socket; s = socket.socket(); s.settimeout(3); print('NYITVA' if s.connect_ex(('hoszt', port)) == 0 else 'ZÁRVA')"
 +  
 +curl-lel:
 +
 +  curl -v http://hoszt:port
  
 Windows PowerShell: Windows PowerShell:
Sor 81: Sor 89:
  
 [[linux:ssh-exit-codes.sh|SSH exit kódok]] [[linux:ssh-exit-codes.sh|SSH exit kódok]]
 +
 +=== SSH tunnelling ===
 +
 +HosztA:123 -> HosztB:22 -> HosztC:443
 +
 +  ssh -L 123:HosztC:443 HosztB:22
 +  links https://localhost:123
  
 === SSH-n másolás köztes állomáson át === === SSH-n másolás köztes állomáson át ===
Sor 159: Sor 174:
  
   [node1]# cat /dev/zero | ssh node2 "cat > /dev/null"   [node1]# cat /dev/zero | ssh node2 "cat > /dev/null"
 +  [node1]# dd if=/dev/zero bs=1M count=1000 status=progress | ssh node2 "cat > /dev/null"
  
 FTP-vel (Unix/Linux): FTP-vel (Unix/Linux):
Sor 175: Sor 191:
  
 === Ethernet és FC portok lekérdezése === === Ethernet és FC portok lekérdezése ===
 +
 +<file>
 +#!/bin/bash
 +
 +echo "HBA portok és látott eszközök:"
 +echo "---------------------------------------------------------------"
 +echo -e "HOST\tPORT_WWN\t\tPORT_STATE"
 +
 +for host in /sys/class/fc_host/host*; do
 +  port_wwn=$(cat "$host/port_name" | sed 's/^0x//')
 +  port_state=$(cat "$host/port_state")
 +  hostnum=$(basename "$host")
 +  echo -e "$hostnum\t$port_wwn\t$port_state"
 +done
 +
 +echo
 +echo "Látott eszközök (SCSI target-ek):"
 +echo "---------------------------------------------------------------"
 +echo -e "HOST\tTARGET\tLUN\tTYPE\tVENDOR\tMODEL"
 +
 +for d in /sys/class/scsi_device/*; do
 +  device=$(basename "$d")
 +  host=$(echo $device | cut -d: -f1)
 +  target=$(echo $device | cut -d: -f2)
 +  lun=$(echo $device | cut -d: -f3)
 +
 +  type=$(cat "$d/device/type")
 +  vendor=$(cat "$d/device/vendor" 2>/dev/null | xargs)
 +  model=$(cat "$d/device/model" 2>/dev/null | xargs)
 +
 +  # SCSI type számból szöveges fordítás
 +  case "$type" in
 +    0) type_str="Disk" ;;
 +    1) type_str="Tape" ;;
 +    3) type_str="Processor" ;;
 +    5) type_str="CD/DVD" ;;
 +    8) type_str="Medium Changer" ;;
 +    0x1f) type_str="Unknown" ;;
 +    *) type_str="Other($type)" ;;
 +  esac
 +
 +  echo -e "$host\t$target\t$lun\t$type_str\t$vendor\t$model"
 +done
 +</file>
  
 <file> <file>
Sor 222: Sor 282:
  
   tcpdump -c 1000 -nni bond0 -e vlan | grep -o 'vlan [0-9]*' | sed 's/^.*$/Found & tagged pockets/' | sort | uniq   tcpdump -c 1000 -nni bond0 -e vlan | grep -o 'vlan [0-9]*' | sed 's/^.*$/Found & tagged pockets/' | sort | uniq
 +
 +==== NPIV létrehozása Emulex FC kártyán RHEL 8.1-en ====
 +
 +=== Emulex kártya azonosítása ===
 +
 +Először nézzük meg mi van a gépben:
 +
 +  # PCI eszközök listázása - Emulex kártyák
 +  lspci | grep -i emulex
 +  lspci | grep -i "fibre channel"
 +  
 +  # Részletesebb info
 +  lspci -v | grep -A 10 -i "fibre channel"
 +
 +A driver és modul azonosítása:
 +
 +  # lpfc driver = Emulex (LightPulse Fibre Channel)
 +  lsmod | grep lpfc
 +  
 +  # Kártya adatai sysfs-ből
 +  ls /sys/class/scsi_host/
 +  cat /sys/class/scsi_host/host*/modelname
 +  cat /sys/class/scsi_host/host*/modeldesc
 +
 +
 +A tényleges FC portok és WWN-ek:
 +
 +  # Melyik host melyik port
 +  cat /sys/class/fc_host/host*/port_name
 +  cat /sys/class/fc_host/host*/node_name
 +  cat /sys/class/fc_host/host*/port_state
 +  cat /sys/class/fc_host/host*/supported_speeds
 +  cat /sys/class/fc_host/host*/speed
 +
 +
 +=== NPIV támogatás ellenőrzése ===
 +
 +
 +  # Megmutatja hány vport hozható létre
 +  cat /sys/class/fc_host/host*/npiv_vports_inuse
 +  cat /sys/class/fc_host/host*/max_npiv_vports
 +  
 +  # Ha 0-t vagy hibát ad, a kártya/driver nem támogatja
 +
 +=== NPIV vport létrehozása ===
 +
 +
 +== Egyszer (nem perzisztens, tesztelésre) ==
 +
 +  # Manuálisan - a kernel generál WWN-t
 +  echo "0x$(cat /proc/sys/kernel/random/uuid | tr -d '-' | head -c 16)" > \
 +  /sys/class/fc_host/host0/vport_create
 +  
 +  # Vagy egyszerűbben, a kernel választ WWN-t:
 +  echo "0x0000000000000000" > /sys/class/fc_host/host0/vport_create
 +  
 +  #### Ajánlott: `lpfc` driver + `systool` / `udevadm` helyett → **`udev` rule + script**
 +
 +== Perzisztens megoldás – systemd service ==
 +
 +Mivel az RHEL 8 nem tartalmaz beépített vport manager-t, a legtisztább megoldás egy systemd service:
 +
 +**/etc/fc_vports.conf**:
 +<file>
 +  # itt definiálod a vportokat:
 +  # format: fizikai_host  WWPN  WWNN
 +  host0  0x10000090fae12345  0x20000090fae12345
 +  host1  0x10000090fae16789  0x20000090fae16789
 +</file>
 +
 +**/usr/local/sbin/fc_vport_create.sh**:
 +<file>
 +#!/bin/bash
 +CONF="/etc/fc_vports.conf"
 +
 +while read -r host wwpn wwnn; do
 +  [[ "$host" =~ ^# ]] && continue
 +  [[ -z "$host" ]] && continue
 +
 +  VPORT_PATH="/sys/class/fc_host/${host}/vport_create"
 +
 +  if [ ! -f "$VPORT_PATH" ]; then
 +    echo "WARN: ${host} nem létezik, kihagyva"
 +    continue
 +  fi
 +
 +  # Ellenőrzés: már létezik-e ez a WWPN?
 +  EXISTING=$(ls /sys/class/fc_vports/ 2>/dev/null | xargs -I{} cat \
 +    /sys/class/fc_vports/{}/port_name 2>/dev/null | grep -c "$wwpn")
 +
 +  if [ "$EXISTING" -gt 0 ]; then
 +    echo "INFO: ${wwpn} már létezik, kihagyva"
 +    continue
 +  fi
 +
 +  echo "${wwpn}:${wwnn}" > "$VPORT_PATH"
 +  echo "OK: vport létrehozva ${host} -> ${wwpn}"
 +
 +done < "$CONF"
 +</file>
 +
 +  chmod +x /usr/local/sbin/fc_vport_create.sh
 +
 +**/etc/systemd/system/fc-vports.service**:
 +<file>
 +[Unit]
 +Description=FC NPIV vport creation
 +After=network.target
 +# Fontos: a storage stack indulása után fusson
 +After=multipathd.service
 +Wants=multipathd.service
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/usr/local/sbin/fc_vport_create.sh
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +
 +  systemctl daemon-reload
 +  systemctl enable fc-vports.service
 +  systemctl start fc-vports.service
 +  systemctl status fc-vports.service
 +
 +=== Ellenőrzés ===
 +
 +
 +  # Létrejöttek-e a vportok?
 +  ls /sys/class/fc_vports/
 +  
 +  # Vport részletek
 +  cat /sys/class/fc_vports/vport-*/port_name
 +  cat /sys/class/fc_vports/vport-*/port_state
 +
 +  # Vagy összefoglalóan
 +  for v in /sys/class/fc_vports/vport-*; do
 +    echo "=== $(basename $v) ==="
 +    echo "WWPN: $(cat $v/port_name)"
 +    echo "State: $(cat $v/port_state)"
 +  done
 +
 +=== WWN-ek kitalálása (ha nem adták meg) ===
 +
 +
 +Ha a storage adminok még nem adtak WWPN-eket, generálhatsz érvényes értéket:
 +
 +  # Emulex OUI: 0010:9B (lpfc driver convention)
 +  # Egyszerű megközelítés: az alap WWPN-ből inkrementálj
 +  BASE=$(cat /sys/class/fc_host/host0/port_name)
 +  echo "Alap WWPN: $BASE"
 +  # pl. ha 0x10000090fae00001 -> vport lehet 0x10000090fae00002
 +
 +De ezt egyeztesd a **storage adminokkal / SAN zoning** felelőssel, mert a vport WWPN-eket be kell zónázni a storage oldalán is!
 +
 +**Összefoglalva a sorrend:**
 +  - `lspci` + `cat /sys/class/fc_host/host*/modelname` → kártya azonosítás
 +  - `max_npiv_vports` ellenőrzés → támogatja-e
 +  - WWN-ek egyeztetése storage adminnal
 +  - Script + systemd service → perzisztens vportok
 +  - Storage oldalon zoning + host mapping beállítás
 +
  
 [[http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html#MULTICAST]] [[http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html#MULTICAST]]
  
 [[https://www.aelius.com/njh/subnet_sheet.html|Subnet Mask Cheat Sheet]] [[https://www.aelius.com/njh/subnet_sheet.html|Subnet Mask Cheat Sheet]]