本文最后更新于2022年3月22日,已超过 60 天没有更新,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

1.网络配置

【注】:

实现基本的wifi上网功能:

  • 使用NetworkManager连接wifi

更复杂的上网功能:

  • 上内网(内网穿透)
  • 科学上网[^1]

1.实现wifi上网

1.1连接有线网

使用指令 nmcli dev status 查看网络状态

【注】:nm为NetworkManager的缩写,cli为client的缩写

[root@localhost ~]# nmcli dev status
DEVICE          TYPE      STATE         CONNECTION
wlp1s0          wifi      connected     TP-LINK_5550
p2p-dev-wlp1s0  wifi-p2p  disconnected  --
enp2s0f5        ethernet  unavailable   --
lo              loopback  unmanaged     --

其中:

  • TYPE有:

    • wifi (无线网)
    • ethernet (有线网)
    • loopback (本地软件测试用的回环地址)
  • STATE有:

    • connected (已被NM管理,并且已经连接)
    • disconnected(已被NM管理,可用,但是还未连接)
    • unmanaged(未被NM管理)
    • unavailable(不可用,NM无法管理,对于有线网可能是网线没插)

如果TYPEwifi的网卡STATEunmanaged,则解决方法为

yum工具安装NetworkManager-wifi来管理wifi设备

yum install NetworkManager-wifi

安装完成后重启系统即可生效

再此之前需要连接有线网,步骤为

  • 插上网线,使用指令 nmcli dev status 参看有线网的STATE

    [root@localhost ~]# nmcli dev status
    DEVICE          TYPE      STATE         CONNECTION
    ...
    enp2s0f5        ethernet  disconnected   --
    ...

    如果STATE变为disconnected则可进行下一步连接操作

  • 连接有线网

    nmcli c up enp2s0f5

    其中c为connection的缩写

安装完NetworkManager-wifi并重启后使用指令nmcli dev status查看

[root@localhost ~]# nmcli dev status
DEVICE          TYPE      STATE         CONNECTION
...
wlp1s0           wifi     disconnected   --
...

如果wifiSTATEdisconnected则可以进行下一步连接

1.2连接无线网

使用指令 nmcli dev wifi查看可以连接的所有wifi信息

[root@localhost ~]# nmcli dev wifi
IN-USE  SSID          MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
*       TP-LINK_5550  Infra  1     195 Mbit/s  100     ▂▄▆█  WPA1 WPA2
        CMCC-5Q3D     Infra  3     130 Mbit/s  100     ▂▄▆█  WPA1 WPA2
        MERCURY_F928  Infra  6     270 Mbit/s  60      ▂▄▆_  WPA1 WPA2
        CMCC-mji9     Infra  10    270 Mbit/s  60      ▂▄▆_  WPA1 WPA2
        CMCC-MxM6     Infra  8     130 Mbit/s  47      ▂▄__  WPA1 WPA2
        Xiaomi923B    Infra  2     195 Mbit/s  30      ▂___  WPA1 WPA2
        Xiaomi_9B3B   Infra  6     130 Mbit/s  20      ▂___  WPA1 WPA2

使用指令nmcli dev wifi connect "SSID" password "密码" 进行连接

[root@localhost ~]# nmcli dev wifi connect TP-LINK_5550 password xxxxx

2.使用frp实现 内网穿透[1]

【注】:内网穿透可以使内网设备可以直接被其他设备访问,相当于获得一个公网ip,frp实现内网穿透的原理为:将内网设备与具有公网ip的服务器的端口一对一绑定,实现让服务器的端口映射到内网设备的端口,因此 需要服务端和客户端2种配置

2.1服务端配置

【注】:需要一台云服务器,以下为在centos7云服务器中的操作

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz # 下载文件
tar xzvf  frp_0.33.0_linux_amd64.tar.gz # 解压
mv frp_0.33.0_linux_amd64 frp # 重命名
rm -f frpc frpc.ini frpc_full.ini # 删除客户端文件,仅保留服务端

修改frps.ini的内容为

[common]
bind_port = 7000
#服务端连接客户端的端口
dashboard_port = 7500
#仪表盘页面登录的用户名
dashboard_user = username
#仪表盘登录的密码
dashboard_pwd = password

【注】:其中7000为frp服务的端口,7500为frp的后端管理页面服务的端口,username,password分别为进入后端的账号密码

【注意】:需要在服务器的安全组中打开7000和7500端口

使用指令 ./frps -c frps.ini 来运行服务

在后台执行可用

nohup ./frps -c frps.ini &

2.2客户端配置

【注】:将客户端的端口与服务端端口绑定

1.下载对应客户端版本的frp[点击下载]

image-20220211225315988

解压后[^2] 得到6个文件(3个frps文件和3个frpc文件)其中frps为服务端文件,frpc为客户端文件,_full.ini结尾的文件为 功能大全,作为范例供参考

2.修改frpc.ini文件

[common]
server_addr = 服务器ip地址
server_port = 7000

[ssh]
type = tcp
local_port = 22
remote_port = 6000

【注】:这样配置会把服务器的 6000端口映射为 客户端的 22 端口,可以使用服务器ip:6000 来连接到 frpc端的22端口.

【注意】:[ssh]为标签,可以自定义,但不允许重复

3.运行并连接到服务端

  • linux端

    使用指令./frpc -c frp.ini 连接到服务端提供的frp服务

    在后台运行可使用

    nohup ./frpc -c frp.ini &
  • windows端

    使用指令frpc.exe -c frp.ini

以上操作完成后,可以使用以下指令登录到上面配置的内网设备

ssh root@服务器ip地址 -p 6000

3.科学上网[^1]

【注】:被墙的计算机不能直接访问到外网的设备,但可以访问到香港等地区的计算机,而这些计算机是可以访问外网的,科学上网的一条思路就是这种通过流量转发间接访问外网。一台可以访问外网的服务器可以为多台计算机转发流量,这种一对多的关系就需要通过服务器-客户端的架构实现,因此需要分别做 服务端和客户端的配置

3.1使用frp配置服务端

服务端的配置在步骤 2.使用frp实现 内网穿透 的基础上,步骤2中的服务器并没有配置流量转发服务,在这一步中我们要实现的就是这点。我们会把 一台能访问外网的服务器(这台服务器可以是自己) 作为组件拼接到步骤2中的服务器上,来提供流量转发服务。

【注意】: 需要一台能访问外网的设备,以下为在该外网设备上的操作(这个设备可以是步骤2中的的服务端)

1.创建frpc_proxy.ini文件并写入

[common]
server_addr = 服务器ip地址
server_port = 7000

[HK_http_proxy]
type = tcp
remote_port = 6003
plugin = http_proxy
# 可以添加认证
# plugin_http_user = 0HDFt
# plugin_http_passwd = JTN276

[HK_socks5]
type = tcp
remote_port =6004
plugin = socks5
# 可以添加认证
#plugin_user = 0HDFt16cLQJ
#plugin_passwd = JTN276Gp
use_encryption = true
use_compression = true

【注】:以上提供了http代理和socks5代理 2个服务

2.连接到服务端(如果在服务端运行就是自己连接自己)

执行下面的指令

nohup ./frpc -c frpc_proxy.ini &

3.2客户端连接享受服务

centos7客户端

设置 http_proxy 和 ftp_proxy 代理
  • 永久设置

    修改 /etc/profile 文件,添加下面内容:

    http_proxy=http://username:password@yourproxy:port/
    ftp_proxy=http://username:password@yourproxy:port/
    export http_proxy
    export ftp_proxy

    如果没有密码限制,则以上内容可以修改为以下内容:

    http_proxy=http://yourproxy:port/
    ftp_proxy=http://yourproxy:port/
    export http_proxy
    export ftp_proxy

    若只针对某个用户而言,则修改 ~/.bash_profile 文件,添加相同内容;

    然后使用source /etc/profile使设置立即生效。

  • 临时设置(重连后失效)

    在命令行中直接输入下列命令即可

    export http_proxy=http://username:password@yourproxy:port/
    export ftp_proxy=http://username:password@yourproxy:port/
    #或者
    export http_proxy=http://yourproxy:port/
    export ftp_proxy=http://yourproxy:port/

    【注意】:设置之后可能使用ping时还是无法连接外网,但是pip时可以的,因为ping的协议不一样不能使用这个代理。

设置通过proxychains设置全局代理
  • 下载源码
    git clone https://github.com/rofl0r/proxychains-ng
  • 安装gcc
    yum  install  gcc
  • 编译安装
    $ ./configure --prefix=/usr --sysconfdir=/etc
    $ make
    $ make install
    $ make install-config (安装proxychains.conf配置文件)
  • 修改 /etc/proxychains.conf 文件末尾处
    [ProxyList]
    # add proxy here ...
    # meanwile
    # defaults set to "tor"
    socks5  yourproxy port # 如 socks5 114.144.252.111  7000
    http    yourproxy port
  • 使用

    在需要使用代理的指令前加上proxychains4前缀

    proxychains4 curl https://httpbin.org/ip  #测试IP,和不加前缀的指令做个对比

    指令使用效果

windows客户端

socks5有很多第三方软件是翻墙的主流因此不介绍,另外也可以在爬虫中作为代理ip使用,如:

  curl -x 43.122.56.41:6000 https://httpbin.org/ip
  res=requests.get(url,proxies={'https':'43.122.56.41:6000'},timeout=10)

[^1]科学上网: 科学上网某种通过科学的方法绕过上网限制访问。
[^2].tar.gz解压: linux端的.tar.gz文件使用 tar -zxvf 压缩文件名.tar.gz 指令解压


有帮助的话请打个赏吧!