侧边栏壁纸
博主头像
ldwcool's Blog博主等级

行动起来,活在当下

  • 累计撰写 24 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Ubuntu 安装代理及使用方法

ldwcool
2023-08-30 / 0 评论 / 0 点赞 / 166 阅读 / 9949 字

Squid 代理

Squid是一种开源的网络代理缓存服务器软件,它可以用来提高网络性能和安全性。它通过缓存经常访问的网页和资源,可以有效减少网络流量并提高访问速度。Squid还可以用于实施访问控制策略,例如阻止特定网站或限制特定类型的内容访问。

Squid 是 HTTP 类型的代理。

安装

sudo apt install squid -y

配置

编辑配置文件:

sudo vim /etc/squid/squid.conf

配置规则如下:

# http_port 3128  # 默认侦听在所有网卡的 3128 端口
# 如果是给内网的机器做代理就不应该侦听在外网网卡的 3128 端口上而侦听在内网网卡的 3128 端口上(假设有好几块网卡)
http_port 192.168.2.20:3128 # 设置侦听在某一块网卡的 3128 端口

# 定义日志文件位置
access_log daemon:/var/log/squid/access.log squid

# 配置缓存
cache_dir ufs /var/spool/squid3 100 16 256  # 缓存存放目录
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 86400 # 配置缓存图片文件,86400 秒刷新一次


# acl 访问控制列表,然后通过其他的配置选项来配置 acl 列表中的资源是否可以访问或者什么时候可以访问等
# 每列含义:定义 acl,此 acl 的名称,资源类型,具体的资源
acl localnet src 192.168.2.0/24 # 192.168.2.0/24 这个网段(设置只允许这个网段可以使用本机代理)
acl SSL_ports port 443      # 端口类型的访问控制列表
# acl名称可以分多条语句配置比如下面的 Safe_ports
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  # unregistered ports
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
acl CONNECT method CONNECT    # 方法类型的访问控制列表

# 访问控制规则
# 把禁止的放在前面,允许的放在后面,因为是从上往下匹配的,一条匹配中了就不会再往下匹配了
http_access deny !Safe_ports  # !表示非,拒绝不在 Safe_ports 列表中的端口进行访问
http_access deny CONNECT !SSL_ports # 不在 SSL_ports 列表中的端口发起 CONNECT 请求都拒绝
http_access allow localhost manager # 允许本机访问缓存服务器
http_access deny manager      # 静止其他机器访问缓存服务器
http_access allow localhost     # 运行使用者对本机发起 http 请求
http_access deny all    # 除了允许的,其他一切拒绝


# 例如,只允许访问 sina.com 和 163.com 这两个域名
acl localnet src 192.168.2.0/24     # 192.168.2.0/24 这个网段
acl menhu dstdomain .sina.com .163.com  # 定义 acl 访问控制列表,定义域名资源使用 dstdomain,如果有资源中间使用空格来隔开,定义这个 acl 名称叫做 menhu(随意,自己认识就行)
# 下面这条语句要配置在 http_access deny all 的前面,因为规则是按先后顺序匹配的,匹配到一条之后就不会再往后匹配了
http_access allow localnet menhu  # 允许 localnet 中定义的网段可以访问menhu中定义的域名


# 例如下班时间可以访问,上班时间不可以访问
acl localnet src 192.168.2.0/24
acl menhu dstdomain .sina.com .163.com
acl xiaban time MTWHFAS 18:00-23:59   # 定义下班时间,只当规则时根据的是服务器本地时间
# M:星期一  T:星期二  W:星期三  H:星期四  F:星期五  A:星期六  S:星期日
http_access allow localnet menhu xiaban # 在 xiaban 的时间段内,允许 localnet 中定义的网段可以访问 menhu 中定义的域名


# 例如,对 url 进行过滤,不允许下载 exe 文件
acl localnet src 192.168.2.0/24  # 192.168.2.0/24 这个网段
acl noexes url_regex -i \.exe$   # 使用 url 正则,-i 表示不区分大小写,.exe$ 表示以 exe 结尾的
http_access deny noexes     # 禁止ulr 以 exe 结尾的不给通过

重新加载配置文件

sudo kill -SIGHUP `cat /var/run/squid.pid`

常用操作

sudo systemctl start squid.service    # 启动
sudo systemctl stop squid.service     # 停止
sudo systemctl restart squid.service  # 重新启动
sudo systemctl status squid.service   # 查看状态

Shadowsocks

shadowsocks 是 scoks5 类型的代理。

Linux 服务端安装

这里演示安装 python 版本的 shadowsocks。

环境:

  • ubuntu 20.04
  • python 3.8.10

已知问题:ubuntu 22.04 上 python 版本默认是 3.10,无法运行最新的 shadowsocks 3.0.0 版本。

安装及配置步骤如下:

  1. 安装 pip3 和 git
sudo apt install python3-pip git
  1. 安装 python 版本的 shadowsocks

由于 pip 包中 shadowsocks 作者很久没有维护了,版本还是 2.8.2,所以选择从 github 仓库中安装最新的 3.0.0 版本。

sudo pip3 install git+https://github.com/shadowsocks/shadowsocks.git@master

查看版本

ssserver --version
  1. 配置

创建配置文件

sudo mkdir /etc/shadowsocks

sudo vim /etc/shadowsocks/shadowsocks.json

配置内容如下。

多用户配置:

{
  "server": "::",
  "port_password": {
    "8888": "123456789",
    "9999": "123456789"
  },
  "timeout": 300,
  "method": "aes-256-gcm",
  "fast_open": true
}

单用户配置:

{
    "server": "::",
    "server_port": 8388,
    "password": "123456789",
    "timeout": 300,
    "method": "aes-256-gcm",
    "fast_open": true
}

参数说明:

  • server : 监听地址,::表示监听所有 IP。

  • server_port : 监听端口。

  • password : 连接密码。

  • timeout : 超时时间。

  • method : 加密方式。

    AES-256-GCM是一种高级的数据保护方法。它使用AES-256加密技术来保护数据的隐私,并使用GCM模式来确保数据没有被篡改。

    好处包括:

    1. 强大的安全性:AES-256是一种非常强大的加密技术,使用256位密钥,使破解变得异常困难。这使得攻击者难以通过暴力破解方法来获取加密数据。
    2. 数据隐私:AES-256-GCM确保只有授权的人可以解密和访问数据。这对于保护敏感信息(如个人身份信息、金融数据等)非常重要。
    3. 数据完整性:GCM模式允许验证数据是否在传输过程中被修改。这意味着,如果数据在传输过程中被篡改,接收方可以检测到这种变化。
    4. 高效性:AES-256-GCM在提供强大安全性的同时,也在计算效率方面表现良好。它能够高效地处理加密和认证操作,因此不会过分降低性能。
    5. 广泛应用:AES-256-GCM被用于许多安全领域,如网络通信安全(TLS/SSL协议)、文件加密、存储加密等。因此,它已经得到广泛的验证和应用。

    总之,AES-256-GCM是一种强大而高效的加密方式,可以在保护数据隐私和完整性方面提供可靠的解决方案。

  • fast_open : true / false,作用有减少连接延迟、改善性能、抵御封锁。

    "fast_open"(快速打开)是Shadowsocks的一个特性,它具有以下作用:

    减少连接延迟:在普通的网络连接中,客户端和服务器之间的通信需要经过握手过程,这会引入一定的延迟。"fast_open"允许在握手过程之前开始传输数据,从而减少连接建立的时间,提高数据传输的速度。

    改善性能:特别在网络连接较差或延迟较高的情况下,"fast_open"可以显著改善通信的性能,因为它减少了开始数据传输前的等待时间。

    抵御封锁:某些防火墙或网络审查系统会尝试检测Shadowsocks流量并封锁它。"fast_open"通过在连接建立时隐藏Shadowsocks流量的特征,使得阻止Shadowsocks流量变得更加困难。

    总之,"fast_open"是Shadowsocks的一个优化特性,它通过减少连接延迟、提高性能以及抵御封锁等方式,增强了Shadowsocks作为一个隐私保护和翻墙工具的效果。但需要注意的是,"fast_open"的可用性可能受到操作系统和网络环境的影响。

  1. 创建服务配置文件
sudo vim  /etc/systemd/system/shadowsocks.service

内容如下:

[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks/shadowsocks.json
[Install]
WantedBy=multi-user.target
  1. 启动服务并设置开机自启
sudo systemctl start shadowsocks.service
sudo systemctl restart shadowsocks.service
sudo systemctl stop shadowsocks.service
sudo systemctl enable shadowsocks.service
  1. 开启 bbr 加速

Linux Kernel 内核升级到 4.9 及以上版本可以实现 BBR 加速,由于 Ubuntu 20.04 默认的内核是 5.4版本 ,并已经默认编译了 TCP BBR 模块,所以可以直接通过参数开启。

新的 TCP 拥塞控制算法 BBR (Bottleneck Bandwidth and RTT) 能够让服务器的带宽尽量跑满,并且尽量不出现排队的情况,所以可以让网络服务更佳稳定和高效。

修改系统变量:

echo net.core.default_qdisc=fq >> /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf

保存生效

sysctl -p

查看是否生效

# 执行下面这条命令
sysctl net.ipv4.tcp_available_congestion_control
# 如果输出下面的结果,则表示开启成功
net.ipv4.tcp_available_congestion_control = bbr cubic reno

# 也可以使用下面命令以检测 BBR 是否开启
lsmod | grep bbr

Linux 客户端

这里演示安装 python 版本的 shadowsocks。

环境:

  • ubuntu 20.04
  • python 3.8.10

已知问题:ubuntu 22.04 上 python 版本默认是 3.10,无法运行最新的 shadowsocks 3.0.0 版本。

  1. 安装 pip3 和 git
sudo apt install python3-pip git
  1. 安装 python 版本的 shadowsocks

由于 pip 包中 shadowsocks 作者很久没有维护了,版本还是 2.8.2,所以选择从 github 仓库中安装最新的 3.0.0 版本。

sudo pip3 install git+https://github.com/shadowsocks/shadowsocks.git@master

查看版本

sslocal --version
  1. 配置

创建配置文件

sudo mkdir /etc/shadowsocks

sudo vim /etc/shadowsocks/shadowsocks.json

配置内容如下:

{
    "server": "::",
    "server_port": 8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password": "123456789",
    "timeout": 300,
    "method": "aes-256-gcm",
}

参数说明:

  • server : 服务器地址。
  • server_port : 服务器端口。
  • local_address : 本地监听地址。
  • local_port : 本地监听端口。
  • password : 连接密码。
  • timeout : 超时时间。
  • method : 加密方式。
  1. 启动 / 停止
# 启动
sslocal -c /etc/shadowsocks/shadowsocks.json -d start

# 停止
sslocal -c /etc/shadowsocks/shadowsocks.json -d stop

Windows 客户端

shadowsocks/shadowsocks-windows: A C# port of shadowsocks (github.com) 这个仓库中下载最新版的客户端,配置好对应参数即可使用。

Android 客户端

shadowsocks/shadowsocks-android: A shadowsocks client for Android (github.com) 这个仓库下载最新的 apk 文件安装,配置好对应参数即可使用。

参考资料

0

评论区