A dummy interface maybe created for various reasons like:

  • Publishing Services
  • A 2nd loopback interface with a public IP

  • A part of a development environment
  • Testing crafted packets
  • etc…

The creation of the dummy interfaces requires having the dummy kernel module loaded, which maybe done in a permanent way by appending it to “/etc/modules” or launching this command as a temporary solution

$ modprobe dummy

Then the interface can be created using the below commands:
$ ip link add eth_dummy type dummy
$ ip addr add 172.16.1.1/24 dev eth_dummy
$ ip link set eth_dummy up

The interface may be set in promiscuous mode using this command

$ ifconfig eth_dummy promisc

As a result

$ ifconfig eth_dummy
eth_dummy: flags=451<UP,BROADCAST,RUNNING,NOARP,PROMISC>  mtu 1500
        inet 172.16.1.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 16:81:b9:02:e7:61  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 856 (856.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ping 172.16.1.1 
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from 172.16.1.1: icmp_seq=2 ttl=64 time=0.052 ms