同一个局域网内,让无公网地址的 Linux 服务器 B 通过有公网地址的 Linux 服务器 A 上网

原理

在服务器 A 上安装并配置代理服务器软件,服务器 B 通过设置代理服务器地址和端口,将网络请求发送到服务器 A 的代理服务器,由代理服务器转发到公网.

配置服务端

安装

在服务器 A 上安装 Squid 代理服务器

sudo apt-get install squid

配置

编辑 Squid 的配置文件

vim /etc/squid/squid.conf
# 改成以下配置
# 定义访问控制列表(ACL)

# 允许访问的本地网络段
acl localnet src 172.31.0.0/16
# 定义SSL端口,用于加密连接
acl SSL_ports port 443
# 定义安全端口列表,包含常见可访问端口
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # 未注册端口
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
# 定义CONNECT方法的ACL
acl CONNECT method CONNECT

# 访问权限配置

# 拒绝对不安全端口的请求
http_access deny !Safe_ports
# 拒绝非SSL安全端口的CONNECT连接
http_access deny !SSL_ports CONNECT

# 允许来自本地网络段和本地主机的访问
http_access allow localnet
http_access allow localhost

# 拒绝所有其他未授权的访问
http_access deny all

# 代理服务器监听端口
http_port 3128

# 缓存目录配置
cache_dir ufs /var/spool/squid 200 16 256
# 设置缓存内存使用限制,这里设置为512MB,可根据服务器内存情况调整
cache_mem 512 MB

# 核心转储文件目录
coredump_dir /var/spool/squid

# 刷新模式配置
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

# 日志配置
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

配置完成后,重启 Squid 代理服务器

sudo service squid restart

配置客户端

在服务器 B 上,编辑/etc/profile文件,添加以下内容 :

export http_proxy=http://172.31.46.187:3128
export https_proxy=http://172.31.46.187:3128

其中172.31.46.187是服务器 A 的局域网地址,3128是 Squid 代理服务器监听的端口。配置完成后,执行source /etc/profile使配置生效

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。