PASV ftp
1.功能描述
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载、删除文件。FTP服务器端可以同时提供给多人共享使用。
FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
FTP上传和下载文件需要有两个tcp连接:
一个是控制连接(port:21),控制连接用于在两个主机之间传输控制信息,如口令,用户标识,存放、获取文件等命令
一个是数据连接(port:20)。数据连接用于实际发送一个文件,发送完文件之后数据连接会关闭
关于数据连接的建立实际又有两种模式:主动模式和被动模式
主动模式 Port(服务端连接客户端)
客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1端口监听,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
被动模式 Passive(客户端连接服务端)
客户端同时随机开启两个端口(比如1024,1025),一个端口(1024)跟服务端的21端口建立连接。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据
隐式FTPS
FTP服务器要求FTP客户必须初始化SSL握手过程并和FTP服务器之间建立安全的加密控制连接, 加密控制连接建立之后FTP命令才能够被送到FTP服务器. 如果FTP客户不支持SSL功能,或它和服务器之间没有建立安全的加密控制连接,FTP服务器将不对来自FTP客户的命令做出任何反应
功能支持
- 支持明文的FTP反向代理
- 支持隐式FTPS模式(客户端和服务端先建立加密连接,再开始发送命令,数据连接也需要加密)
- FTP/FTPS被动模式支持(ipv4)
- FTP/FTPS被动模式支持(ipv6)
2.依赖模块
该功能的实现需要依赖range模块 提供的端口流量转发功能
njet.conf:
load_module modules/njt_range_module.so;
3.指令说明
- 控制通道指令
Syntax | ftp_ctrl zone={ftp_zone:10M} proxy_ip={192.168.40.136} min_port={12000} max_port={13000}; |
---|---|
Default | - |
Context | stream,server |
- 参数说明
端口范围跟真实的ftp服务端端口范围没有必然联系,对于客户端来说,只会看到代理的端口范围,并发数受代理端口范围限制
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
zone | string | 是 | 配置共享内存以及大小 |
proxy_ip | string | 是 | 代理是ipv4情况下会使用此ip返回给客户端ftp代理的IP,因为可能存在默认的127.0.0.1或者多ip情况,必须明确填写ip |
min_port | int | 是 | ftp 代理支持的端口范围下限 |
max_port | int | 是 | ftp 代理支持的端口范围上限(max_port-min_port 表示ftp代理支持的最多ftp并发数据连接) |
- 数据通道指令:
Syntax | ftp_data zone={ftp_zone}; |
---|---|
Default | - |
Context | stream,server |
- 参数说明
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
zone | string | 是 | 设置共享内存名称,由控制通道创建,此处只需要指定共享内存名称,与控制通道共享内存名称保持一致 |
4.配置样例
系统依赖
需要系统上先执行如下命令:
modprobe nf_conntrack_ipv4
modprobe nf_conntrack_ipv6
注:curl低版本有的不支持ftp 被动模式等配置,请使用高版本测试
4.1 FTP/FTPS被动模式支持(ipv4)
明文FTP模式
njet.conf配置
helper broker modules/njt_helper_broker_module.so conf/mqtt.conf;
helper ctrl modules/njt_helper_ctrl_module.so conf/njet_ctrl.conf;
load_module modules/njt_http_location_module.so;
load_module modules/njt_range_module.so; #依赖range模块
load_module modules/njt_http_dyn_range_module.so; #动态range模块,如果不需要动态修改,可不加载这个模块
user root;
worker_processes 1;
cluster_name helper;
node_name node1;
error_log logs/error.log info;
pid logs/njet.pid;
events {
worker_connections 1024;
}
#此处配置range规则,range模块会使用系统的iptables规则
range type=tcp src_ports=11000:12000 dst_port=10001;
#默认路径为/usr/sbin/iptables, 如果系统路径不一致需要调用该指令设置下路径
range iptables_path=/usr/sbin/iptables;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
server 192.168.40.91:21;
}
server {
listen 8001;
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.156 min_port=11000 max_port=12000;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
#不能再配置proxy_pass指令
listen 10001 mesh;
ftp_data zone=ftp_zone;
}
}
注:proxy_ip 配置的是部署njet代理的服务器的ip ,upstream ctl_upstream 里配置的是部署的ftp server的服务器的ip
vsftpd服务端建议配置:vi /etc/vsftpd/vsftpd.conf
#listen_ipv6=YES
#配置为ftp 被动模式
pasv_enable=YES
#配置被动模式数据端口范围
pasv_min_port=60000
pasv_max_port=60100
pasv_promiscuous=YES
#这个配置是允许user_list文件里配置的用户可以访问
userlist_deny=no
隐式FTPS模式
OpenNJet配置
helper broker modules/njt_helper_broker_module.so conf/mqtt.conf;
helper ctrl modules/njt_helper_ctrl_module.so conf/njet_ctrl.conf;
load_module modules/njt_http_location_module.so;
load_module modules/njt_range_module.so; #依赖range模块
load_module modules/njt_http_dyn_range_module.so; #动态range模块,如果不需要动态修改,可不加载这个模块
user root;
worker_processes 1;
cluster_name helper;
node_name node1;
error_log logs/error.log info;
pid logs/njet.pid;
events {
worker_connections 1024;
}
#此处配置range规则,range模块会使用系统的iptables规则
range type=tcp src_ports=11000:12000 dst_port=10001;
#默认路径为/usr/sbin/iptables, 如果系统路径不一致需要调用该指令设置下路径
range iptables_path=/usr/sbin/iptables;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
server 192.168.40.91:990;
}
server {
listen 21 ssl;
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.136 min_port=11000 max_port=12000;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
listen 10001 ssl mesh;
ftp_data zone=ftp_zone;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
}
}
vsftpd配置示例
#配置服务端为隐式ftp
implicit_ssl=YES
#开启ssl
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
#控制连接与数据连接不共用ssl session, 一定要配置
require_ssl_reuse=NO
#配置ssl证书
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
#一般隐式ftp 端口会只用990端口,如果不配置,vsftpd默认还是21,
#有的ftp服务可能会默认为990,此处明确指定端口为990
listen_port=990
#配置ftp server 日志文件
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_file=/var/log/xferlog
#配置为ftp 被动模式
pasv_enable=YES
#配置被动模式数据端口范围,这个端口范围跟ftp代理的端口范围没有必然关系
pasv_min_port=60000
pasv_max_port=60100
#这个配置是允许user_list文件里配置的用户可以访问
userlist_deny=no
4.2 FTP/FTPS被动模式支持(ipv6)
明文FTP模式
vsftpd服务端配置( /etc/vsftpd/vsftpd.conf )
#下面方式二选一, 只能同时选择一个,不能同时两个都配置YES
#listen 配置为YES,ipv4 端口监听
listen=NO
#listen_ipv6 配置为YES, 会同时开启ipv4和ipv6端口监听
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_file=/var/log/xferlog
#被动模式支持,一定开启
pasv_enable=YES
#被动模式端口范围
pasv_max_port=60300
pasv_min_port=60000
userlist_deny=no
- njet.conf 配置(代理ipv6 后端ipv6):
...
load_module modules/njt_range_module.so; #range 模块
load_module modules/njt_http_dyn_range_module.so; #range 动态修改模块,依赖于上面的range模块
...
#配置ip6tables路径
range ip6tables_path=/usr/sbin/ip6tables;
#配置ipv6 端口映射
range type=tcp family=ipv6 src_ports=8200:8300 dst_port=8100;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
#后端为vsftp 服务器(ipv6)
server [2408:8606:8400:30a:6::1a]:21;
}
server {
#配置ipv6 控制面监听端口
listen [::]:8000;
#配置ftp控制通道
#proxy_ip参数在代理是ipv4情况下会使用此ip返回给客户端
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.158 min_port=8200 max_port=8300;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
#配置ipv6 数据面监听端口
listen [::]:8100 mesh;
#配置ftp数据通道
ftp_data zone=ftp_zone;
}
}
2.njet.conf 代理ipv6 后端ipv4
...
load_module modules/njt_range_module.so; #range 模块
load_module modules/njt_http_dyn_range_module.so; #range 动态修改模块,依赖于上面的range模块
...
#配置ip6tables路径
range ip6tables_path=/usr/sbin/ip6tables;
#配置ipv6 端口映射
range type=tcp family=ipv6 src_ports=8200:8300 dst_port=8100;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
#后端为vsftp 服务器(ipv4)
server 192.168.40.157:21;
}
server {
#配置ipv6 控制面监听端口
listen [::]:8000;
#配置ftp控制通道
#proxy_ip参数在代理是ipv4情况下会使用此ip返回给客户端
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.158 min_port=8200 max_port=8300;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
#配置ipv6 数据面监听端口
listen [::]:8100 mesh;
#配置ftp数据通道
ftp_data zone=ftp_zone;
}
}
隐式FTPS模式
vsftpd服务端配置( /etc/vsftpd/vsftpd.conf )
#listen 配置为YES,ipv4 端口监听
listen=no
#listen_ipv6 配置为YES, 会同时开启ipv4和ipv6端口监听
listen_ipv6=YES
#配置服务端为隐式ftp
implicit_ssl=YES
#开启ssl
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
#控制连接与数据连接不共用ssl session, 一定要配置
require_ssl_reuse=NO
#配置ssl证书
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
#一般隐式ftp 端口会只用990端口,如果不配置,vsftpd默认还是21,
#有的ftp服务可能会默认为990,此处明确指定端口为990
listen_port=990
#配置ftp server 日志文件
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_file=/var/log/xferlog
#配置为ftp 被动模式
pasv_enable=YES
#配置被动模式数据端口范围(根据业务需要配置端口范围),这个端口范围跟ftp代理的端口范围没有必然关系
pasv_max_port=60300
pasv_min_port=60000
#这个配置是允许user_list文件里配置的用户可以访问
userlist_deny=no
- njet.conf代理ipv6 后端ipv6
...
load_module modules/njt_range_module.so; #range 模块
load_module modules/njt_http_dyn_range_module.so; #range 动态修改模块,依赖于上面的range模块
...
#配置ip6tables路径
range ip6tables_path=/usr/sbin/ip6tables;
#配置ipv6 端口映射
range type=tcp family=ipv6 src_ports=8200:8300 dst_port=8100;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
#后端为vsftp 服务器(ipv4)
server [2408:8606:8400:30a:6::1a]:990;
}
server {
#配置ipv6 控制面监听端口
listen [::]:8000 ssl;
#配置ftp控制通道
#proxy_ip参数在代理是ipv4情况下会使用此ip返回给客户端
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.158 min_port=8200 max_port=8300;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
#配置ipv6 数据面监听端口
listen [::]:8100 ssl mesh;
#配置ftp数据通道
ftp_data zone=ftp_zone;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
}
}
- njet.conf代理ipv6 后端ipv4
...
load_module modules/njt_range_module.so; #range 模块
load_module modules/njt_http_dyn_range_module.so; #range 动态修改模块,依赖于上面的range模块
#配置ip6tables路径
range ip6tables_path=/usr/sbin/ip6tables;
#配置ipv6 端口映射
range type=tcp family=ipv6 src_ports=8200:8300 dst_port=8100;
stream {
upstream ctl_upstream {
hash $remote_addr consistent;
#后端为vsftp 服务器(ipv4)
server 192.168.40.158:990;
}
server {
#配置ipv6 控制面监听端口
listen [::]:8000 ssl;
#配置ftp控制通道
#proxy_ip参数在代理是ipv4情况下会使用此ip返回给客户端
ftp_ctrl zone=ftp_zone:10M proxy_ip=192.168.40.158 min_port=8200 max_port=8300;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
proxy_pass ctl_upstream;
proxy_timeout 2000s; #ftp连接默认10分钟会断开,如果传输大文件超过10分钟时,配置该指令
}
server {
#配置ipv6 数据面监听端口
listen [::]:8100 ssl mesh;
#配置ftp数据通道
ftp_data zone=ftp_zone;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/vsftpd/.sslkey/vsftpd.pem;
ssl_certificate_key /etc/vsftpd/.sslkey/vsftpd.pem;
proxy_ssl on;
}
}
5.调用样例
5.1 FTP服务器和客户端搭建
5.1.1 FTP 服务端安装
安装vsftpd
yum -y install vsftpd
systemctl start|stop|restart vsftpd
Root 权限登录
修改vsftpd.conf文件:sudo vim /etc/vsftpd.conf,将 #write_enable=YES 前面的注释#去掉
sudo vim /etc/ftpusers 更改/etc/ftpusers,注释掉root用户
systemctl stop vsftpd
systemctl start vsftpd
5.1.2 FTP 客户端安装 (也可以使用带有图形化页面的FlashFXP)
yum -y install ftp
5.1.3 下载文件(ipv4)
[root@CDN157 ~]# ftp 192.168.40.156 8001
Connected to 192.168.40.156 (192.168.40.156).
220 (vsFTPd 3.0.2)
Name (192.168.40.156:root): root #此处输入的用户名和密码是部署的ftp server 的用户名和密码
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp>
ftp> get /home/limin/ftp//upload/log2.txt /home/limin/ftp/aa.txt
local: /home/limin/ftp/aa.txt remote: /home/limin/ftp//upload/log2.txt
227 Entering Passive Mode (192,168,40,156,42,248).
150 Opening BINARY mode data connection for /home/limin/ftp//upload/log2.txt (65536 bytes).
226 Transfer complete.
65536 bytes received in 0.000294 secs (222911.57 Kbytes/sec)
ftp>
5.1.4 上传文件(ipv4):
[root@CDN157 ~]# ftp 192.168.40.156 8001
Connected to 192.168.40.156 (192.168.40.156).
220 (vsFTPd 3.0.2)
Name (192.168.40.156:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put /home/limin/ftp/upload/log3.txt
local: /home/limin/ftp/upload/log3.txt remote: /home/limin/ftp/upload/log3.txt
227 Entering Passive Mode (192,168,40,156,42,249).
150 Ok to send data.
226 Transfer complete.
65536 bytes sent in 0.00012 secs (546133.38 Kbytes/sec)
ftp>
5.1.5 下载文件(隐士:代理ipv6 后端ipv6):
[limin@CDN156 ipv6]$ lftp -u root:root ftps://[2408:8606:8400:30a:6::1a]:8000
lftp root@2408:8606:8400:30a:6::1a:~> ls
-rw-r--r-- 1 0 0 0 Dec 20 2023 11
-rw-r--r-- 1 0 0 1073741824 Dec 20 02:57 6622og
-rw-r--r-- 1 0 0 4120 Nov 28 02:54 HD_BDS.hdb888
-rw-r--r-- 1 0 0 4120 Nov 28 03:01 HD_BDS1.hdb888
-rw-r--r-- 1 0 0 343 Dec 20 03:04 down.sh
lftp root@2408:8606:8400:30a:6::1a:~> get down.sh /home/limin/ftp/ipv6
get: Access failed: 550 Failed to open file. (/home/limin/ftp/ipv6)
343 bytes transferred in 45 seconds (8b/s)
Transfer of 1 of 2 files failed
lftp root@2408:8606:8400:30a:6::1a:~> bye
[limin@CDN156 ipv6]$ ll
总用量 4
-rw-rw-r-- 1 limin limin 343 12月 20 11:04 down.sh
5.1.6 上传文件(隐士:代理ipv6 后端ipv6):
[limin@CDN156 ipv6]$ lftp -u root:root ftps://[2408:8606:8400:30a:6::1a]:8000
lftp root@2408:8606:8400:30a:6::1a:~> put /home/limin/ftpipv6/download/11.log
1073741824 bytes transferred in 19 seconds (52.80M/s)
lftp root@2408:8606:8400:30a:6::1a:~> bye
5.1.7 下载文件(明文:代理ipv6 后端ipv4)
EPSV方式
根据目标地址为ipv6,curl都只会选择使用EPSV方式连接
禁用epsv,也会使用epsv方式
[root@CDN157 ~]# curl --disable-epsv -u root:root ftp://[2408:8606:8400:30a:6::1a]:8000/11.log -o testbak -vvv
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying [2408:8606:8400:30a:6::1a]:8000...
* Connected to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8000
< 220 (vsFTPd 3.0.2)
> USER root
< 331 Please specify the password.
> PASS root
< 230 Login successful.
> PWD
< 257 "/root"
* Entry path is '/root'
* Request has same path as previous transfer
> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
< 229 Entering Extended Passive Mode (|||8200|).
* Connecting to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8200
* Trying [2408:8606:8400:30a:6::1a]:8200...
* Connected to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8000
> TYPE I
< 200 Switching to Binary mode.
> SIZE 11.log
< 213 1073741824
> RETR 11.log
< 150 Opening BINARY mode data connection for 11.log (1073741824 bytes).
* Maxdownload = -1
* Getting file with size: 1073741824
{ [7140 bytes data]
94 1024M 94 972M 0 0 101M 0 0:00:10 0:00:09 0:00:01 84.1M* Remembering we are in dir ""
< 226 Transfer complete.
100 1024M 100 1024M 0 0 104M 0 0:00:09 0:00:09 --:--:-- 85.3M
* Connection #0 to host 2408:8606:8400:30a:6::1a left intact
5.1.8 上传文件(明文:代理ipv6 后端ipv4)
[root@CDN157 ~]# sudo curl --disable-epsv -u root:root -T /home/limin/ftp/log2.txt ftp://[2408:8606:8400:30a:6::1a]:8000 -vvv
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying [2408:8606:8400:30a:6::1a]:8000...
* Connected to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8000
< 220 (vsFTPd 3.0.2)
> USER root
< 331 Please specify the password.
> PASS root
< 230 Login successful.
> PWD
< 257 "/root"
* Entry path is '/root'
* Request has same path as previous transfer
> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
< 229 Entering Extended Passive Mode (|||8201|).
* Connecting to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8201
* Trying [2408:8606:8400:30a:6::1a]:8201...
* Connected to 2408:8606:8400:30a:6::1a (2408:8606:8400:30a:6::1a) port 8000
> TYPE I
< 200 Switching to Binary mode.
> STOR log2.txt
< 150 Ok to send data.
} [42840 bytes data]
22 390M 0 0 22 89.4M 0 428M --:--:-- --:--:-- --:--:-- 427M* We are completely uploaded and fine
* Remembering we are in dir ""
< 226 Transfer complete.
100 390M 0 0 100 390M 0 384M 0:00:01 0:00:01 --:--:-- 384M
* Connection #0 to host 2408:8606:8400:30a:6::1a left intact