I am not sure if there's any such "built-in" solution to control the IP ranges 
that ats communicates to, on the origin side. You may need to write a plugin to 
be able to do that (a somewhat similar plugin that can perform ACLs for the 
client connections is available at GeoIP ACLs Plugin — Apache Traffic Server 
5.3.0 documentation). 
|   |
|   |   |   |   |   |
| GeoIP ACLs Plugin — Apache Traffic Server 5.3.0 documentationConfiguration 
Once installed, there are three primary use cases, which we will discussin 
details.  |
|  |
| View on docs.trafficserver.apache.org | Preview by Yahoo |
|  |
|   |


The closest thing I can find that can control origin communication is via 
congestion.config — Apache Traffic Server 5.3.0 documentation, but, that only 
allows to configure a single destination (and not a range).
|   |
|   |   |   |   |   |
| congestion.config — Apache Traffic Server 5.3.0 
documentationcongestion.config  |
|  |
| View on docs.trafficserver.apache.org | Preview by Yahoo |
|  |
|   |

  Thanks,
Sudheer 

     On Monday, January 12, 2015 11:29 AM, Mark Moseley <[email protected]> 
wrote:
   

 On Sun, Jan 11, 2015 at 11:31 PM, Shu Kit Chan <[email protected]> wrote:

Hi,
I think what you need is currently missing from the ts_lua plugin.We can 
provide something like this 
ts.server_request.server_addr.get_addr()

similar to 
ts.client_request.client_addr.get_addr()
as mentioned here - 
https://docs.trafficserver.apache.org/en/latest/reference/plugins/ts_lua.en.html
 
It should be using the ts api TSHttpTxnServerAddrGet() behind the scene. 
I have already filed a new Jira ticket for it - 
https://issues.apache.org/jira/browse/TS-3290
I can work on it by Wednesday or Thursday after i am done with my other errands.
Thanks.
Kit

On Sun, Jan 11, 2015 at 7:40 PM, Mark Moseley <[email protected]> wrote:

Hi. I'm looking at the TS_LUA_HOOK_OS_DNS hook or TS_LUA_HOOK_SEND_REQUEST_HDR 
as a way to do a fail-safe way of filtering *origin* IPs. Obviously this could 
be done at the onboard firewall level, but I thought it'd be neat to be able to 
do something a bit more in-line (and it's fun to play with Lua).
But despite the aforementioned hooks, there doesn't seem to be anywhere in the 
'ts' table that holds what the origin's DNS hostname was resolved to. Does that 
get stored anywhere that ts_lua has access to? ts.server_request seemed most 
promising but none of the functions in there seem to return anything like the 
origin IP.
If there were something accessible with the origin IP, then I could do a sanity 
check like, pseudo-code-wise: for ip in goodips, does origin IP match ip, and 
if none match, then return a 403 or 400 or something.

I'm coming up blank looking through the API and source code, but I may be 
missing something obvious (or more likely, just looking for the wrong thing).
Even better (and I've had no luck finding this either) would be something 
built-in that contains a list of permitted origin IP blocks, like 
ip_allow.config but for the backend request (and again, there might be but I'm 
grepping+googling for the wrong thing).
Thanks!




That'd be tremendous, thanks!
Though off-hand, is there a more "built-in" solution to what I'm trying to do? 
I.e. limit what IP blocks ATS will talk to on the *origin* side? (Even if there 
is, having access to the origin IP in Lua is still highly desirable)

   

Reply via email to