It’s done by using sub-interfaces (aliases, virtual interface depends on terminology)
The trick is to create interface ETH0:1, ETH0:2 WTH1:1 etc. you got the idea

After this you have logical interfaces (Lets say Eth0 and Eth0:1) to manage traffic, do routing, NAT etc. Physically all the traffic still going through the same NIC so its not a good idea for busy network, but works OK for small, home networks.
Down side is (I've been using it myself for more then 2 years with floppy based firewalls) you can not use any spoofing detection-protection rules (guess why

)
and you are NOT protected against such attacks.
You can create interface using command like
ifconfig eth0:1 a.b.c.d(your IP address) netmask 255.255.255.0(or whatever)
but then many scripts need to be redone to reflect nonstandard interface. It’s just not worth it any more with NIC prices like they are today.
Good luck.