editors: Thread: Patch to Transparent Proxy with Linux and Squid mini-HOWTO v1.15
Subject:
Patch to Transparent Proxy with Linux and Squid mini-HOWTO v1.15
From:
"Y Giridhar Appaji Nag" ####@####.####
Date:
16 Mar 2005 13:59:39 -0000
Message-Id: <35071.202.4.189.74.1110981579.squirrel@secure.symonds.net>
Hi Dan,
I was using your HOWTO and followed the instructions trying to do a
Transparent Proxy when the webclient/browser, iptables and squid are on
the same box (I would assume this will be a typical setup for a home user
with just one box and on a low speed link for squid's caching to be
useful).
The rule because of ...
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
--to-port 3128
doesn't work because there is no forwarding as the client is on the same
machine.
Finally I got things working using ...
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner proxy
-j REDIRECT --to-port 3128
I thought this would be a useful addition to the HOWTO, hence this email.
I modified few sections of the document to include this information.
Also, I had some problem initially with iptables v1.2.9 and Linux kernel
2.4.18-bf2.4 which I addressed in the Troubleshooting section.
A patch to the v1.15 (Aug 2000) linuxdoc source sgml file (pulled from The
LDP CVS) is attached with this mail, and incorporates the above changes.
It would be of help to people who would want to go through the same steps
that I did.
Giridhar
--
Y Giridhar Appaji Nag | http://tldp.org/ | http://www.appaji.net/
--> -->
|
<type 'exceptions.IOError'> | Python 2.5.2: /usr/bin/python Tue May 14 01:14:44 2024 |
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/opt/ezmlm-browse-0.20/main.py in main() |
424
|
425 if path is not None:
|
426 main_path(path)
|
427 else:
|
428 main_form()
|
global main_form = <function main_form at 0x89d6c6c> |
/opt/ezmlm-browse-0.20/main.py in main_form() |
378 except ImportError:
|
379 die(ctxt, "Invalid command")
|
380 module.do(ctxt)
|
381
|
382 def main():
|
module = <module 'commands.showthread' from '/opt/ezmlm-browse-0.20/commands/showthread.pyc'>, module.do = <function do at 0x89dea3c>, global ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'} |
/opt/ezmlm-browse-0.20/commands/showthread.py in do(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}) |
9 ctxt.update(ezmlm.thread(ctxt[THREADID]))
|
10 header(ctxt, 'Thread: ' + ctxt[SUBJECT], 'showthread')
|
11 do_list(ctxt, 'msgs', ctxt[MSGSPERPAGE], ctxt[MESSAGES],
|
12 lambda:sub_showmsg(ctxt, ctxt[MSGNUM]))
|
13 footer(ctxt)
|
global sub_showmsg = <function sub_showmsg at 0x89d61ec>, ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum' |
/opt/ezmlm-browse-0.20/globalfns.py in do_list(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, name='msgs', perpage=10, values=[{'author': u'Y Giridhar Appaji Nag', 'authorid': 'jofeibimpicjhgeeebdb', 'date': '16 Mar 2005 13:59:39 -0000', 'month': 200503, 'msgnum': 223, 'subject': u'Patch to Transparent Proxy with Linux and Squid mini-HOWTO v1.15', 'threadid': 'pdegnkfhoceepbocalhh', 'timestamp': 1110981579.0}], peritem=<function <lambda> at 0x89debc4>) |
128 write(template % ctxt)
|
129 if peritem:
|
130 peritem()
|
131 ctxt[ROW] += 1
|
132
|
peritem = <function <lambda> at 0x89debc4> |
/opt/ezmlm-browse-0.20/commands/showthread.py in () |
9 ctxt.update(ezmlm.thread(ctxt[THREADID]))
|
10 header(ctxt, 'Thread: ' + ctxt[SUBJECT], 'showthread')
|
11 do_list(ctxt, 'msgs', ctxt[MSGSPERPAGE], ctxt[MESSAGES],
|
12 lambda:sub_showmsg(ctxt, ctxt[MSGNUM]))
|
13 footer(ctxt)
|
global sub_showmsg = <function sub_showmsg at 0x89d61ec>, ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum' |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=223) |
229 format_timestamp(ctxt, ctxt)
|
230 write(html('msg-header') % ctxt)
|
231 rec_showpart(ctxt, msg, 0)
|
232 write(html('msg-footer') % ctxt)
|
233 ctxt.pop()
|
global rec_showpart = <function rec_showpart at 0x89d61b4>, ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x8a33d8c> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8a33d8c>, partnum=1) |
205 else:
|
206 for p in part.get_payload():
|
207 partnum = rec_showpart(ctxt, p, partnum+1)
|
208 else:
|
209 write(html('msg-sep') % ctxt)
|
partnum = 1, global rec_showpart = <function rec_showpart at 0x89d61b4>, ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x8a3a26c> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8a3a26c>, partnum=2) |
208 else:
|
209 write(html('msg-sep') % ctxt)
|
210 sub_showpart(ctxt, part)
|
211 return partnum
|
212
|
global sub_showpart = <function sub_showpart at 0x89d6144>, ctxt = {'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x8a3a26c> |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'row': 0, 'cmd': 'showthread', 'charset': 'utf-...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8a3a26c>) |
164 type = ctxt[TYPE] = part.get_content_type()
|
165 ctxt[FILENAME] = part.get_filename()
|
166 template = html('msg-' + type.replace('/', '-'))
|
167 if not template:
|
168 template = html('msg-' + type[:type.find('/')])
|
global template = <function template at 0x89cee9c>, global html = <function html at 0x89ceed4>, type = 'text/x-patch', type.replace = <built-in method replace of str object at 0x8a31ac0> |
/opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-text-x-patch') |
40
|
41 def html(name):
|
42 return template(name + '.html')
|
43
|
44 def xml(name):
|
global template = <function template at 0x89cee9c>, name = 'msg-text-x-patch' |
/opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-text-x-patch.html') |
31 except IOError:
|
32 if not _template_zipfile:
|
33 _template_zipfile = zipfile.ZipFile(sys.argv[0])
|
34 try:
|
35 f = _template_zipfile.open(n).read()
|
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x8967a7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20'] |
/usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x89e206c>, file='-c', mode='r', compression=0, allowZip64=False) |
337 self.filename = file
|
338 modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
|
339 self.fp = open(file, modeDict[mode])
|
340 else:
|
341 self._filePassed = 1
|
self = <zipfile.ZipFile instance at 0x89e206c>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r' |
<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
args =
(2, 'No such file or directory')
errno =
2
filename =
'-c'
message =
''
strerror =
'No such file or directory'