All of lore.kernel.org
 help / color / mirror / Atom feed
* Rules not taking effect
@ 2002-10-17 23:27 Tib
  2002-10-17 23:35 ` Antony Stone
  0 siblings, 1 reply; 12+ messages in thread
From: Tib @ 2002-10-17 23:27 UTC (permalink / raw)
  To: netfilter

I'm using 1.2.6a-5 for debian, using init.d scripts. The problem is that 
when I write a rule, it does not take effect. I have also found that a 
rule I had in place from earlier and I flushed it, still worked even 
though iptables -t nat -L showed nothing. I've been told that the module 
ip_conntrack may have something to do with this, but I cannot rmmod it 
because it's busy and insmod says it's already there. 

Any ideas on what I can do?

<EOL>
Tib



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Rules not taking effect
  2002-10-17 23:27 Rules not taking effect Tib
@ 2002-10-17 23:35 ` Antony Stone
  2002-10-18  0:32   ` Rules not taking effect - 2nd try Tib
  0 siblings, 1 reply; 12+ messages in thread
From: Antony Stone @ 2002-10-17 23:35 UTC (permalink / raw)
  To: netfilter

On Friday 18 October 2002 12:27 am, Tib wrote:

> I'm using 1.2.6a-5 for debian, using init.d scripts. The problem is that
> when I write a rule, it does not take effect.

Please explain this ?

> I have also found that a rule I had in place from earlier and I flushed it,
> still worked even though iptables -t nat -L showed nothing.

You mention -t nat specifically.

You should be aware that existing connections which have been NATted bypass 
the explicit rules in the nat table, in order to perform forward and reverse 
NAT transparently, automatically and efficiently.

If your FORWARD chain (I'm assuming this is a routing firewall) contains a 
rule to allow ESTABLISHED packets then further packets in a connection stream 
will continue to pass through the firewall even if you remove the rule/s 
which originally allowed the connection to get set up.

> I've been told that the module ip_conntrack may have something to do with
> this, but I cannot rmmod it because it's busy and insmod says it's already
> there.

What exactly are you trying to do ?   What rules are you trying to remove, or 
what traffic are you trying to block ?

Antony.

-- 

Most people are aware that the Universe is big.

 - Paul Davies, Professor of Theoretical Physics


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Rules not taking effect - 2nd try
  2002-10-17 23:35 ` Antony Stone
@ 2002-10-18  0:32   ` Tib
  2002-10-18  2:51     ` ICMP conntrack Vincent Lim
  2002-10-18  8:25     ` Rules not taking effect - 2nd try Antony Stone
  0 siblings, 2 replies; 12+ messages in thread
From: Tib @ 2002-10-18  0:32 UTC (permalink / raw)
  To: netfilter

On Fri, 18 Oct 2002, Antony Stone wrote:

> > I'm using 1.2.6a-5 for debian, using init.d scripts. 
iptables v. 1.2.6a package for debian, init.d scripts for 
start/stop/save_active/save_inactive, etc.

> >The problem is that when I write a rule, it does not take effect.

When I write this rule at the command prompt:

iptables -t nat -A PREROUTING -p tcp -d 216.36.67.63 --dport 40000:40200 
-j DNAT --to-destination 192.168.1.22

it gets added to the table/chain correctly, but does not take effect. IE 
if you telnet to 216.36.67.63 on port 40000, it does not get forwarded to 
192.168.1.22 as it should.

> > I have also found that a rule I had in place from earlier and I flushed it,
> > still worked even though iptables -t nat -L showed nothing.

This rule was already in existance and working fine:

iptables -t nat -A PREROUTING -p tcp -d 216.36.67.63 --dport 4996:5000 
-j DNAT --to-destination 192.168.1.4

But when I flushed it (iptables -t nat -F or iptables -t nat -C PREROUTING 
-D 1), the rule still worked even though iptables -t nat -L showed a blank 
prerouting ruleset.

> You mention -t nat specifically.

Yes, I'm not sure what this comment means though.

> You should be aware that existing connections which have been NATted bypass 
> the explicit rules in the nat table, in order to perform forward and reverse 
> NAT transparently, automatically and efficiently.

But there are were no existing connections on ports 40000:40200, this was
an attempt to forward activity on these ports to a host inside my network
in anticipation of using a program through my firewall.

> If your FORWARD chain (I'm assuming this is a routing firewall) contains a 
> rule to allow ESTABLISHED packets then further packets in a connection stream 
> will continue to pass through the firewall even if you remove the rule/s 
> which originally allowed the connection to get set up.

So as soon as the connection is gone, it would time out and the new rules 
would apply?

> What exactly are you trying to do ?   What rules are you trying to remove, or 
> what traffic are you trying to block ?

Ok - here's my setup:

DSL connection
||
router (which forwards all traffic by default to linux box)
||
linux box (acts as default gateway/masquerade box for internal network. 
||         has web/mail/etc services on it which router forwards traffic 
||         to)
internal network (192.168.1.x - has a host that I am running a program on 
                  that I want incoming connections to reach. it uses ports 
                  40000 to 40200)


Here's the ruleset:

altaica:~# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         


altaica:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             216.36.67.63       tcp 
dpts:4996:5000 to:192.168.1.4 

DNAT       tcp  --  anywhere             216.36.67.63       tcp 
dpts:40000:40200 to:192.168.1.22 

DNAT       udp  --  anywhere             216.36.67.63       udp 
dpts:40000:40200 to:192.168.1.22 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  anywhere             anywhere           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         


altaica:~# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


The rule for ports 4996:5000 is to forward dcc connections on irc to my 
desktop machine (this one works, and stayed in effect even when I deleted 
the rule and there were no irc programs running or active connections on 
these ports).

The rules for 40000:40200 are the new rules I added but that don't seem to 
have taken effect. There were no existing connections on these ports since 
there was no service on the linux box on these ports, and no one was 
attempting to connect to them before I setup the rules.


I am trying to find out if, after I write the rules, there is some 
'reload' command I need to feed the system to have it look at iptables 
again and update it's current handling. I had always thought that rules in 
iptables take immediate effect, but someone I know mentioned this having 
something to do with the ip_conntrack module - though I have no idea what 
to do about it.

<EOL>
Tib



^ permalink raw reply	[flat|nested] 12+ messages in thread

* ICMP conntrack
  2002-10-18  0:32   ` Rules not taking effect - 2nd try Tib
@ 2002-10-18  2:51     ` Vincent Lim
  2002-10-18  8:28       ` Antony Stone
  2002-10-18  8:25     ` Rules not taking effect - 2nd try Antony Stone
  1 sibling, 1 reply; 12+ messages in thread
From: Vincent Lim @ 2002-10-18  2:51 UTC (permalink / raw)
  To: netfilter

Dear people,

I was wondering why I'm not getting any conntrack entires for icmp
connections?

regards,
Vincent


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Rules not taking effect - 2nd try
  2002-10-18  0:32   ` Rules not taking effect - 2nd try Tib
  2002-10-18  2:51     ` ICMP conntrack Vincent Lim
@ 2002-10-18  8:25     ` Antony Stone
  2002-10-18  9:35       ` Tib
  1 sibling, 1 reply; 12+ messages in thread
From: Antony Stone @ 2002-10-18  8:25 UTC (permalink / raw)
  To: netfilter

On Friday 18 October 2002 1:32 am, Tib wrote:

> When I write this rule at the command prompt:
>
> iptables -t nat -A PREROUTING -p tcp -d 216.36.67.63 --dport 40000:40200
> -j DNAT --to-destination 192.168.1.22
>
> it gets added to the table/chain correctly, but does not take effect. IE
> if you telnet to 216.36.67.63 on port 40000, it does not get forwarded to
> 192.168.1.22 as it should.

Are you also adding the corresponding FORWARD rule to actually allow the 
packets through the firewall ?

> This rule was already in existance and working fine:
>
> iptables -t nat -A PREROUTING -p tcp -d 216.36.67.63 --dport 4996:5000
> -j DNAT --to-destination 192.168.1.4
>
> But when I flushed it (iptables -t nat -F or iptables -t nat -C PREROUTING
> -D 1), the rule still worked even though iptables -t nat -L showed a blank
> prerouting ruleset.
>
> > You mention -t nat specifically.
>
> Yes, I'm not sure what this comment means though.

I think you need to read some of the documentation available at 
http://www.netfilter.org/documentation in order to learn about filtering, 
address translation, and the differe chains/tables used within netfilter.

> > If your FORWARD chain (I'm assuming this is a routing firewall) contains
> > a rule to allow ESTABLISHED packets then further packets in a connection
> > stream will continue to pass through the firewall even if you remove the
> > rule/s which originally allowed the connection to get set up.
>
> So as soon as the connection is gone, it would time out and the new rules
> would apply?

No, I was assuming you had the standard default DROP policy (you haven't) and 
a FORWARD rule to accept ESTABLISHED,RELATED connections (you haven't).

> > What exactly are you trying to do ?   What rules are you trying to
> > remove, or what traffic are you trying to block ?
>
> Ok - here's my setup:
>
> DSL connection
>
> router (which forwards all traffic by default to linux box)
>
> linux box (acts as default gateway/masquerade box for internal network.
>
> ||         has web/mail/etc services on it which router forwards traffic
> ||         to)
>
> internal network (192.168.1.x - has a host that I am running a program on
>                   that I want incoming connections to reach. it uses ports
>                   40000 to 40200)
>
> Here's the ruleset:

Please can you post your rules again, but this time post the rules 
themselves, not the output from iptables -L   The listing output (a) doesn't 
contain allthe information we need to understand what rules you have, and (b) 
is more confusing (at least for me) because that'snot how I write my rules.

Antony.

-- 

I vote "no" to this proposal to form a committee to investigate whether we 
should or should not hold a ballot on whether to vote yet.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18  2:51     ` ICMP conntrack Vincent Lim
@ 2002-10-18  8:28       ` Antony Stone
  2002-10-18  9:05         ` Cedric Blancher
  0 siblings, 1 reply; 12+ messages in thread
From: Antony Stone @ 2002-10-18  8:28 UTC (permalink / raw)
  To: netfilter

On Friday 18 October 2002 3:51 am, Vincent Lim wrote:

> Dear people,
>
> I was wondering why I'm not getting any conntrack entires for icmp
> connections?

There is no concept of a "connection" for ICMP.

A single ICMP packet is sent to indicate some situation has occurred.   
There's no reply, there's no follow-up packet, therefore there's no need to 
keeptrack of a "connection" for something which consists of only a single 
packet.

Antony.

-- 

There are only 10 types of people in the world:
those who understand binary notation,
and those who don't.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18  8:28       ` Antony Stone
@ 2002-10-18  9:05         ` Cedric Blancher
  2002-10-18  9:52           ` Antony Stone
  0 siblings, 1 reply; 12+ messages in thread
From: Cedric Blancher @ 2002-10-18  9:05 UTC (permalink / raw)
  To: Antony Stone; +Cc: netfilter

Le ven 18/10/2002 à 10:28, Antony Stone a écrit :
> > I was wondering why I'm not getting any conntrack entires for icmp
> > connections?
> There is no concept of a "connection" for ICMP.

Yes it's true, but for some, you have a request/reply concept.
 
> A single ICMP packet is sent to indicate some situation has occurred.   
> There's no reply, there's no follow-up packet, therefore there's no need to 
> keeptrack of a "connection" for something which consists of only a single 
> packet.

Two cases :

	request/reply : echo, timestamp, address mask and info
		First packet (request) is NEW, others (replies) are
		ESTABLISHED ; entries have a 30s timeout.
		If a unsolicitated reply is received, then INVALID.

	ICMP erros : ICMP payload is a quotation extracted from the IP
		packet that has generated the error. This quotation is
		used to identify the related session in conntrack table.
		If ICMP match an active entry, then it's RELATED. If
		not, it's INVALID.

So, for ICMP requests, you have some kind of conntrack, based on ICMP
sequence number. For ICMP errors, conntrack tries to associate them to
an existing entry.


-- 
Cédric Blancher  <blancher@cartel-securite.fr>
Consultant en sécurité des systèmes et réseaux  - Cartel Sécurité
Tél: +33 (0)1 44 06 97 87 - Fax: +33 (0)1 44 06 97 99
PGP KeyID:157E98EE  FingerPrint:FA62226DA9E72FA8AECAA240008B480E157E98EE


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Rules not taking effect - 2nd try
  2002-10-18  8:25     ` Rules not taking effect - 2nd try Antony Stone
@ 2002-10-18  9:35       ` Tib
  0 siblings, 0 replies; 12+ messages in thread
From: Tib @ 2002-10-18  9:35 UTC (permalink / raw)
  To: Antony Stone; +Cc: netfilter


Ok, apologies for self stupidity are owed. I fell prey to the biggest 
blunder of them all: "The Obvious Mistake(tm)". 


DSL connection
|
dsl router (routeable ip)
|
linux box (private ip)
|
internal network (more private ip's)



The dsl IP is the one I was attempting to route, but by the time the 
packet got to the linux box from the router, the routeable ip was already 
mangled to be the linux box ip. So as soon as I put the linux box ip into 
the rule, it worked great and just fine. Only problem is that since it 
goes through double mangling, by the time it gets sent back out to the 
router the dsl router doesn't know where it's supposed to go and loses the 
connection.

So either way, I'm screwed since I've only got one IP. I need a larger 
block in order for this to work right. masquerading just won't cut it. 
Sorry for the headaches everyone.

<EOL>
Tib



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18  9:05         ` Cedric Blancher
@ 2002-10-18  9:52           ` Antony Stone
  2002-10-18 10:07             ` Vincent Lim
  2002-10-18 10:54             ` Cedric Blancher
  0 siblings, 2 replies; 12+ messages in thread
From: Antony Stone @ 2002-10-18  9:52 UTC (permalink / raw)
  To: netfilter

On Friday 18 October 2002 10:05 am, Cedric Blancher wrote:

> Le ven 18/10/2002 à 10:28, Antony Stone a écrit :
> > > I was wondering why I'm not getting any conntrack entires for icmp
> > > connections?
> >
> > There is no concept of a "connection" for ICMP.
>
> Yes it's true, but for some, you have a request/reply concept.

Yes, I realised that was the only exception after I posted my reply.

> > A single ICMP packet is sent to indicate some situation has occurred.
> > There's no reply, there's no follow-up packet, therefore there's no need
> > to keeptrack of a "connection" for something which consists of only a
> > single packet.
>
> Two cases :
>
> 	request/reply : echo, timestamp, address mask and info
> 		First packet (request) is NEW, others (replies) are
> 		ESTABLISHED ; entries have a 30s timeout.
> 		If a unsolicitated reply is received, then INVALID.

Indeed.

> 	ICMP erros : ICMP payload is a quotation extracted from the IP
> 		packet that has generated the error. This quotation is
> 		used to identify the related session in conntrack table.
> 		If ICMP match an active entry, then it's RELATED. If
> 		not, it's INVALID.

Although I agree with what you've said here, it's not really relevant to the 
original poster's question, because in these cases you'll still never see an 
ICMP entry in the connection tracking table.   Because the ICMP packets are 
RELATED to the original connection, it's the original packet which you'll see 
in the conntrack table - the ICMP replies simply get through because of their 
relationship to the original packet.

> So, for ICMP requests, you have some kind of conntrack, based on ICMP
> sequence number. For ICMP errors, conntrack tries to associate them to
> an existing entry.

ICMP sequence number ???   What's that ?

Antony.

-- 

If the human brain were so simple that we could understand it,
we'd be so simple that we couldn't.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18  9:52           ` Antony Stone
@ 2002-10-18 10:07             ` Vincent Lim
  2002-10-18 10:22               ` Antony Stone
  2002-10-18 10:54             ` Cedric Blancher
  1 sibling, 1 reply; 12+ messages in thread
From: Vincent Lim @ 2002-10-18 10:07 UTC (permalink / raw)
  To: Antony Stone; +Cc: netfilter

Antony Stone wrote:
> 
> On Friday 18 October 2002 10:05 am, Cedric Blancher wrote:
> 
> > Le ven 18/10/2002 à 10:28, Antony Stone a écrit :
> > > > I was wondering why I'm not getting any conntrack entires for icmp
> > > > connections?
> > >
> > > There is no concept of a "connection" for ICMP.
> >
> > Yes it's true, but for some, you have a request/reply concept.
> 
> Yes, I realised that was the only exception after I posted my reply.
> 
> > > A single ICMP packet is sent to indicate some situation has occurred.
> > > There's no reply, there's no follow-up packet, therefore there's no need
> > > to keeptrack of a "connection" for something which consists of only a
> > > single packet.
> >
> > Two cases :
> >
> >       request/reply : echo, timestamp, address mask and info
> >               First packet (request) is NEW, others (replies) are
> >               ESTABLISHED ; entries have a 30s timeout.
> >               If a unsolicitated reply is received, then INVALID.
> 
> Indeed.
> 
> >       ICMP erros : ICMP payload is a quotation extracted from the IP
> >               packet that has generated the error. This quotation is
> >               used to identify the related session in conntrack table.
> >               If ICMP match an active entry, then it's RELATED. If
> >               not, it's INVALID.
> 
> Although I agree with what you've said here, it's not really relevant to the
> original poster's question, because in these cases you'll still never see an
> ICMP entry in the connection tracking table.   Because the ICMP packets are
> RELATED to the original connection, it's the original packet which you'll see
> in the conntrack table - the ICMP replies simply get through because of their
> relationship to the original packet.
> 
> > So, for ICMP requests, you have some kind of conntrack, based on ICMP
> > sequence number. For ICMP errors, conntrack tries to associate them to
> > an existing entry.
> 
> ICMP sequence number ???   What's that ?

Results of a ping to www.ncftpd.com :

64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11055 ttl=44
time=311.029 msec
64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11056 ttl=44
time=308.126 msec
64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11057 ttl=44
time=308.430 msec
64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11058 ttl=44
time=302.321 msec

And the entries in conntrack related to the above is:
icmp     1 29 src=192.168.1.229 dst=209.197.102.38 type=8 code=0
id=59475 src=209.197.102.38 dst=192.168.1.229 type=0 code=0 id=59475
use=1 

However if I try to ping a nearer host, there would be no entry in the
conntrack table at all.

-- 
Vincent Lim
Software Engineer
NESTAC Solution Sdn Bhd
vincent.lim@nestac.com | +(6012) 659-6609


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18 10:07             ` Vincent Lim
@ 2002-10-18 10:22               ` Antony Stone
  0 siblings, 0 replies; 12+ messages in thread
From: Antony Stone @ 2002-10-18 10:22 UTC (permalink / raw)
  To: netfilter

On Friday 18 October 2002 11:07 am, Vincent Lim wrote:

> > > So, for ICMP requests, you have some kind of conntrack, based on ICMP
> > > sequence number. For ICMP errors, conntrack tries to associate them to
> > > an existing entry.
> >
> > ICMP sequence number ???   What's that ?
>
> Results of a ping to www.ncftpd.com :
>
> 64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11055 ttl=44
> time=311.029 msec
> 64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11056 ttl=44
> time=308.126 msec
> 64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11057 ttl=44
> time=308.430 msec
> 64 bytes from ncftpd.com (209.197.102.38): icmp_seq=11058 ttl=44
> time=302.321 msec
>
> And the entries in conntrack related to the above is:
> icmp     1 29 src=192.168.1.229 dst=209.197.102.38 type=8 code=0
> id=59475 src=209.197.102.38 dst=192.168.1.229 type=0 code=0 id=59475
> use=1

Oh - okay - I see what you mean now.   I've just looked up the specs for ICMP 
echo request and indeed there is a sequence number in the "message-code 
specific extra information" field following the first four bytes.

Antony.

-- 

Normal people think "if it ain't broke, don't fix it".
Engineers think "if it ain't broke, it doesn't have enough features yet".


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: ICMP conntrack
  2002-10-18  9:52           ` Antony Stone
  2002-10-18 10:07             ` Vincent Lim
@ 2002-10-18 10:54             ` Cedric Blancher
  1 sibling, 0 replies; 12+ messages in thread
From: Cedric Blancher @ 2002-10-18 10:54 UTC (permalink / raw)
  To: Antony Stone; +Cc: netfilter

Le ven 18/10/2002 à 11:52, Antony Stone a écrit :
> Although I agree with what you've said here, it's not really relevant
> to the  original poster's question, because in these cases you'll
> still never see an ICMP entry in the connection tracking table.  
> Because the ICMP packets are RELATED to the original connection, it's
> the original packet which you'll see in the conntrack table - the ICMP
> replies simply get through because of their
> relationship to the original packet.

True ;)

> > So, for ICMP requests, you have some kind of conntrack, based on ICMP
> > sequence number. For ICMP errors, conntrack tries to associate them to
> > an existing entry.
> ICMP sequence number ???   What's that ?

cbr@elendil:~$ ping thor
PING thor (192.168.10.50): 56 data bytes
64 bytes from 192.168.10.50: icmp_seq=0 ttl=255 time=0.3 ms
64 bytes from 192.168.10.50: icmp_seq=1 ttl=255 time=0.3 ms
64 bytes from 192.168.10.50: icmp_seq=2 ttl=255 time=0.2 ms
64 bytes from 192.168.10.50: icmp_seq=3 ttl=255 time=0.3 ms
64 bytes from 192.168.10.50: icmp_seq=4 ttl=255 time=0.3 ms

			     ^^^^^^^^^^
				This

Just spy an ICMP request/reply stuff such as ping with ethereal and look
at sequence number field. It aims to associate received reply to the
good sent request.

-- 
Cédric Blancher  <blancher@cartel-securite.fr>
Consultant en sécurité des systèmes et réseaux  - Cartel Sécurité
Tél: +33 (0)1 44 06 97 87 - Fax: +33 (0)1 44 06 97 99
PGP KeyID:157E98EE  FingerPrint:FA62226DA9E72FA8AECAA240008B480E157E98EE


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2002-10-18 10:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-10-17 23:27 Rules not taking effect Tib
2002-10-17 23:35 ` Antony Stone
2002-10-18  0:32   ` Rules not taking effect - 2nd try Tib
2002-10-18  2:51     ` ICMP conntrack Vincent Lim
2002-10-18  8:28       ` Antony Stone
2002-10-18  9:05         ` Cedric Blancher
2002-10-18  9:52           ` Antony Stone
2002-10-18 10:07             ` Vincent Lim
2002-10-18 10:22               ` Antony Stone
2002-10-18 10:54             ` Cedric Blancher
2002-10-18  8:25     ` Rules not taking effect - 2nd try Antony Stone
2002-10-18  9:35       ` Tib

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.