Title: Shared Software Firewall with NAT for Multiple Public IP Addresses Objective: The goal of this project is to create a working software-based firewall that is shared by all computers on a network. Besides providing protection against hackers and outside Internet traffic, it will use NAT (Network Address Translation) to convert public IP addresses into private IP addresses and vice-versa. Also, it will be able to assign each computer on the network its own unique public IP address. Hackers trying to get into a computer through its public IP address will be unable to. Justification: Currently firewalls are designed to protect whole networks of computers (even if the network consists of just one computer), and each of these computers has their own private IP address. Every computer on the network itself uses the same public IP address; whichever public address an ISP (Internet service provider) has given to the router. Certain applications online (a game, for instance) do not allow multiple instances of the same public IP address. This poses a problem for networked computers sharing a public address. This firewall will illiminate that problem, without one having to purchase an expensive router that provides multiple public IP support. Another added benefit is that this program will function as a firewall as well, monitoring activity and preventing those outside the network to access the network. Most software firewalls do not provide good protection. However, as this firewall will be shared by all computers on the network, it alone can monitor all traffic from all computers, and by improving on the methods of other firewalls, can potentially provide better protection. Because all of this is software based, it also will be much cheaper than a router and hardware firewall. Description: A firewall is simply a program that monitors incoming and outgoing packets through a computer's ports, so the project will require writing a program that monitors all outgoing packets from all computers. Next, NAT has to be programmed into the firewall as a additional feature. Furthermore, the program needs to be able to assign multiple public IP addresses. These addresses will have to be obtained from a service provider. At least two computers will be needed, however more is preferable. Limitations: Time will most likely be a significant problem with this project, because of the many steps required to put it all together. My understanding of how IP addresses are assigned and how ports are monitored, my understanding of NAT, and my understanding of how a router assigns an IP address will also be limiting. Technical constraints include not having the correct programming tools to be able to create the software neccessary to perform all of the tasks mentioned.