When you say modem I assume a cable modem not one that connects to the telephone jack and screeches?
A cable modem is relative straight forward, you could create a virtual router (something like pfsense) and bridge the cable modem Ethernet connection to your virtual router. Then set the router to route traffic to your other virtual machines.
If it s latter, then I presume it will need to dial numbers. This is little more complicated if each VM needs to dial different numbers? Maybe if it is a USB device you could pass its control directly to a virtual router, the router then could be setup to dial a particular number depending on the network that is requested?