* Connection tracking Cli and an ALG for DNS
@ 2015-11-04 18:32 Bill
2015-11-06 22:27 ` [Bulk] " Bill
0 siblings, 1 reply; 7+ messages in thread
From: Bill @ 2015-11-04 18:32 UTC (permalink / raw)
To: Netfilter Users Mailing list
I am looking at creating a DNS_ALG using netfilter connection tracking. I
believe I understand most of what is needed but am having problems testing
the ideas using the Cli from the conntrack-tools package.
Basically I have a setup that looks like this, a NAT gateway (with DNS) a
local host inside the NAT, and a remote host outside the NAT:
local host dns/nat gateway remote host
192.168.20.171 192.168.20.170 192.168.30.172
192.168.30.170
inside ----->>> nat >>> ------ outside
Thus local host can connect to remote host and is natted thru the gateway, but
remote host can't connect to local host as it is blocked by the NAT gateway.
What want ultimately is for remote to do a DNS on the gateway, and have the
gateway configure the NAT to allow the incoming connection. I want the
connection to look as if local has initiated it, ie I want it natted so the
connection is between the gateway and the remote host IPs on the outside.
Ultimately I want to program this into a DNS server or build a DNS_ALG, but
for now I am just testing out the ideas and trying to test using the
conntrack-tools, but I have having limited success. I can add/delete/modify
connections but I haven't been able to create a conntrack 'expectation'.
In the conntrack-tools there is a set of tests 'test.sh' file that has
examples, and they work, but not the 'expectation', test as it is missing
some options.
What I'd like to know is given the above example, where I'd like
192.168.30.172 to connect to an expectation on 192.168.30.170 and be passed
thru the NAT to 192.168.20.171, what are the right commends to use?
I am pretty sure I need an 'expectation' and not a connection in one of the
initial state machine states, but please correct me if I am wrong.
/bill
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bulk] Connection tracking Cli and an ALG for DNS
2015-11-04 18:32 Connection tracking Cli and an ALG for DNS Bill
@ 2015-11-06 22:27 ` Bill
2015-11-15 18:26 ` Adel Belhouane
2015-11-15 18:45 ` Adel Belhouane
0 siblings, 2 replies; 7+ messages in thread
From: Bill @ 2015-11-06 22:27 UTC (permalink / raw)
To: Netfilter Users Mailing list
I've been looking at this a bit more and it occurs to me that it may be I
don't need 'expect', but can use the regular connection tracking table.
So I have tried adding a connection that would allow me to traverse the NAT in
the opposite direction but haven't had any success with this either.
conntrack -I -s 192.168.30.172 -d 192.168.20.171 -p tcp --sport 50000 --dport
22 --state LISTEN -u SEEN_REPLY -t 600 --reply-src 192.168.20.171 --reply-dst
192.168.20.170 --reply-port-src 22 --reply-port-dst 5000
I came up with the options by looking at an established connection in the
other direction, so there is some guess work here.
If anyone can tell me definitively if I can use a connection or an expect to
do what I want, as described below, I'd appreciate it.
/bill
On Wednesday 04 November 2015 13:32, Bill wrote:
> I am looking at creating a DNS_ALG using netfilter connection tracking. I
> believe I understand most of what is needed but am having problems testing
> the ideas using the Cli from the conntrack-tools package.
>
> Basically I have a setup that looks like this, a NAT gateway (with DNS) a
> local host inside the NAT, and a remote host outside the NAT:
>
> local host dns/nat gateway remote host
> 192.168.20.171 192.168.20.170 192.168.30.172
> 192.168.30.170
> inside ----->>> nat >>> ------ outside
>
> Thus local host can connect to remote host and is natted thru the gateway,
> but remote host can't connect to local host as it is blocked by the NAT
> gateway.
>
> What want ultimately is for remote to do a DNS on the gateway, and have the
> gateway configure the NAT to allow the incoming connection. I want the
> connection to look as if local has initiated it, ie I want it natted so the
> connection is between the gateway and the remote host IPs on the outside.
>
> Ultimately I want to program this into a DNS server or build a DNS_ALG, but
> for now I am just testing out the ideas and trying to test using the
> conntrack-tools, but I have having limited success. I can
> add/delete/modify connections but I haven't been able to create a conntrack
> 'expectation'.
>
> In the conntrack-tools there is a set of tests 'test.sh' file that has
> examples, and they work, but not the 'expectation', test as it is missing
> some options.
>
> What I'd like to know is given the above example, where I'd like
> 192.168.30.172 to connect to an expectation on 192.168.30.170 and be passed
> thru the NAT to 192.168.20.171, what are the right commends to use?
>
> I am pretty sure I need an 'expectation' and not a connection in one of the
> initial state machine states, but please correct me if I am wrong.
>
> /bill
> --
> To unsubscribe from this list: send the line "unsubscribe netfilter" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bulk] Connection tracking Cli and an ALG for DNS
2015-11-06 22:27 ` [Bulk] " Bill
@ 2015-11-15 18:26 ` Adel Belhouane
2015-11-15 18:45 ` Adel Belhouane
1 sibling, 0 replies; 7+ messages in thread
From: Adel Belhouane @ 2015-11-15 18:26 UTC (permalink / raw)
To: netfilter
Le 06/11/2015 23:27, Bill a écrit :
> I've been looking at this a bit more and it occurs to me that it may be I
> don't need 'expect', but can use the regular connection tracking table.
>
[...]
> If anyone can tell me definitively if I can use a connection or an expect to
> do what I want, as described below, I'd appreciate it.
>
> /bill
>
>
> On Wednesday 04 November 2015 13:32, Bill wrote:
>> I am looking at creating a DNS_ALG using netfilter connection tracking. I
>> believe I understand most of what is needed but am having problems testing
>> the ideas using the Cli from the conntrack-tools package.
>>
>> Basically I have a setup that looks like this, a NAT gateway (with DNS) a
>> local host inside the NAT, and a remote host outside the NAT:
>>
>> local host dns/nat gateway remote host
>> 192.168.20.171 192.168.20.170 192.168.30.172
>> 192.168.30.170
>> inside ----->>> nat >>> ------ outside
>>
>> Thus local host can connect to remote host and is natted thru the gateway,
>> but remote host can't connect to local host as it is blocked by the NAT
>> gateway.
>>
>> What want ultimately is for remote to do a DNS on the gateway, and have the
>> gateway configure the NAT to allow the incoming connection. I want the
>> connection to look as if local has initiated it, ie I want it natted so the
>> connection is between the gateway and the remote host IPs on the outside.
>>
>> Ultimately I want to program this into a DNS server or build a DNS_ALG, but
>> for now I am just testing out the ideas and trying to test using the
>> conntrack-tools, but I have having limited success. I can
>> add/delete/modify connections but I haven't been able to create a conntrack
>> 'expectation'.
>>
Do you just want 192.168.20.171, behind a NAT gateway, to be the DNS server
for outside? Can you confirm that's the case or is there something else?
>> In the conntrack-tools there is a set of tests 'test.sh' file that has
>> examples, and they work, but not the 'expectation', test as it is missing
>> some options.
>>
>> What I'd like to know is given the above example, where I'd like
>> 192.168.30.172 to connect to an expectation on 192.168.30.170 and be passed
>> thru the NAT to 192.168.20.171, what are the right commends to use?
>>
>> I am pretty sure I need an 'expectation' and not a connection in one of the
>> initial state machine states, but please correct me if I am wrong.
>>
Can't you simply use the iptables DNAT target? If not, can you explain why
it won't work for your case and for what reason you'd need something else?
>> /bill
>> --
regards,
Adel BELHOUANE.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bulk] Connection tracking Cli and an ALG for DNS
2015-11-06 22:27 ` [Bulk] " Bill
2015-11-15 18:26 ` Adel Belhouane
@ 2015-11-15 18:45 ` Adel Belhouane
2015-11-19 18:52 ` Bill
1 sibling, 1 reply; 7+ messages in thread
From: Adel Belhouane @ 2015-11-15 18:45 UTC (permalink / raw)
To: Bill; +Cc: Netfilter Users Mailing list
(I didn't reply to the original sender, my bad. So sending the same message again...)
Le 06/11/2015 23:27, Bill a écrit :
> I've been looking at this a bit more and it occurs to me that it may be I
> don't need 'expect', but can use the regular connection tracking table.
>
[...]
>
> If anyone can tell me definitively if I can use a connection or an expect to
> do what I want, as described below, I'd appreciate it.
>
> /bill
>
>
> On Wednesday 04 November 2015 13:32, Bill wrote:
>> I am looking at creating a DNS_ALG using netfilter connection tracking. I
>> believe I understand most of what is needed but am having problems testing
>> the ideas using the Cli from the conntrack-tools package.
>>
>> Basically I have a setup that looks like this, a NAT gateway (with DNS) a
>> local host inside the NAT, and a remote host outside the NAT:
>>
>> local host dns/nat gateway remote host
>> 192.168.20.171 192.168.20.170 192.168.30.172
>> 192.168.30.170
>> inside ----->>> nat >>> ------ outside
>>
>> Thus local host can connect to remote host and is natted thru the gateway,
>> but remote host can't connect to local host as it is blocked by the NAT
>> gateway.
>>
>> What want ultimately is for remote to do a DNS on the gateway, and have the
>> gateway configure the NAT to allow the incoming connection. I want the
>> connection to look as if local has initiated it, ie I want it natted so the
>> connection is between the gateway and the remote host IPs on the outside.
>>
>> Ultimately I want to program this into a DNS server or build a DNS_ALG, but
>> for now I am just testing out the ideas and trying to test using the
>> conntrack-tools, but I have having limited success. I can
>> add/delete/modify connections but I haven't been able to create a conntrack
>> 'expectation'.
>>
Do you just want 192.168.20.171, behind a NAT gateway, to be the DNS server
for outside? Can you confirm that's the case or is there something else?
>> In the conntrack-tools there is a set of tests 'test.sh' file that has
>> examples, and they work, but not the 'expectation', test as it is missing
>> some options.
>>
>> What I'd like to know is given the above example, where I'd like
>> 192.168.30.172 to connect to an expectation on 192.168.30.170 and be passed
>> thru the NAT to 192.168.20.171, what are the right commends to use?
>>
>> I am pretty sure I need an 'expectation' and not a connection in one of the
>> initial state machine states, but please correct me if I am wrong.
>>
Can't you simply use the iptables DNAT target? If not, can you explain why
it won't work for your use case and for what reason you'd need something else?
>> /bill
>> --
regards,
Adel BELHOUANE
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Connection tracking Cli and an ALG for DNS
2015-11-15 18:45 ` Adel Belhouane
@ 2015-11-19 18:52 ` Bill
2015-12-02 11:12 ` Adel Belhouane
0 siblings, 1 reply; 7+ messages in thread
From: Bill @ 2015-11-19 18:52 UTC (permalink / raw)
To: Adel Belhouane; +Cc: Netfilter Users Mailing list
On Sunday 15 November 2015 13:45, Adel Belhouane wrote:
> (I didn't reply to the original sender, my bad. So sending the same message
> again...)
>
> Le 06/11/2015 23:27, Bill a écrit :
> Do you just want 192.168.20.171, behind a NAT gateway, to be the DNS server
> for outside? Can you confirm that's the case or is there something else?
Actually it is 192.168.30.171 that is a NAT gateway and the DNS server for the
192.168.20.0 network.
> Can't you simply use the iptables DNAT target? If not, can you explain why
> it won't work for your use case and for what reason you'd need something
> else?
>
DNAT would give access to a specific host, but I want to refer to it by a DNS
name for 2 reasons:
1) The host I am going to connect may change it's IP address, or if it is a
service being requested, it might be provided by another host if the network
changes (I am looking at a mobile network where hosts may come and go, or
other hosts may replace them in times of interruption).
2) Since the DNS may return different IP's over time; I don't' want the IP in
the local 192.168.20.0 network to be revealed. Instead I want it to appear
NATted, so it will be 192.168.30.170 + a port for this connection. In other
words I want it to look like the host on the 192.168.20.0 network initiated
the connection.
For reference here is my diagram again:
> >> local host dns/nat gateway remote host
> >> 192.168.20.171 192.168.20.170 192.168.30.172
> >> 192.168.30.170
> >> inside ----->>> nat >>> ------ outside
As you can see, DNAT would no do for my requirements since I'd have to
add/delete iptables rules, which I supposed I could do, but doesn't seem te
right approach.
Now since my original posting I have been reading code and have manged to
create an e'expect' connection by upgrading to the latest 4.4 kernel. In
this version I find the sample test 'create-expect' works.
After succeeding with this I realize I may need to build a kernel module for
the expectation and have started looking at the kernel code for this, such as
those for FTP etc.
/bill
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Connection tracking Cli and an ALG for DNS
2015-11-19 18:52 ` Bill
@ 2015-12-02 11:12 ` Adel Belhouane
2015-12-02 22:36 ` Bill
0 siblings, 1 reply; 7+ messages in thread
From: Adel Belhouane @ 2015-12-02 11:12 UTC (permalink / raw)
To: Bill; +Cc: Netfilter Users Mailing list
Le 19/11/2015 19:52, Bill a écrit :
> For reference here is my diagram again:
>
>>>> local host dns/nat gateway remote host
>>>> 192.168.20.171 192.168.20.170 192.168.30.172
>>>> 192.168.30.170
>>>> inside ----->>> nat >>> ------ outside
>
> As you can see, DNAT would no do for my requirements since I'd have to
> add/delete iptables rules, which I supposed I could do, but doesn't seem te
> right approach.
>
> Now since my original posting I have been reading code and have manged to
> create an e'expect' connection by upgrading to the latest 4.4 kernel. In
> this version I find the sample test 'create-expect' works.
>
> After succeeding with this I realize I may need to build a kernel module for
> the expectation and have started looking at the kernel code for this, such as
> those for FTP etc.
>
I didn't get before that the "ALG" part was essential. I read a summary here:
https://www.juniper.net/documentation/en_US/junos12.1x47/topics/concept/security-alg-dns-overview.html
So I still don't get exactly what you are looking for (sorry), but I realize
it's related to DNS data content, not just connections. Sorry to have
waisted your time with my replies and good luck with your project.
> /bill
>
regards,
Adel BELHOUANE.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Connection tracking Cli and an ALG for DNS
2015-12-02 11:12 ` Adel Belhouane
@ 2015-12-02 22:36 ` Bill
0 siblings, 0 replies; 7+ messages in thread
From: Bill @ 2015-12-02 22:36 UTC (permalink / raw)
To: Adel Belhouane; +Cc: Netfilter Users Mailing list
No worries, your comments got me thinking more about my problem, which is
always a good thing, thanks again.
/bill
On Wednesday 02 December 2015 06:12, Adel Belhouane wrote:
> Le 19/11/2015 19:52, Bill a écrit :
> > For reference here is my diagram again:
> >>>> local host dns/nat gateway remote host
> >>>> 192.168.20.171 192.168.20.170 192.168.30.172
> >>>> 192.168.30.170
> >>>> inside ----->>> nat >>> ------ outside
> >
> > As you can see, DNAT would no do for my requirements since I'd have to
> > add/delete iptables rules, which I supposed I could do, but doesn't seem
> > te right approach.
> >
> > Now since my original posting I have been reading code and have manged to
> > create an e'expect' connection by upgrading to the latest 4.4 kernel. In
> > this version I find the sample test 'create-expect' works.
> >
> > After succeeding with this I realize I may need to build a kernel module
> > for the expectation and have started looking at the kernel code for this,
> > such as those for FTP etc.
>
> I didn't get before that the "ALG" part was essential. I read a summary
> here:
> https://www.juniper.net/documentation/en_US/junos12.1x47/topics/concept/sec
>urity-alg-dns-overview.html
>
> So I still don't get exactly what you are looking for (sorry), but I
> realize it's related to DNS data content, not just connections. Sorry to
> have waisted your time with my replies and good luck with your project.
>
> > /bill
>
> regards,
> Adel BELHOUANE.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-12-02 22:36 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-04 18:32 Connection tracking Cli and an ALG for DNS Bill
2015-11-06 22:27 ` [Bulk] " Bill
2015-11-15 18:26 ` Adel Belhouane
2015-11-15 18:45 ` Adel Belhouane
2015-11-19 18:52 ` Bill
2015-12-02 11:12 ` Adel Belhouane
2015-12-02 22:36 ` Bill
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.