Multiple NAT router

Julian Elischer julian at elischer.org
Tue Jul 25 19:34:12 UTC 2006


Brett Glass wrote:

> At 08:09 AM 7/24/2006, Marko Zec wrote:
>
>> Yes this should work with a virtualized stack - all the "outsied" 
>> interfaces
>> in each jail / virtual stack could be simply bridged together using 
>> netgraph
>> which is virtualization-agnostic, i.e. a global facility in the current
>> implementation of "vimage".
>
>
> Does this virtualization facility virtualize the arp table? It would 
> need to, because there would be hosts with duplicate addresses inside 
> each interface.


yes it virtuialises the entire network system

look for 'vimage FreeBSD ' under google,

unfortunatly it is 4.x only at the moment but you may be able to use a 
4.x machine.

>
> I've been noodling over this for two weeks now, and am thinking that 
> the easiest thing to do might be is map every address in each 
> "virtual" router to a unique address from FreeBSD's point of view 
> (i.e. 192.168.0.2 on LAN 1 becomes 10.0.0.2, while 192.168.0.2 on LAN 
> 1 becomes 10.0.1.2, etc.). The translation would be done by "hooks" as 
> close as possible to the interfaces, so FreeBSD's stack wouldn't know 
> it was being done.

netgraph shims?
netgraph can shim into the interfaces the way you suggest.  man ng_ether.


>
> All that would be needed in that case would be to do "dumb" address 
> translation at the interfaces -- transparently to FreeBSD -- just 
> before the packets entered and left. This seems to be the method that 
> would leverage FreeBSD's existing facilities the most, since FreeBSD's 
> own routing, NAT, etc. would "just work" as they always do. I'd need 
> to figure out what to do about protocols like DHCP.... I don't know if 
> DHCP will assign addresses that it are not on the subnet it "thinks" 
> it's talking to. And I might need to hack into the content of some 
> packets. For example, I'd have to make ARP work.
>
> If I were to try this, the question would of course be which "hook" to 
> use to capture the packets (BPF? Divert sockets? Netgraph? Something 
> in IPFW? A hook into the driver?)... and whether I could use existing 
> code to do the bilateral translation or would have to hack an "address 
> smasher".
>
> --Brett Glass
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"



More information about the freebsd-net mailing list