Changing packets ttl's
Julian Elischer
julian at elischer.org
Fri Apr 29 14:18:25 PDT 2005
Jeremie Le Hen wrote:
>Hi,
>
>
>
>>No this sysctl is not what i want.
>>I need to change ttl of outgoing packets to my internal network.
>>For example. There is connection from host on internet.
>>it has for example 10 hops to my gateway. And when packet comes
>>to my box it has for example 55 ttl in ip header.
>>And then it is routed to host in my network so my box change ttl
>>to 54. But what i need is change ttl to '1'.
>>
>>
>
>In Linux terms, you want to ``mangle'' the packet, we-writing its TTL.
>AFAIK, this is not possible with FreeBSD since this is really not a
>common action for a firewall (some conservative folks would even argue
>this is not its job). The pf firewall seems to have a ``min-ttl''
>statement in traffic normalization, but there is no ``max-ttl'' one.
>
>The simplest way to achieve this is to write a userland daemon which
>will retrieve the packet from the firewall from a divert socket, using
>ipfw(8). But this would have very poor performances in case you need
>high-bandwidth traffic as each packet would require at least two
>context switches, but for a DSL connexion, I guess this would be ok.
>
>
Your assertion that the diverted packets add a lot of latency is not
quite true.
While it is slower than in-kernel processing, it is not nearly as bad as
some people make out.
Certainly it can keep up with the average internet connection.
I would add code to do the mangling into a program such as natd and set
it up to do no
translation (or a null translation).
Alternatively there is a much simpler daemon that connects in the same way.
In ports look for net/tcpmssd, which already does 99% of what you want.
it would be about a 20 line change to tcpmssd to do this.
It already fiddles other packets.
>There other solution is to make a patch for one of the firewall
>avaiable in FreeBSD.
>
>Best regards,
>
>
More information about the freebsd-net
mailing list