I posted a question on ServerFault about a specialized Firewall setup, but as an avid software developer I am also considering rolling my own.
I am only interested in using a high-level language, preferably Java or Node.JS. Is there some system for Linux or Illumos that will take all network packets, and provide them to my application to make a determination on whether they should be allowed, dropped or refused? (or re-written)
I'm only interested in ICMP, UDP and TCP packets. I'm envisioning that I would write a Java application, that would allow me to sniff the traffic to make a determination on whether it should be allowed. For example, in HTTP traffic I may wish to check the Host header to determine what website the browser is attempting to visit.
I realize this is likely to lower the potential throughput, but perhaps the solution you guys recommend will have documentation that will let me clarify the impact of that caveat.
It's almost like I'm asking for FUSE, except for firewalls instead of filesystems.
Is there such a program out there, or would I be stuck with writing C/C++ code for the firewall?