Image Image Image Image Image Image Image Image Image Image

Ubuntu Server | June 7, 2020

Scroll to top

Top

No Comments

Solaris 9 – Configurazione Interfaccia Ethernet + Cambio Velocità/Negoziazione

Solaris 9 – Configurazione Interfaccia Ethernet + Cambio Velocità/Negoziazione

Effettua il login come root su Solaris.

Digitare “ifconfig -a”. Questo fa comparire un elenco con due tipi di interfacce di rete.
Gli identificativi delle schede di rete sono vari, solitamente quelli che si possono trovare su sistemi ad architetture diverse sono:
– pcnX
– bgeX
– hmeX
dove per X intendiamo un numero da 0 a N.

La configurazione delle schede di rete prevede diverse casistiche; ecco l’elenco delle più comuni:

1) Scheda di rete fisicamente connessa ma non configurata
In questa situazione useremo la combinazione dei comandi plumb (una sorta di riconoscimento della scheda da parte del sistema) e del comando up (l’attivazione del device di rete).
Esempio: supponiamo di avere una scheda di rete fjgi0, e di volerne il plumb e l’attivazione con indirizzo 192.168.80.1; si avrà un comando di questo tipo:

ifconfig fjgi0 plumb 192.168.80.1 up

2) Configurazione in un secondo indirizzo ip su un attuale scheda di rete configurata ed up
In questa configurazione faremo uso di una combinazione di plumb + up, aggiungendo una scheda logica numero 1, dall’ IP 192.168.80.9.

ifconfig bge0:1 plumb 192.168.80.9 up

3) Rendere trasparente la configurazione di un interfaccia fisica o logica
Per rendere permanenti le modifiche, bisognerà creare un file di configurazione per ogni scheda, logica o fisica, all’interno della cartella /etc.
Questo tipo di file si presenta nella forma hostname.<nome scheda>, ad esempio hostname.hme0, oppure hostname.hme0:1.
All’interno di questo file si inserirà, quindi, l’indirizzo ip assegnato alla scheda.

Configurazione interfaccia fisica:

bash-3.00# more /etc/hostname.hme0
franksrv
bash-3.00#more /etc/hosts
# Merged entries from ipnodes into hosts on <Fri Nov 23 17:11:08 CET 2007>
# Backup files saved in /etc/inet/ directory: hosts.premerge, ipnodes.premerge
#
127.0.0.1       localhost       
192.168.80.8    franksrv  loghost

Questo invece l’output di una scheda di rete logica:

bash-3.00# more /etc/hostname.hme0:1
192.168.80.9

 

4) Cambiare la velocità della scheda di rete e la negoziazione
Di seguito c’è uno script bash che ho trovato in rete e serve determinare in maniera più semplice le impostazioni di velocità e negoziazione di tutte le
interfacce di rete attive su Solaris.

#!/bin/sh
 
PATH=/bin:/usr/bin:/usr/sbin
 
# Print column header information
echo "Interface\tSpeed\t\tDuplex"
echo "---------\t-----\t\t------"
 
# Determine the speed and duplex for each live NIC on the system
for INTERFACE in `netstat -i | egrep -v "^Name|^lo0" \
   | awk '{ print $1 }' | cut -d: -f1 | sort | uniq`
do
   # Only gather information for active interfaces
   # Note: "ce" interfaces can be "UP" in "ifconfig" but have link down
   ifconfig $INTERFACE | grep "^$INTERFACE:.*<UP," > /dev/null 2>&1 || continue
   # Skip "cip" ATM interfaces
   echo $INTERFACE | grep "^cip" > /dev/null 2>&1 && continue
   # "ce" interfaces
   if [ "`echo $INTERFACE | awk '/^ce[0-9]+/ { print }'`" ] ; then
      kstat > /dev/null 2>&1
      if [ $? -ne 0 ] ; then
         echo "The \"kstat\" command failed for interface $INTERFACE."
         continue
      fi
      # Determine the ce interface number
      INSTANCE=`echo $INTERFACE | cut -c 3-`
      DUPLEX=`kstat ce:$INSTANCE | grep link_duplex | awk '{ print $2 }'`
      case "$DUPLEX" in
         0) DUPLEX="link down" ;;
         1) DUPLEX="half" ;;
         2) DUPLEX="full" ;;
      esac
      SPEED=`kstat ce:$INSTANCE | grep link_speed | awk '{ print $2 }'`
      case "$SPEED" in
         0) SPEED="link down" ;;
         10) SPEED="10 Mbit/s" ;;
         100) SPEED="100 Mbit/s" ;;
         1000) SPEED="1 Gbit/s" ;;
      esac
   # "dmfe" interfaces
   elif [ "`echo $INTERFACE | awk '/^dmfe[0-9]+/ { print }'`" ] ; then
      # Only the root user should run "ndd"
      if [ "`id | cut -c1-5`" != "uid=0" ] ; then
         echo "You must be the root user to determine \
${INTERFACE_TYPE}${INSTANCE} speed and duplex information."
	 continue
      fi
      DUPLEX=`ndd /dev/${INTERFACE} link_mode`
      case "$DUPLEX" in
         0) DUPLEX="half" ;;
         1) DUPLEX="full" ;;
      esac
      SPEED=`ndd /dev/${INTERFACE} link_speed`
      case "$SPEED" in
         10) SPEED="10 Mbit/s" ;;
         100) SPEED="100 Mbit/s" ;;
         1000) SPEED="1 Gbit/s" ;;
      esac
   # "bge" and "iprb" interfaces
   elif [ "`echo $INTERFACE | awk '/^iprb[0-9]+|bge[0-9]+/ { print }'`" ] ; then
      kstat > /dev/null 2>&1
      if [ $? -ne 0 ] ; then
         DUPLEX="The \"kstat\" command failed for interface $INTERFACE."
         continue
      fi
      # Determine the bge|iprb interface number
      INSTANCE=`echo $INTERFACE | tr -d '[a-z]'`
      INTERFACE=`echo $INTERFACE | tr -d '[0-9]'`
      DUPLEX=`kstat $INTERFACE:$INSTANCE | grep duplex | awk '{ print $2 }'`
      SPEED=`kstat $INTERFACE:$INSTANCE | grep ifspeed | awk '{ print $2 }'`
      case "$SPEED" in
         10000000) SPEED="10 Mbit/s" ;;
         100000000) SPEED="100 Mbit/s" ;;
         1000000000) SPEED="1 Gbit/s" ;;
      esac
   elif [ "`echo $INTERFACE | awk '/^e1000g[0-9]+/ { print }'`" ] ; then
      INSTANCE=`echo $INTERFACE | cut -c7-`
      # The duplex for e1000g devices can only be found with "dladm"
      DUPLEX=`dladm show-dev $INTERFACE | awk '{ print $NF }'`
      SPEED=`kstat e1000g:$INSTANCE | grep ifspeed | awk '{ print $2 }'`
      case "$SPEED" in
         10000000) SPEED="10 Mbit/s" ;;
         100000000) SPEED="100 Mbit/s" ;;
         1000000000) SPEED="1 Gbit/s" ;;
      esac
   # le interfaces are always 10 Mbit half-duplex
   elif [ "`echo $INTERFACE | awk '/^le[0-9]+/ { print }'`" ] ; then
      DUPLEX="half"
      SPEED="10 Mbit/s"
   # All other interfaces
   else
      INTERFACE_TYPE=`echo $INTERFACE | sed -e "s/[0-9]*$//"`
      INSTANCE=`echo $INTERFACE | sed -e "s/^[a-z]*//"`
      # Only the root user should run "ndd"
      if [ "`id | cut -c1-5`" != "uid=0" ] ; then
         echo "You must be the root user to determine \
${INTERFACE_TYPE}${INSTANCE} speed and duplex information."
	 continue
      fi
      ndd -set /dev/$INTERFACE_TYPE instance $INSTANCE
      SPEED=`ndd -get /dev/$INTERFACE_TYPE link_speed`
      case "$SPEED" in
         0) SPEED="10 Mbit/s" ;;
         1) SPEED="100 Mbit/s" ;;
         1000) SPEED="1 Gbit/s" ;;
      esac
      DUPLEX=`ndd -get /dev/$INTERFACE_TYPE link_mode`
      case "$DUPLEX" in
         0) DUPLEX="half" ;;
         1) DUPLEX="full" ;;
         *) DUPLEX="" ;;
      esac
   fi
   echo "$INTERFACE\t\t$SPEED\t$DUPLEX"
done

Spesso Solaris non è in grado di negoziare la velocità ottimale delle schede di rete sopratutto in reti a 100 MB.
È possibile forzare la scheda di rete in 100 MB full duplex disabilitando l’auto-negoziazione e impostando la velocità a 100.

Ecco un esempio con il gruppo di interfacce hmeX queste interfacce possono avere da 2 a 4 connettori su un unico slot pci.
Qui di seguito l’esempio di forzatura del prima scheda del gruppo hme a 100MB Full Duplex:

ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_1000fdx_cap 0
ndd -set /dev/hme adv_1000hdx_cap 0
ndd -set /dev/hme adv_100fdx_cap 1
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0

Il parametro istance specifica quale shceda del gruppo ad ex. 0 la prima 1 la secondaRendiamo permanente la configurazione creando uno shell da caricare l’avvio:

#vim /etc/init.d/nddconfig
 
#!/bin/sh
ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_1000fdx_cap 0
ndd -set /dev/hme adv_1000hdx_cap 0
ndd -set /dev/hme adv_100fdx_cap 1
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0
 
# ln -s /etc/init.d/nddconfig /etc/rc2.d/S31nddconfig
# ln -s /etc/init.d/nddconfig /etc/rc3.d/S99nddconfig

Controlliamo dai log la neogizazione:

$ dmesg | grep hme0
Jan 25 22:05:01 franksrv genunix: [ID 611667 kern.info] NOTICE: hme0: xcvr addr:0x01 - link up 100 Mbps half duplex
Jan 25 22:05:14 franksrv genunix: [ID 408822 kern.info] NOTICE: hme0: no fault external to device; service available
Jan 25 22:05:14 franksrv genunix: [ID 611667 kern.info] NOTICE: hme0: xcvr addr:0x01 - link up 100 Mbps full duplex

Oppure Lanciando Lo script:

# ./negoziazione.sh
 
Interface    Speed           Duplex
---------    -----           ------
hme0         100 Mbit/s      full
hme1         1000 Mbit/s     full
hme2         1000 Mbit/s     full
hme3         1000 Mbit/s     full

 

5) Controllare quante schede di rete sono disponibili sul server facendomi vedere anche quelle disabilitate

franksrv# kstat -p | nawk '/duplex/ || /speed/ { split($1,Array,":") ; Dev=Array[3] } /link_duplex/ && $2=="2" { Duplex[Dev]="full" } /link_duplex/ && $2=="1" { Duplex[Dev]="half" } /link_speed/ { if ( Duplex[Dev] == "" ) Duplex[Dev]="unknown" ; Speed[Dev]=$2 ; print Dev "\tlink: unknown\tspeed: " Speed[Dev] "\tMbit\tduplex: " Duplex[Dev] }'
 
hme0 link: unknown speed: 100 Mbit duplex: full
hme1 link: unknown speed: 1000 Mbit duplex: full
hme2 link: unknown speed: 1000 Mbit duplex: full
hme3 link: unknown speed: 1000 Mbit duplex: full
hme4 link: unknown speed: 0 Mbit duplex: unknown
hme5 link: unknown speed: 0 Mbit duplex: unknown

Controllare il traffico dell’interfacce ed eventuali collisioni

#netstat -in
 
Name  Mtu    Net/Dest      Address       Ipkts    Ierrs  Opkts     Oerrs  Collis  Queue
hme0  1500  192.168.80.0   192.168.80.8  1520436  22673  1329141   0      0       0

Spero sia utile a molti

Frank 🙂

Submit a Comment

*

adidas yeezy 650 boost adidas yeezy boost 650 adidas yeezy 650 boost colorways adidas yeezy 650 350 2 0 boost yeezy boost 650 adidas yeezy boost 650 supreme x nike air uptempo release info adidas yeezy boost 650 v1 sample detailed look adidas yeezy boost 650 v1 sample adidas yeezy boost 650 v1 sample adidas yeezy boost 650 v1 adidas yeezy 650 boost adidas yeezy boost 650 adidas yeezy 650 boost colorways adidas yeezy 650 350 2 0 boost yeezy boost 650 adidas yeezy boost 650 supreme x nike air uptempo release info adidas yeezy boost 650 v1 sample detailed look adidas yeezy boost 650 v1 sample