前言
相信计算机专业的同学在学习 linux 时, 一定会被无法获取网络资源而困惑, 本文带你打通 vmware 虚拟机与主机代理的壁垒, 以及 git clone 的速度限制
我的 Vmware 网关: 192.168.254.2
注: Vmware 的网关配置有巨坑, 下文会带你破译
拥有愉快网络环境步骤:
- 确保网关能够 ping 通
- 修改 http 与 sock 代理地址
- 修改 dns (resolv.conf)
- 测试连接
如果网关不通就 vmware 的网络设置问题
测试网关连接
确保你局域网内设备能够 ping 通网关
Ubuntu
修改 http 与 sock 代理地址
开启局域网连接
v-two-ray 端口地址:
修改 linux 代理地址
注意: 这里的
hostip
, 如果是 vmware 虚拟机, 需要保证主机能够 ping 通虚拟机的网关我的 vmware 为 nat 网关为:
192.168.254.2
, 但是主机不能 ping 通192.168.254.2
, 因为 192.168.254.2 类似与虚拟网关, 但是192.168.254.1
主机能够 ping 通, 能够 ping 通就能转载流量, 所以hostip
改为192.168.254.2
如果是 wsl 就用改, wsl 的网关本来就是一个真实网关
注意: 虚拟机网卡配置的网关依然得是虚拟 ip:
192.168.254.2
# add proxy
export hostip=$(ip route | grep default | awk '{print $3}')
export hostip=192.168.254.1 # 按你的 nat 配置修改为可承载流量的网关, 如果网关真实可达, 注释本行
# export socks_hostport=7890
# export http_hostport=7890
export socks_hostport=10810 # v2ray
export http_hostport=10811
# export socks_hostport=7897
# export http_hostport=7897
alias proxy='
export https_proxy="https://${hostip}:${http_hostport}"
export http_proxy="http://${hostip}:${http_hostport}"
export ALL_PROXY="socks5://${hostip}:${socks_hostport}"
export all_proxy="socks5://${hostip}:${socks_hostport}"
'
alias unproxy='
unset ALL_PROXY
unset https_proxy
unset http_proxy
unset all_proxy
'
alias echoproxy='
echo $ALL_PROXY
echo $all_proxy
echo $https_proxy
echo $http_proxy
'
#end proxy
修改 /etc/resolv.conf
/etc/resolv.conf
是一个软链接文件, 我们直接修改会无效
- 修改 /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 114.114.114.114
#FallbackDNS=
...
- 重载 resolve
$ systemctl restart systemd-resolved
- 新建 /etc/resolv.conf 链接
$ mv /etc/resolv.conf /etc/resolv.conf.bak
$ ln -s /run/systemd//resolve/resolv.conf /etc/
配置 apt 使用代理
虚拟机配置了代理就无法使用 apt, 需要配置 apt 代理
cat << EOF > /etc/apt/apt.conf.d/98https-http-proxy
Acquire::http::Proxy "http://192.168.254.1:10811";
Acquire::https::Proxy "http://192.168.254.1:10811";
EOF
测试连接
为什么 ping 不通, 因为 ping 是基于 ICMP 协议, 所以 ping 不走代理
ping 不通不影响
Centos
开启局域网连接
v-two-ray 端口地址:
设置代理地址
centos 暴露路径也相同
# add proxy
export hostip=$(ip route | grep default | awk '{print $3}')
export hostip=192.168.254.1 # 按你的 nat 配置修改为可承载流量的网关, 如果网关真实可达, 注释本行
# export socks_hostport=7890
# export http_hostport=7890
export socks_hostport=10810
export http_hostport=10811
# export socks_hostport=7897
# export http_hostport=7897
alias proxy='
export https_proxy="https://${hostip}:${http_hostport}"
export http_proxy="http://${hostip}:${http_hostport}"
export ALL_PROXY="socks5://${hostip}:${socks_hostport}"
export all_proxy="socks5://${hostip}:${socks_hostport}"
'
alias unproxy='
unset ALL_PROXY
unset https_proxy
unset http_proxy
unset all_proxy
'
alias echoproxy='
echo $ALL_PROXY
echo $all_proxy
echo $https_proxy
echo $http_proxy
'
#end proxy
修改 NetworkManager
修改/etc/NetworkManager/NetworkManager.conf
文件,在main部分添加dns=none
选项:
[main]
plugins=ifcfg-rh
dns=none # 注意是这句
再手动修改/etc/resolv.conf
文件,添加下面的DNS:
nameserver 114.114.114.114
nameserver 8.8.8.8
最后重启网卡:
systemctl restart network
测试代理
为什么 ping 不通, 因为 ping 是基于 ICMP 协议, 所以 ping 不走代理
ping 不通不影响
Git 代理
问题分析:
- 本机已经打开代理但是 git clone 依然很慢
- git push 时, 超时无法推送
v-two-ray 演示:
开启局域网连接
v-two-ray 端口地址:
我们知道的 v-two-ray 的端口, 这里我们要用本地端口, 因为我们是主机的 git
设置 git 代理
git config --global http.proxy http://127.0.0.1:10809
git config --global https.proxy https://127.0.0.1:10809
取消 git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy
如果是虚拟机的话, 需要将地址设为网关地址
另外如果是 VMware 虚拟机:
$ ip r
default via 192.168.254.2 dev ens33 proto static
192.168.254.0/24 dev ens33 proto kernel scope link src 192.168.254.130
虚拟机网关为 192.168.254.2
, 但该网关为虚拟网关不接流量, 应使用 192.168.254.1
git config --global http.proxy http://192.168.254.1:10809
git config --global https.proxy https://192.168.254.1:10809