ARPwatch

From Notes_Wiki

Home > Rocky Linux or CentOS > Rocky Linux 9.x > Rocky 9.x Network Monitoring Tools > ARPwatch

Create Virtual Machine

  • Create a Rocky 9.x VM in the Vcenter
  • Select All VLANs Trunk in Network Adapter while creating the Virtual Machine

Configure Network Scripts

Create Network Scripts for each Vlan as per the below article:

CentOS 8.x Configure ethernet port for 802.3 encapsulated trunk traffic communication

  • Example Network script ( file name: ifcfg-ens33.99)
VLAN=yes
TYPE=Vlan
PHYSDEV=ens33
VLAN_ID=99
REORDER_HDR=yes
GVRP=no
MVRP=no
HWADDR=
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=172.30.7.106
PREFIX=16
GATEWAY=172.30.0.1
DNS1=172.31.1.160
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_DISABLED=yes
IPV6INIT=no
NAME=ens33.99
DEVICE=ens33.99
ONBOOT=yes
  • Restart the Network
# systemctl restart NetworkManager
  • Remove the main interface
# nmcli connection del <interface name>
  • Ping to gateway should work for each sub-interface
  • Should be able to access the Internet

Configure Postfix

Install postfix to enable the mail alerts for ARPwatch

  • Install the required packages
# dnf -y install epel-release
# dnf -y install cyrus-sasl cyrus-sasl-plain cyrus-sasl-lib postfix
# dnf -y install s-nail
  • Configure the following in main.cf file
# vim /etc/postfix/main.cf
  • add the following entries in their respective locations:
       myhostname = <hostname>
       mydomain = <hostname>

       inet_interfaces = all
       inet_protocols = ipv4
       mynetworks = 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8
  • add the following at the bottom of the document:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may
relayhost = <mail-server>:<port>
sender_canonical_maps = hash:/etc/postfix/sender_canonical
  • Add the crendentials
# vim /etc/postfix/sasl_passwd
  <mail-server>:<port>      <username>:<password>
  • rewrite all mails from root to sender
# vim /etc/postfix/sender_canonical
       root <email-id>
       root@<hostname> <email-id>

Add the sender’s address in aliases file

# vim /etc/aliases

   root:           <mail-id>

# newaliases
  • Give Permission and create the postmap hash
# cd /etc/postfix
# chmod 600 sasl_passwd
# postmap hash:/etc/postfix/sasl_passwd
# postmap /etc/postfix/sender_canonical
  • restart the service
# systemctl restart postfix.service 
# postfix reload
  • test the outgoing mail
echo "Test email using postfix" | mail -s "Relay test with smtp authentication" <mail-id>

Configure ARPwatch

  • install ARPwatch
# dnf install arpwatch
  • Start the service
# systemctl start arpwatch
# systemctl status arpwatch
  • Add the Vlans to ARPwatch
# arpwatch -i <sub-interface>
  • Check the Process to confirm that ARPwatch is running
# ps aux | grep arpwatch
  • Example output
[root@localhost ~]# ps aux | grep arpwatch
arpwatch   41710  0.0  0.3  40860  6656 ?        Ss   May13   0:21 /usr/sbin/arpwatch -u arpwatch -F -C
root       41760  0.0  0.3  40976  6024 ?        Ss   May13   0:00 arpwatch -i ens33.40
root       41763  0.0  0.4  40976  8200 ?        Ss   May13   0:01 arpwatch -i ens33.99
root       44122  0.0  0.1 221664  2176 pts/2    S+   16:45   0:00 grep --color=auto arpwatch

  • Check logs in the following file
/var/log/messages
  • Example mail alert output
hostname: <unknown>
ip address: 172.30.30.25
ethernet address: bc:24:11:48:b3:56
ethernet vendor: Proxmox Server Solutions GmbH
timestamp: Wednesday, May 14, 2025 15:46:10 +0530