I have been setting up a router for ipv6 using Hurricane as my provider. Ultimately I want to use dansguardian on this but my first step has been to set up squid3 as a transparent tproxy. This is working for ipv4 using shorewall and redirect. Of course, shorewall6 doesn''t use redirect and I''ve followed the documentation to set up the transparent proxy using tproxy in shorewall6 This test network does have a lot of interfaces on it, it''s a development system. Virtually everything is working smoothly with respect to ipv6; all the networks route to the internet and to each other fine. The only problem I have now is that the tproxy settings in shorewall6 seem to be completely ignored. I am seeing some things in the squid logs which make me think that something is happening eg when the test VM goes to www.google.com: 1356083809.137 670 10.0.0.100 TCP_MISS/204 301 GET http://clients1.google.com/generate_204 - DIRECT/2607:f8b0:4007:801::1001 text/html Where 10.0.0.100 is the ipv4 address of the test VM. But there aren''t nearly enough hits to reflect real proxying and when I observe with tcpdump theres a lot more. Also a ping to google.com does go to the ipv6 address. When I go to http://test-ipv6.com I get 10/10 but I only see ipv4 traffic in the squid logs. Tcpdump on port 80 shows all the ipv6 traffic shooting straight through to the internet from the test VM. Here are the relevant file contents: interfaces: - lo - - dmz eth3 detect tcpflags,forward=1,nosmurfs lan eth0 detect tcpflags,forward=1,nosmurfs out he-ipv6 detect tcpflags,forward=1,nosmurfs virt eth1 detect tcpflags,forward=1,nosmurfs virt2 eth4 detect tcpflags,forward=1,nosmurfs zones: fw firewall dmz ipv6 lan ipv6 out ipv6 virt ipv6 virt2 ipv6 tcrules: FORMAT 2 DIVERT he-ipv6 :: tcp - 80 TPROXY(3128,::1) eth1 :: tcp 80 #TPROXY(3128) eth1 :: tcp 80 # Neither of the above lines work rules: ACCEPT any out ACCEPT virt $FW tcp 80 ACCEPT virt2 $FW tcp 80 ACCEPT lan $FW tcp 80 ACCEPT $FW out tcp 80 ACCEPT any $FW 41 ACCEPT any any ipv6-icmp Ping(ACCEPT) any any ACCEPT dmz any ACCEPT lan any ACCEPT virt any ACCEPT virt2 any ACCEPT lan any ACCEPT virt:<2001:470:f06b:1::1> out ACCEPT virt2:<2001:470:f06b:4::4> out ACCEPT lan:<2001:470:f06b:F::F> out policy: dmz fw ACCEPT dmz lan REJECT info dmz out ACCEPT dmz virt REJECT info dmz virt2 REJECT info lan dmz REJECT info lan fw ACCEPT lan out ACCEPT lan virt ACCEPT lan virt2 ACCEPT virt dmz REJECT info virt fw ACCEPT virt lan ACCEPT virt out ACCEPT virt virt2 ACCEPT virt2 dmz REJECT info virt2 fw ACCEPT virt2 lan ACCEPT virt2 out ACCEPT virt2 virt ACCEPT fw all ACCEPT out all REJECT info tunnels: generic:41 out 2001:470:c:1fd::2 Here is info requested on the shorewall help page: # /sbin/shorewall version 4.5.10 # ip -6 addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:f06b:f::f/64 scope global valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe19:428e/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:f06b:1::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe19:4298/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 fe80::20c:29ff:fe19:42a2/64 scope link valid_lft forever preferred_lft forever 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:f06b:3::3/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:feb7:4057/64 scope link valid_lft forever preferred_lft forever 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:f06b:4::4/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:feb7:3925/64 scope link valid_lft forever preferred_lft forever 8: he-ipv6: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 inet6 2001:470:c:1fd::2/64 scope global valid_lft forever preferred_lft forever inet6 fe80::a04:1/64 scope link valid_lft forever preferred_lft forever inet6 fe80::ac10:63/64 scope link valid_lft forever preferred_lft forever inet6 fe80::7965:b226/64 scope link valid_lft forever preferred_lft forever inet6 fe80::a00:1/64 scope link valid_lft forever preferred_lft forever inet6 fe80::c0a8:163/64 scope link valid_lft forever preferred_lft forever # ip -6 route show 2001:470:c:1fd::/64 via :: dev he-ipv6 proto kernel metric 256 2001:470:f06b:1::/64 dev eth1 proto kernel metric 256 2001:470:f06b:3::/64 dev eth3 proto kernel metric 256 2001:470:f06b:4::/64 dev eth4 proto kernel metric 256 2001:470:f06b:f::/64 dev eth0 proto kernel metric 256 fe80::/64 dev eth1 proto kernel metric 256 fe80::/64 dev eth4 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 dev eth2 proto kernel metric 256 fe80::/64 dev eth3 proto kernel metric 256 fe80::/64 via :: dev he-ipv6 proto kernel metric 256 default dev he-ipv6 metric 1024 ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
On 12/21/2012 02:04 AM, Steve Wray wrote:> > interfaces: > > - lo - - > > dmz eth3 detect tcpflags,forward=1,nosmurfs > lan eth0 detect tcpflags,forward=1,nosmurfs > out he-ipv6 detect tcpflags,forward=1,nosmurfs > virt eth1 detect tcpflags,forward=1,nosmurfs > virt2 eth4 detect tcpflags,forward=1,nosmurfs > > zones: > > fw firewall > dmz ipv6 > lan ipv6 > out ipv6 > virt ipv6 > virt2 ipv6 > > tcrules: > > FORMAT 2 > DIVERT he-ipv6 :: tcp - 80 > TPROXY(3128,::1) eth1 :: tcp 80 > #TPROXY(3128) eth1 :: tcp 80 > > # Neither of the above lines workIs Squid really listining on port 3128 for IPv6 TPROXY? That''s normally the intercept port (for REDIRECT) and 3129 is used for TPROXY. If that isn''t the issue, please forward the output of ''shorewall6 dump'' as a compressed attachment. Thanks, -Tom -- Tom Eastep \ When I die, I want to go like my Grandfather who Shoreline, \ died peacefully in his sleep. Not screaming like Washington, USA \ all of the passengers in his car http://shorewall.net \________________________________________________ ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
Thanks for getting back to me. The squid config has: http_port 3128 tproxy http_port 3129 transparent netstat shows: tcp 0 0 0.0.0.0:3129 0.0.0.0:* LISTEN - tcp6 0 0 :::3128 :::* LISTEN - I didn''t realise there was a convention regarding which ports squid listens on for what. Also, if squid wasn''t listening on the port I''d set in the Shorewall config, wouldn''t the web pages just completely fail to load instead of passing through to the sites? I also notice some other odd things; When I go to test-ipv6.com it says I''m going through a proxy "Your IPv6 address on the public internet appears to be 2001:xxx:x:xxx::x Proxied via: 1.1 router1.xxxx (squid/3.1.19)" Where the IP address is correct for our ipv6 tunnel . When I go to v6.testmyipv6.com it gives my IP address as the address of the test VM (windows 7, chrome). When I go to ds.testmyipv6.com it gives my IP address as the address of my router. In the case of the pure ipv6 test there is nothing in the squid log. In the case of the dual stack test there are entries in the squid log. I''m guessing that test-ipv6.com is doing a dual stack test. Shorewall6 dump output attached. -----Original Message----- From: Tom Eastep [mailto:teastep@shorewall.net] Sent: Friday, 21 December 2012 11:36 p.m. To: Shorewall Users Subject: Re: [Shorewall-users] shorewall6 seems to be ignoring tproxy On 12/21/2012 02:04 AM, Steve Wray wrote:> > interfaces: > > - lo - - > > dmz eth3 detect tcpflags,forward=1,nosmurfs > lan eth0 detect tcpflags,forward=1,nosmurfs > out he-ipv6 detect tcpflags,forward=1,nosmurfs > virt eth1 detect tcpflags,forward=1,nosmurfs > virt2 eth4 detect tcpflags,forward=1,nosmurfs > > zones: > > fw firewall > dmz ipv6 > lan ipv6 > out ipv6 > virt ipv6 > virt2 ipv6 > > tcrules: > > FORMAT 2 > DIVERT he-ipv6 :: tcp - 80 > TPROXY(3128,::1) eth1 :: tcp 80 > #TPROXY(3128) eth1 :: tcp 80 > > # Neither of the above lines workIs Squid really listining on port 3128 for IPv6 TPROXY? That''s normally the intercept port (for REDIRECT) and 3129 is used for TPROXY. If that isn''t the issue, please forward the output of ''shorewall6 dump'' as a compressed attachment. Thanks, -Tom -- Tom Eastep \ When I die, I want to go like my Grandfather who Shoreline, \ died peacefully in his sleep. Not screaming like Washington, USA \ all of the passengers in his car http://shorewall.net \________________________________________________ ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
On 12/23/2012 06:02 PM, Steve Wray wrote:> Thanks for getting back to me. > > The squid config has: > > http_port 3128 tproxy > http_port 3129 transparent > > netstat shows: > tcp 0 0 0.0.0.0:3129 0.0.0.0:* LISTEN > - > tcp6 0 0 :::3128 :::* LISTEN > - > > I didn''t realise there was a convention regarding which ports squid listens > on for what. > > Also, if squid wasn''t listening on the port I''d set in the Shorewall config, > wouldn''t the web pages just completely fail to load instead of passing > through to the sites? > > I also notice some other odd things; > > When I go to test-ipv6.com it says I''m going through a proxy > "Your IPv6 address on the public internet appears to be 2001:xxx:x:xxx::x > Proxied via: 1.1 router1.xxxx (squid/3.1.19)" > Where the IP address is correct for our ipv6 tunnel . > > When I go to v6.testmyipv6.com it gives my IP address as the address of the > test VM (windows 7, chrome). > When I go to ds.testmyipv6.com it gives my IP address as the address of my > router. > > In the case of the pure ipv6 test there is nothing in the squid log. In the > case of the dual stack test there are entries in the squid log. > > I''m guessing that test-ipv6.com is doing a dual stack test. > > Shorewall6 dump output attached. > > > -----Original Message----- > From: Tom Eastep [mailto:teastep@shorewall.net] > Sent: Friday, 21 December 2012 11:36 p.m. > To: Shorewall Users > Subject: Re: [Shorewall-users] shorewall6 seems to be ignoring tproxy > > On 12/21/2012 02:04 AM, Steve Wray wrote: > >> >> interfaces: >> >> - lo - - >> >> dmz eth3 detect tcpflags,forward=1,nosmurfs >> lan eth0 detect tcpflags,forward=1,nosmurfs >> out he-ipv6 detect tcpflags,forward=1,nosmurfs >> virt eth1 detect tcpflags,forward=1,nosmurfs >> virt2 eth4 detect tcpflags,forward=1,nosmurfs >> >> zones: >> >> fw firewall >> dmz ipv6 >> lan ipv6 >> out ipv6 >> virt ipv6 >> virt2 ipv6 >> >> tcrules: >> >> FORMAT 2 >> DIVERT he-ipv6 :: tcp - 80 >> TPROXY(3128,::1) eth1 :: tcp 80 >> #TPROXY(3128) eth1 :: tcp 80 >> >> # Neither of the above lines work > > Is Squid really listining on port 3128 for IPv6 TPROXY? That''s normally the > intercept port (for REDIRECT) and 3129 is used for TPROXY. > > If that isn''t the issue, please forward the output of ''shorewall6 dump'' > as a compressed attachment.Do you see the obvious problem with this rule from your dump output? Chain PREROUTING (policy ACCEPT 1361 packets, 464K bytes) pkts bytes target prot opt in out source destination 1361 464K tcpre all * * ::/0 ::/0 0 0 divert tcp he-ipv6 * ::/0 ::/128 tcp spt:80flags:! 0x17/0x02 socket --transparent 0 0 TPROXY tcp eth1 * ::/0 ::/128 tcp dpt:80 TPROXY redirect :::3128 mark 0x200/0x200 Look at the destination column. That is the all-zero address. That goes back to your tcrules: TPROXY(3128,::1) eth1 :: tcp 80 -- -Tom -- Tom Eastep \ When I die, I want to go like my Grandfather who Shoreline, \ died peacefully in his sleep. Not screaming like Washington, USA \ all of the passengers in his car http://shorewall.net \________________________________________________ ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
> -----Original Message-----> From: Tom Eastep [mailto:teastep@shorewall.net]> Sent: Monday, 24 December 2012 11:59 a.m.> To: shorewall-users@lists.sourceforge.net> Subject: Re: [Shorewall-users] shorewall6 seems to be ignoring tproxy>> On 12/23/2012 06:02 PM, Steve Wray wrote:> > Thanks for getting back to me.[snip]> Do you see the obvious problem with this rule from your dump output?>> Chain PREROUTING (policy ACCEPT 1361 packets, 464K bytes)> pkts bytes target prot opt in out source> destination> 1361 464K tcpre all * * ::/0 ::/0>> 0 0 divert tcp he-ipv6 * ::/0> ::/128 tcp spt:80flags:! 0x17/0x02 socket --transparent> 0 0 TPROXY tcp eth1 * ::/0> ::/128 tcp dpt:80 TPROXY redirect :::3128 mark 0x200/0x200>> Look at the destination column. That is the all-zero address.>> That goes back to your tcrules:>> TPROXY(3128,::1) eth1 :: tcp 80Yes I see this. But I don''t know how this tcpre rule gets there. I don''t think that I explicitly request it in my shorewall6 configuration. My tcrules file contains only FORMAT 2 DIVERT he-ipv6 :: tcp - 80 TPROXY(3128) eth1 :: tcp 80 Which is exactly as suggested in the documentation. http://www.shorewall.net/Shorewall_Squid_Usage.html#TPROXY and so far as I can tell I''m following this very closely. So Shorewall6 must be inferring that I want this rule. I wondered if it might be settings in shorewall6.conf and checked: I did have TC_ENABLED=Internal But I''ve set that to No, and get the same tcpre rule created. I had CLEAR_TC=YES and I''ve set that to no, restarted Shorewall, and I get the same tcpre rule. Do I need to explicitly tell Shorewall6 to not create this rule?> -->> -Tom> --> Tom Eastep \ When I die, I want to go like my Grandfather who> Shoreline, \ died peacefully in his sleep. Not screaming like> Washington, USA \ all of the passengers in his car> <http://shorewall.net> http://shorewall.net> \________________________________________________------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
On 12/23/2012 08:42 PM, Steve Wray wrote:>> Do you see the obvious problem with this rule from your dump output? >> Chain PREROUTING (policy ACCEPT 1361 packets, 464K bytes) >> pkts bytes target prot opt in out source >> destination >> 1361 464K tcpre all * * ::/0 ::/0 >> 0 0 divert tcp he-ipv6 * ::/0 >> ::/128 tcp spt:80flags:! 0x17/0x02 socket --transparent >> 0 0 TPROXY tcp eth1 * ::/0 >> ::/128 tcp dpt:80 TPROXY redirect :::3128 mark 0x200/0x200 > >> Look at the destination column. That is the all-zero address. > >> That goes back to your tcrules: > >> TPROXY(3128,::1) eth1 :: tcp 80 > > Yes I see this. > > But I don’t know how this tcpre rule gets there. I don’t think that I > explicitly request it in my shorewall6 configuration. > > My tcrules file contains only > > FORMAT 2 > > DIVERT he-ipv6 :: tcp - 80 > > TPROXY(3128) eth1 :: tcp 80 >And that is WRONG!> > Which is exactly as suggested in the documentation. > > http://www.shorewall.net/Shorewall_Squid_Usage.html#TPROXY > > and so far as I can tell I’m following this very closely. >No! That documentation uses 0.0.0.0/0 in the DEST column. The IPv6 equivalent is ::/0 -- you have coded :: which is ::/128.> > > So Shorewall6 must be inferring that I want this rule. >No -- Shorewall6 is doing exactly what you are asking it to do. -Tom -- Tom Eastep \ When I die, I want to go like my Grandfather who Shoreline, \ died peacefully in his sleep. Not screaming like Washington, USA \ all of the passengers in his car http://shorewall.net \________________________________________________ ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
Keeping this on the list -------- Original Message -------- Subject: Re: [Shorewall-users] shorewall6 seems to be ignoring tproxy Date: Sun, 23 Dec 2012 20:54:33 -0800 From: Tom Eastep <teastep@shorewall.net> To: shorewall-users@lists.sourceforge.net On 12/23/2012 08:42 PM, Steve Wray wrote:>> Do you see the obvious problem with this rule from your dump output? >> Chain PREROUTING (policy ACCEPT 1361 packets, 464K bytes) >> pkts bytes target prot opt in out source >> destination >> 1361 464K tcpre all * * ::/0 ::/0 >> 0 0 divert tcp he-ipv6 * ::/0 >> ::/128 tcp spt:80flags:! 0x17/0x02 socket --transparent >> 0 0 TPROXY tcp eth1 * ::/0 >> ::/128 tcp dpt:80 TPROXY redirect :::3128 mark 0x200/0x200 > >> Look at the destination column. That is the all-zero address. > >> That goes back to your tcrules: > >> TPROXY(3128,::1) eth1 :: tcp 80 > > Yes I see this. > > But I don’t know how this tcpre rule gets there. I don’t think that I > explicitly request it in my shorewall6 configuration. > > My tcrules file contains only > > FORMAT 2 > > DIVERT he-ipv6 :: tcp - 80 > > TPROXY(3128) eth1 :: tcp 80 >And that is WRONG!> > Which is exactly as suggested in the documentation. > > http://www.shorewall.net/Shorewall_Squid_Usage.html#TPROXY > > and so far as I can tell I’m following this very closely. >No! That documentation uses 0.0.0.0/0 in the DEST column. The IPv6 equivalent is ::/0 -- you have coded :: which is ::/128.> > > So Shorewall6 must be inferring that I want this rule. >No -- Shorewall6 is doing exactly what you are asking it to do. -Tom -- Tom Eastep \ When I die, I want to go like my Grandfather who Shoreline, \ died peacefully in his sleep. Not screaming like Washington, USA \ all of the passengers in his car http://shorewall.net \________________________________________________ ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
> -----Original Message----- > From: Tom Eastep [mailto:teastep@shorewall.net] > Sent: Monday, 24 December 2012 12:55 p.m. > To: shorewall-users@lists.sourceforge.net > Subject: Re: [Shorewall-users] shorewall6 seems to be ignoring tproxy > > On 12/23/2012 08:42 PM, Steve Wray wrote: > > >> Do you see the obvious problem with this rule from your dump output? > >> Chain PREROUTING (policy ACCEPT 1361 packets, 464K bytes) > >> pkts bytes target prot opt in out source > >> destination > >> 1361 464K tcpre all * * ::/0::/0> >> 0 0 divert tcp he-ipv6 * ::/0 > >> ::/128 tcp spt:80flags:! 0x17/0x02 socket --transparent > >> 0 0 TPROXY tcp eth1 * ::/0 > >> ::/128 tcp dpt:80 TPROXY redirect :::3128 mark0x200/0x200> > > >> Look at the destination column. That is the all-zero address. > > > >> That goes back to your tcrules: > > > >> TPROXY(3128,::1) eth1 :: tcp 80 > > > > Yes I see this. > > > > But I don''t know how this tcpre rule gets there. I don''t think that I > > explicitly request it in my shorewall6 configuration. > > > > My tcrules file contains only > > > > FORMAT 2 > > > > DIVERT he-ipv6 :: tcp - 80 > > > > TPROXY(3128) eth1 :: tcp 80 > > > > And that is WRONG! > > > > > Which is exactly as suggested in the documentation. > > > > http://www.shorewall.net/Shorewall_Squid_Usage.html#TPROXY > > > > and so far as I can tell I''m following this very closely. > > > > No! That documentation uses 0.0.0.0/0 in the DEST column. The IPv6 > equivalent is ::/0 -- you have coded :: which is ::/128.aahhhhh You have helped me better understand Shorewall AND ipv6 :) I''d assumed that :: was the equivalent of 0.0.0.0/0 Awesome, thank you so much!> > So Shorewall6 must be inferring that I want this rule. > > > > No -- Shorewall6 is doing exactly what you are asking it to do. > > -Tom > -- > Tom Eastep \ When I die, I want to go like my Grandfather who > Shoreline, \ died peacefully in his sleep. Not screaming like > Washington, USA \ all of the passengers in his car > http://shorewall.net > \________________________________________________------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d