[tproxy] Tproxy + Squid 2.6
Enrico Demarin (home)
enricod at videotron.ca
Fri Sep 15 02:18:53 CEST 2006
I was looking at the squid error log and at tproxy source :
in iptable_tproxy_c:
static int
ip_tproxy_setsockopt_assign(struct sock *sk, int proto, struct in_tproxy
*itp)
{
...
if (!sk->rcv_saddr || !sk->sport)
return -EINVAL;
In the squid log :
2006/09/15 00:09:14| tproxy ip=10.0.0.200,0xc800000a,port=0 ERROR ASSIGN
2006/09/15 00:09:14| tproxy ip=10.0.0.200,0xc800000a,port=0 ERROR ASSIGN
and in squid's src/forward.c
static void
fwdConnectStart(void *data)
{
...
itp.op = TPROXY_ASSIGN;
if (setsockopt(fd, SOL_IP, IP_TPROXY, &itp, sizeof(itp)) ==
-1) {
debug(20, 1) ("tproxy ip=%s,0x%x,port=%d ERROR ASSIGN\n",
inet_ntoa(itp.v.addr.faddr),
itp.v.addr.faddr.s_addr,
itp.v.addr.fport);
It seems squid sends a ftport == 0 and tproxy returns -EINVAL. I will
look more into it tomorrow but in the mean time, does anyone have an
idea why ?
- Enrico
Enrico Demarin (home) wrote:
>> / However Squid doesnt seem to able to spoof the original IP:
> /
>> tproxy needs CAP_NET_ADMIN. Which you do not have when running in
>> unprivileged mode. And running in privileged mode (root) is inhibited
>> by squid.
>
>> / Did any one get squid+cttproxy to work on a bridge ? What am I missing
> />/ ?
> /
>> Something that gives your squid user the CAP_NET_ADMIN capability.
>
> Doesnt this do it ( squid 2.6, tools.c ) ? I added a debug message
> and it's printed during init however i still get the ERROR ASSIGN
> messages.
>
>
> #if LINUX_TPROXY
> if (need_linux_tproxy) {
> cap_user_header_t head = (cap_user_header_t) xcalloc(1,
> sizeof(cap_user_header_t));
> cap_user_data_t cap = (cap_user_data_t) xcalloc(1,
> sizeof(cap_user_data_t));
>
> head->version = _LINUX_CAPABILITY_VERSION;
> head->pid = 0;
> cap->inheritable = cap->permitted = cap->effective = (1 <<
> CAP_NET_ADMIN) + (1 << CAP_NET_BIND_SERVICE) + (1 << CAP_NET_BROADCAST);
>
>
> if (capset(head, cap) != 0) {
> xfree(head);
> xfree(cap);
> fatal("Error giving up capabilities");
> }
> debug(50,0) ("Caps set to %x",cap->effective);
> xfree(head);
> xfree(cap);
> }
> #endif
>
>
> _______________________________________________
> tproxy mailing list
> tproxy at lists.balabit.hu
> https://lists.balabit.hu/mailman/listinfo/tproxy
>
>
More information about the tproxy
mailing list