[
https://issues.apache.org/jira/browse/TS-4337?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oknet Xu updated TS-4337:
-------------------------
Description:
add config line into records.config
{code}
CONFIG proxy.config.http.use_client_target_addr INT 2
{code}
Setup ATS working on bridge mode with ebtables/iptables,
and enable tr-full on 8080 port.
send a HTTP CONNECT request.
{code}
telnet 200.x.y.10 8080
CONNECT 220.181.111.188:443 HTTP/1.1
{code}
the ip address 200.x.y.10 is a public http proxy address.
Snip contents from traffic.out
{code}
+++++++++ Proxy's Request +++++++++
-- State Machine Id: 578
CONNECT HTTP/1.1
Client-ip: 172.22.70.66
X-Forwarded-For: 172.22.70.66
Via: http/1.0 debian[AC166F6E] (ApacheTrafficServer/6.0.0)
Host: 220.181.111.188:443
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_trans) Next action
next; HttpTransact::HandleResponse
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] State
Transition: SM_ACTION_API_OS_DNS -> SM_ACTION_ORIGIN_SERVER_RAW_OPEN
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_track) entered
inside do_http_server_open ][IPv4]
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
connection to 220.181.111.188: 200.x.y.10:443
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_seq)
[HttpSM::do_http_server_open] Sending request to server
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) calling
netProcessor.connect_s
{code}
please notice on the below line:
{code}
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
connection to 220.181.111.188: 200.x.y.10:443
{code}
with "use_client_target_addr INT 2", ATS does not do name resolve and pickup
dest ip directly from TCP layer but still pickup dest port from HTTP request.
In a tr-full mode, does ATS should tunnel the CONNECT method to a remote proxy
? just think it is a one shot parent proxy, only for this tcp connection.
or other behaviour ?
was:
add config line into records.config
{code}
CONFIG proxy.config.http.use_client_target_addr INT 2
{code}
Setup ATS working on bridge mode with ebtables/iptables,
and enable tr-full on 8080 port.
send a HTTP CONNECT request.
{code}
telnet 200.x.y.10 8080
CONNECT 220.181.111.188:443 HTTP/1.1
{code}
the ip address 200.x.y.10 is a public http proxy address.
Snip contents from traffic.out
{code}
+++++++++ Proxy's Request +++++++++
-- State Machine Id: 578
CONNECT HTTP/1.1
Client-ip: 172.22.70.66
X-Forwarded-For: 172.22.70.66
Via: http/1.0 debian[AC166F6E] (ApacheTrafficServer/6.0.0)
Host: 220.181.111.188:443
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_trans) Next action
next; HttpTransact::HandleResponse
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] State
Transition: SM_ACTION_API_OS_DNS -> SM_ACTION_ORIGIN_SERVER_RAW_OPEN
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_track) entered
inside do_http_server_open ][IPv4]
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
connection to 220.181.111.188: 111.13.56.28:443
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_seq)
[HttpSM::do_http_server_open] Sending request to server
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) calling
netProcessor.connect_s
{code}
please notice on the below line:
{code}
[Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
connection to 220.181.111.188: 200.x.y.10:443
{code}
with "use_client_target_addr INT 2", ATS does not do name resolve and pickup
dest ip directly from TCP layer but still pickup dest port from HTTP request.
In a tr-full mode, does ATS should tunnel the CONNECT method to a remote proxy
? just think it is a one shot parent proxy, only for this tcp connection.
or other behaviour ?
> Pickup wrong dest ip or port while parsing CONNECT Method with
> use_client_target_addr = 2
> -----------------------------------------------------------------------------------------
>
> Key: TS-4337
> URL: https://issues.apache.org/jira/browse/TS-4337
> Project: Traffic Server
> Issue Type: Bug
> Components: HTTP
> Reporter: Oknet Xu
> Fix For: 7.1.0
>
>
> add config line into records.config
> {code}
> CONFIG proxy.config.http.use_client_target_addr INT 2
> {code}
> Setup ATS working on bridge mode with ebtables/iptables,
> and enable tr-full on 8080 port.
> send a HTTP CONNECT request.
> {code}
> telnet 200.x.y.10 8080
> CONNECT 220.181.111.188:443 HTTP/1.1
> {code}
> the ip address 200.x.y.10 is a public http proxy address.
> Snip contents from traffic.out
> {code}
> +++++++++ Proxy's Request +++++++++
> -- State Machine Id: 578
> CONNECT HTTP/1.1
> Client-ip: 172.22.70.66
> X-Forwarded-For: 172.22.70.66
> Via: http/1.0 debian[AC166F6E] (ApacheTrafficServer/6.0.0)
> Host: 220.181.111.188:443
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_trans) Next action
> next; HttpTransact::HandleResponse
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] State
> Transition: SM_ACTION_API_OS_DNS -> SM_ACTION_ORIGIN_SERVER_RAW_OPEN
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_track) entered
> inside do_http_server_open ][IPv4]
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
> connection to 220.181.111.188: 200.x.y.10:443
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http_seq)
> [HttpSM::do_http_server_open] Sending request to server
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) calling
> netProcessor.connect_s
> {code}
> please notice on the below line:
> {code}
> [Apr 7 16:58:49.996] Server {0x2b6176b8a700} DEBUG: (http) [578] open
> connection to 220.181.111.188: 200.x.y.10:443
> {code}
> with "use_client_target_addr INT 2", ATS does not do name resolve and pickup
> dest ip directly from TCP layer but still pickup dest port from HTTP request.
> In a tr-full mode, does ATS should tunnel the CONNECT method to a remote
> proxy ? just think it is a one shot parent proxy, only for this tcp
> connection.
> or other behaviour ?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)