Graham Edgecombe


Welcome to my personal website. My name is Graham Edgecombe and I enjoy computer programming, electronics and photography. This website is a place for me to share information about my projects and publish photos and blog posts. The slides to some technical talks I have given are also available. I have also written some information about me and collected some links to other websites that I enjoy. Feel free to contact me if you have any questions.


Linux tproxy server in Java

December 2013

tproxy is a feature in Linux which allows an intermediate router to run a proxy server which can intercept and modify network traffic transparently (i.e. the end systems cannot tell that this has been done, as the source/destination IP addresses in the packets are not modified.) tproxy also works with IPv6, whereas non-transparent mechanisms such as the iptables REDIRECT target do not because of the lack of NAT support in the Linux IPv6 stack. Java’s standard library does not provide built-in support for using tproxy, and it has a few annoyances which make it tricky to implement. This blog post covers how I managed to get tproxy to work in a Java program.