在Rocky Linux中配置代理服务器主要有三种模式:1) 传统代理(如Squid)适用于精确控制流量,需安装并配置/etc/squid/squid.conf,通过http_access策略限制访问;2) 透明代理通过iptables/nftables实现流量重定向,需启用IP转发并配置NAT规则;3) 环境变量代理(export http_proxy)适合临时场景,可通过写入/etc/environment实现持久化。企业级部署建议结合Firewalld rich rules进行源IP过滤,并通过squid -k parse验证配置语法。关键指标包括连接并发数(max_filedescriptors)和缓存效率(cache_dir参数优化),生产环境需配置TLS加密和LDAP集成认证。
如何在 Rocky Linux 中配置和使用代理服务器?
-
配置环境变量代理
- 临时生效:
export http_proxy='http://<代理IP>:<端口>'
export https_proxy='http://<代理IP>:<端口>'
- 永久生效:
编辑/etc/profile.d/proxy.sh
,添加:export HTTP_PROXY=http://<代理IP>:<端口> export HTTPS_PROXY=http://<代理IP>:<端口>
执行
source /etc/profile
生效。
- 临时生效:
-
配置DNF代理
编辑/etc/dnf/dnf.conf
,添加:proxy=http://<代理IP>:<端口>
(若需认证,添加
proxy_username=<用户>
和proxy_password=<密码>
) -
Docker服务代理
创建/etc/systemd/system/docker.service.d/http-proxy.conf
,添加:[Service] Environment="HTTP_PROXY=http://<代理IP>:<端口>" Environment="HTTPS_PROXY=http://<代理IP>:<端口>"
执行:
systemctl daemon-reload
systemctl restart docker
-
Systemd服务代理
编辑服务配置文件(如/etc/systemd/system/ntp.service.d/proxy.conf
),添加:[Service] Environment="HTTP_PROXY=http://<代理IP>:<端口>"
执行:
systemctl daemon-reload
systemctl restart <服务名>
验证代理:
curl -I https://example.com
或检查服务日志(journalctl -u <服务名>
)
注意事项:
- 代理IP需可达且允许流量
- 敏感信息建议使用加密传输或代理白名单
- 部分应用(如wget)需单独配置代理
在Rocky Linux中配置代理服务器需分环境与应用场景处理,以下为实践总结:
-
代理服务选型与配置
- 推荐Squid(
dnf install squid
)或Nginx Stream模块。Squid需重点配置/etc/squid/squid.conf
:acl localnet src 192.168.1.0/24 # 限制内网访问 http_access allow localnet http_port 3128 intercept # 启用透明代理需内核参数调整 cache_dir ufs /var/spool/squid 5000 16 256 # 缓存目录容量单位MB
- 曾遇到缓存目录权限问题导致服务启动失败,需执行
squid -z
初始化缓存结构
- 推荐Squid(
-
系统级代理渗透
- 全局变量:在
/etc/profile.d/proxy.sh
设置HTTP_PROXY=http://proxy_ip:port
,但容器/Docker需独立配置/etc/systemd/system/docker.service.d/http-proxy.conf
- 特定工具代理:YUM/DNF需在
/etc/dnf/dnf.conf
添加proxy=http://proxy:port
,否则系统变量不生效
- 全局变量:在
-
实践挑战与解决方案
- SELinux拦截:Squid绑定非标准端口时触发
AVC denied
,需setsebool -P squid_connect_any 1
- 透明代理流量丢失:需加载TPROXY模块并配置策略路由,曾因
iptables-legacy
与nftables
混用导致NAT失效 - TLS中间人阻断:启用HTTPS拦截需预置CA证书至
/etc/pki/ca-trust/source/anchors/
并执行update-ca-trust
- 缓存击穿:大文件下载导致磁盘IO瓶颈,通过
maximum_object_size 1024 MB
限制缓存对象
- SELinux拦截:Squid绑定非标准端口时触发
-
监控与排错
- 日志分析:
journalctl -u squid -f
实时跟踪,关键字段TCP_DENIED/407
代表鉴权失败 - 性能调优:
squidclient mgr:info
查看命中率,当store_swap_size
超过95%需扩容缓存分区
- 日志分析:
注:生产环境建议部署双Squid实例+Keepalived实现高可用,透明代理场景需配合交换机策略路由实现流量牵引。
在Rocky Linux中配置代理服务器的核心步骤可分为环境配置与工具集成两个维度:
-
系统级代理
通过/etc/profile.d/proxy.sh
设置全局变量:export http_proxy="http://proxy_ip:port" export https_proxy="$http_proxy" export no_proxy="localhost,127.0.0.1,.internal"
使用
source /etc/profile.d/proxy.sh
立即生效 -
包管理器代理
在/etc/dnf/dnf.conf
追加:proxy=http://proxy_ip:port
验证:
dnf makecache
-
Squid代理部署
安装:sudo dnf install squid
配置访问控制:acl allowed_ips src 192.168.1.0/24 http_access allow allowed_ips
身份验证支持:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords acl auth_users proxy_auth REQUIRED http_access allow auth_users
-
防火墙规则
firewall-cmd --permanent --add-port=3128/tcp firewall-cmd --reload
-
服务调试
实时日志监控:journalctl -u squid -f
配置检查:squid -k parse
补充方案:
- 容器环境需在Docker daemon.json配置
"proxies"
段 - Ansible通过
environment:
模块注入代理变量 - 临时会话代理使用
curl -x http://proxy:port
在Rocky Linux中配置代理服务器需分场景处理:
- 系统级代理:在
/etc/profile.d/proxy.sh
中设置HTTP_PROXY
、HTTPS_PROXY
环境变量,重启生效;对于systemd服务,需在/etc/systemd/system.conf
添加DefaultEnvironment
。 - 包管理器:在
/etc/dnf/dnf.conf
添加proxy=http://ip:port
,支持proxy_username
和proxy_password
(需URL编码特殊字符)。 - 防火墙:通过
firewall-cmd --add-port=3128/tcp --permanent
开放代理端口。 - 应用适配:Curl/Wget默认继承环境变量,容器场景需在Dockerfile或运行时指定
--env
参数。 注意点:若代理需认证,建议使用白名单IP或密钥管理工具(如Vault)避免明文密码;调试时用curl -v -x <proxy>
验证连通性,优先选择socks5或https代理提升安全性。
在Rocky Linux里搞代理服务器,最简单的就是装个Squid。先sudo dnf install squid
安装,改配置文件/etc/squid/squid.conf
,比如把http_port改成你要的端口(比如3128)。要临时用代理的话,命令行里跑export http_proxy=http://你的IP:端口
,想永久生效就把这行塞到/etc/profile.d/proxy.sh
里。别忘开防火墙firewall-cmd --add-port=端口/tcp --permanent
,最后systemctl restart squid
重启服务就行啦!