blog icon indicating copy to clipboard operation
blog copied to clipboard

Mac OSX终端走shadowsocks代理

Open mrdulin opened this issue 7 years ago • 91 comments

shadowsocks设置为:

  • 打开shadowsocks
  • 自动代理模式
  • 服务器(香港阿里云)

zsh作为说明

➜  ~ vim ~/.zshrc  

添加如下代理配置:

# proxy list
alias proxy='export all_proxy=socks5://127.0.0.1:1080'
alias unproxy='unset all_proxy'

:wq保存退出

➜  ~ source ~/.zshrc

使用proxy前先查看下当前的ip地址:

➜  ~ curl ip.cn
当前 IP:112.64.xxx.xx 来自:上海市 联通

或者

~ curl cip.cc
IP	: 140.206.97.42
地址	: 中国  上海

数据二	: 上海市 | 联通

URL	: http://www.cip.cc/140.206.97.42

执行:

➜  ~ proxy
➜  ~ curl ip.cn
当前 IP:47.89.xx.xxx 来自:香港特别行政区 阿里云

如果ip.cn不能用,可以换个类似的站点查询

~ curl cip.cc
IP	: 45.78.47.19
地址	: 美国  加利福尼亚

数据二	: 美国 | 加利福尼亚州洛杉矶市 IT7 Networks

URL	: http://www.cip.cc/45.78.47.19

没问题,终端走了代理,brew update顺畅了- -

如果不需要走代理,执行:

➜  ~ unproxy   
➜  ~ curl ip.cn
当前 IP:112.64.xxx.xx 来自:上海市 联通

部分网络用curl cip.cc命令获取到的是国内网络运营商的IP,可以直接curl google.com测试是否代理成功。

设置代理成功:

➜  ~ curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

没有设置代理:

➜  ~ curl google.com
curl: (52) Empty reply from server

proxychains-ng

➜  ~ brew install proxychains-ng
Updating Homebrew...

由于OSX升级后的SIP限制,在proxychains.conf文件中设置sssocks5代理,无效了。解决办法是在重启后,在Recovery mode下关闭SIP,但对于强迫症来说,不能忍(安全问题)。详见 rofl0r/proxychains-ng/issues/78

➜  ~ proxychains4 curl ip.cn
[proxychains] config file found: /usr/local/Cellar/proxychains-ng/4.12/etc/proxychains.conf
[proxychains] preloading /usr/local/Cellar/proxychains-ng/4.12/lib/libproxychains4.dylib
当前 IP:112.64.xxx.xx 来自:上海市 联通

配置文件/usr/local/Cellar/proxychains-ng/4.12/etc/proxychains.conf:

 111 [ProxyList]
 112 # add proxy here ...
 113 # meanwile
 114 # defaults set to "tor"
 115 #socks4     127.0.0.1 9050
 116 socks5  127.0.0.1 1080

更新2017.07.21

osx下使用brew安装google-chrome时:

% brew cask install google-chrome
==> Satisfying dependencies
==> Downloading https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg

curl: (6) Could not resolve host: dl.google.com
Error: Download failed on Cask 'google-chrome' with message: Download failed: https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg
Error: Install incomplete.

通过设置terminalhttp代理解决:

% export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

更新:

我们可以在shadowsocks server端查看日志:

sudo tail -f /var/log/shadowsocks.log

日志如下图:

用其中一条日志做说明:

2019-08-22 17:02:14 INFO     connecting mtalk.google.com:5228 from 58.247.150.247:61603

含义是:时间戳 日志级别 connecting 连接的目标服务器URL地址 from 客户端地址:端口

客户端地址就是我本机了,通过本机启动的shadowsocks客户端连接到shadowsocks服务端。

查看本机外网IP:

☁  quick-start [master] ⚡  curl ip.gs
Current IP / 当前 IP: 58.247.150.247
ISP / 运营商:  ChinaUnicom
City / 城市: Shanghai Shanghai
Country / 国家: China
IP.GS is now IP.SB, please visit https://ip.sb/ for more information. / IP.GS 已更改为 IP.SB ,请访问 https://ip.sb/ 获取更详细 IP 信息!
Please join Telegram group https://t.me/sbfans if you have any issues. / 如有问题,请加入 Telegram 群 https://t.me/sbfans 

  /\_/\
=( °w° )=
  )   (  //
 (__ __)//

Current IP: 58.247.150.247,和shadowsocks服务端日志打印出来的客户端地址一致

问题:为什么terminal终端不能使用系统代理(WIFI网络设置中的HTTP,SOCKS代理设置)?

答:https://apple.stackexchange.com/questions/333672/proxy-is-configured-correctly-i-guess-appstore-and-safari-work-fine-but-net

问题:为什么设置了http_proxy等环境变量,git, curl等命令行工具可以魔法上网了?

答:git,wget, curl,brew等cli,甚至GCP提供的gcloud sdk内部都会读取http_proxy, https_proxy, all_proxy等系统环境变量:

仅仅是应用程序运行时环境变量,没有魔法。比如Node.js应用程序,可以使用process.env.http_proxy来读取程序运行时环境变量。其他语言比如Go, Java, Python, PHP都有各自的内置标准库API或全局变量(比如Node.js的process)来读取系统环境变量。git, wget, curl, brew, gcloud和我们自己写的应用程序一样,没什么特殊的。

node         
Welcome to Node.js v14.16.0.
Type ".help" for more information.
> process.env.http_proxy
'http://127.0.0.1:7890'

参考:

  • https://wiki.archlinux.org/index.php/Proxy_server
  • https://zh.wikipedia.org/wiki/SOCKS

Flag Counter

mrdulin avatar Apr 08 '17 07:04 mrdulin

@mrdulin 执行 proxy 之后, curl ip.cn 的结果: curl: (7) Failed to connect to 127.0.0.1 port 1080: Connection refused

在前面加上 sudo 后, 获取的 ip 还是本地运营商的. 这是怎么回事呢?

Huang-Libo avatar Oct 26 '17 08:10 Huang-Libo

@Huang-Libo 请确保本地代理服务器的地址和端口是127.0.0.1:1080

请打开ss,进行代理服务器设置 我试了下,退出ss,就是你这个错误,因为本地代理服务器没有启动。

mrdulin avatar Oct 27 '17 07:10 mrdulin

@mrdulin 设置是对的, 执行 proxy 之前都能看到结果, 执行 proxy 之后就报错, 有点奇怪.

Huang-Libo avatar Oct 27 '17 13:10 Huang-Libo

我也遇到了类似的情况,设置了 shadowsocks 的 socks 代理地址为: 127.0.0.1 端口为 1080,重启下 shadowsocks 后执行 proxy 成功

samhou1988 avatar Nov 07 '17 12:11 samhou1988

@samhou1988 其实我发现使用 proxychains-ng 的时候使用 brew 版本的程序就可以了

Huang-Libo avatar Nov 09 '17 02:11 Huang-Libo

@mrdulin 请教楼主几个问题。 1.本地的ss只能配置远端server的ip和端口号吧?本地代理服务器的ip和port也就是127.0.0.1和1080是不是不能自己配置? 2.执行proxy之后,显示的是”curl: (52) Empty reply from server“。 3.我看楼主一开始的测试是没有安装proxychains-ng这个的,是不是也先不需要安装这个? 麻烦楼主帮忙看下~

Ericva avatar Nov 20 '17 16:11 Ericva

@Ericva 1.本地的ss是客户端,你的VPS上的ss是服务端,客户端的服务器配置中,地址和端口填写你VPS的ip地址和ss服务端运行后的端口号,这样客户端就连接到你的vps的ss服务了。 image ss客户端启动后,可以修改客户端服务的端口号,不一定是1080,使用switchomega,proxifier等代理切换软件时,指定ss的ip和端口是客户端的。 image

2.你的服务器配置ip或者端口不正确,客户端ss没有链接到VPS上的ss服务端,或者是你VPS上的ss服务端没有启动或是出了问题。如下图,我随便输入了一个ip和端口,执行proxy后,结果显示“curl: (52) Empty reply from server”

3.proxychains-ng和通过在.zshrc或者.bashrc中指定代理alias是两种终端走代理的方式,没有依赖关系。

mrdulin avatar Nov 21 '17 02:11 mrdulin

谢谢楼主快速的解答~ 关于2,我ss是配置好了的,chrome/safari都可以科学上网,感觉应该是其他的坑,但是还不知道是啥原因。/(ㄒoㄒ)/~~

Ericva avatar Nov 21 '17 14:11 Ericva

跟Ericva碰到的问题一样。chrome/safari都可以,但终端上只能访问国内网站。

dasheng523 avatar Nov 25 '17 07:11 dasheng523

感谢,终端一直代理不出去,这次终于好了

p0sec avatar Dec 29 '17 09:12 p0sec

非常感谢,代理已经能显示外国的地址,但是ping www.google.com 的时候还是ping不通,请问知道为什么吗

liushazm avatar Jan 17 '18 05:01 liushazm

@liushazm 我的也是这样,求解~

1057437122 avatar Jan 20 '18 00:01 1057437122

谢谢楼主,解决了我困扰多时的问题,感谢分享

iroclee avatar Jan 23 '18 03:01 iroclee

@liushazm 代理已经显示国外的Ip,但是还是ping不通,请问你解决了吗

wuyachao avatar Feb 23 '18 09:02 wuyachao

我的curl ip.cn在没有使用代理的情况都没法用,很奇怪。 报错类似@Huang-Libo :

curl: (7) Failed to connect to ip.cn port 80: Operation timed out

macOS 10.13.3, iTerm2

w3ntao avatar Feb 24 '18 04:02 w3ntao

@liushazm ss代理是基于tcp或者udp协议,而ping是走的icmp协议因此在ss下不能ping通google

参考: https://stackoverflow.com/questions/5274934/use-ping-through-socks-server

Huang-Libo avatar Feb 24 '18 05:02 Huang-Libo

@liushazm @1057437122

@Huang-Libo 说的没错

网络七层协议(OSI):7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层

上层模型依赖下层模型

  1. ping命令使用的ICMP协议,作用在OSI模型第3层——网络层(IP层)

使用wireshark抓包查看ping命令发送给目标地址的数据包 image

  1. SOCKS作用在OSI模型的第5层——会话层

  2. HTTP、FTP、SMTP作用在OSI模型第7层——网络层

ss支持的代理协议是socks(5 会话层)和http(7 应用层),最终都依赖于TCP(4 传输层)和IP协议(3 网络层),发送tcp数据包,但并不能代理第3层——网络层

本机与ss代理服务器之间发送的tcp数据包 image

mrdulin avatar Mar 09 '18 10:03 mrdulin

@Huang-Libo @mrdulin 非常感谢两位大神 @1057437122 @wuyachao 上面两位大神解决了

liushazm avatar Mar 15 '18 07:03 liushazm

@mrdulin export https_proxy=http://127.0.0.1:1087请问你mac上用什么ss软件呢,我用ssr-ng,只有http-proxy啊,https没有支持 image

onewayticket255 avatar Mar 17 '18 15:03 onewayticket255

默认终端proxy没有这个命令,是不是要安装什么软件才能执行这个?

usercao avatar Mar 19 '18 06:03 usercao

@usercao 为了方便,设置的命令别名

执行proxy就表示执行export all_proxy=socks5://127.0.0.1:1080

mrdulin avatar Mar 19 '18 07:03 mrdulin

新装的proxychains-ng 配置文件路径在: /usr/local/etc/proxychains.conf

devSC avatar Mar 29 '18 06:03 devSC

@liushazm 请问 ping 不通是你再怎么解决的?

ziqinH avatar Mar 30 '18 10:03 ziqinH

all_proxy 这个环境变量的作用是什么?谷歌了一下没有找到答案。

与 MacOS 网络偏好中的代理配置有什么区别?

Jay54520 avatar Apr 07 '18 15:04 Jay54520

本人 mac zsh 下好像要设为大写的:ALL_PROXY

quanru avatar Apr 13 '18 03:04 quanru

这个意思是使用proxychains-ng 或改.zshrc两种方法吗

guitong avatar Jun 14 '18 09:06 guitong

@guitong 对的

mrdulin avatar Jun 15 '18 01:06 mrdulin

非常感谢

xnfy520 avatar Jun 25 '18 16:06 xnfy520

OK,great,Thank you

ourfor avatar Jun 30 '18 16:06 ourfor

请教个问题,我本地使用 启动ss ,然后想让同事连接我的电脑走终端代理,现在连接共同的wifi.

export http_proxy=http://192.168.1.220:1080
export https_proxy=http://192.168.1.220:1080

这样设置无效呢?

itcuihao avatar Jul 16 '18 11:07 itcuihao

请问下楼主 如果是使用surge 进行翻墙的 zshrc的alias我都配置好了 但是现在显示的是curl: (7) Failed to receive SOCKS5 connect request ack. surge上面的socks端口我也设置的是127.0.0.1 1080端口呀

Yousanflics avatar Jul 22 '18 08:07 Yousanflics

@xiaohao111

image

image

mrdulin avatar Jul 23 '18 02:07 mrdulin

got it thanks

shidexiao avatar Aug 01 '18 13:08 shidexiao

@itcuihao 监听地址设置你的ip,别人就可用你的代理了。 image

echo-layker avatar Aug 02 '18 07:08 echo-layker

good article

kevien avatar Aug 29 '18 16:08 kevien

非常有用! 👍

lambal avatar Aug 30 '18 11:08 lambal

完美~

kyleduo avatar Sep 13 '18 10:09 kyleduo

@xiaohao111 弃用哪个R8版本,下载https://github.com/shadowsocks/ShadowsocksX-NG/releases/ 版本即可。

shgopher avatar Oct 08 '18 13:10 shgopher

alias proxy='export socks5_proxy=socks5://127.0.0.1:1086;export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;'
alias unproxy='unset socks5_proxy http_proxy https_proxy'

这样可以把socks5和http以及https全都代理。

chunjie-sam-liu avatar Nov 28 '18 04:11 chunjie-sam-liu

good article

m3lon avatar Nov 29 '18 08:11 m3lon

if u just want use brew under proxy, then u can simply set the curl config. put '.curlrc' in ur home dir, content like this:

socks5 = "127.0.0.1:1087"

maskshell avatar Dec 01 '18 02:12 maskshell

Thank you very much! It helped me a lot!

Zhostr avatar Dec 07 '18 15:12 Zhostr

Thanks so much

yifan2223 avatar Dec 24 '18 01:12 yifan2223

https://unix.stackexchange.com/questions/212894/whats-the-right-format-for-the-http-proxy-environment-variable-caps-or-no-ca 貌似 proxy 环境变量的设置没有官方的标准, 不同的应用会读取不同的设置,所以貌似最好应该把 http_proxy, https_proxy, all_proxy, HTTP_PROXY, HTTPS_PROXY, ALL_PROXY 这些都设置上......

pbdm avatar Dec 28 '18 07:12 pbdm

https://unix.stackexchange.com/questions/212894/whats-the-right-format-for-the-http-proxy-environment-variable-caps-or-no-ca 貌似 proxy 环境变量的设置没有官方的标准, 不同的应用会读取不同的设置,所以貌似最好应该把 http_proxy, https_proxy, all_proxy, HTTP_PROXY, HTTPS_PROXY, ALL_PROXY 这些都设置上......

走一波 vim .zshrc

# proxy list
alias proxy='export http_proxy=socks5://127.0.0.1:1080 https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy all_proxy=$http_proxy'
alias unproxy='unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy'

longshilin avatar Dec 28 '18 09:12 longshilin

感谢感谢

xkcoding avatar Jan 09 '19 08:01 xkcoding

thx👍

leiz avatar Jan 13 '19 12:01 leiz

终端里面能使用pac吗?目前没有找到合适的用法,大家都是怎么解决如下这种情况的呢?

比如在iterm2里面go get的时候,有些包是自己服务器的,有些是国外的。。。设置了代理就无法拉到自己的包,不设置代理就拉不到国外的包

zouchao avatar Jan 18 '19 09:01 zouchao

终端里面能使用pac吗?目前没有找到合适的用法,大家都是怎么解决如下这种情况的呢?

比如在iterm2里面go get的时候,有些包是自己服务器的,有些是国外的。。。设置了代理就无法拉到自己的包,不设置代理就拉不到国外的包

暂时没找到终端里配置pac的方法,但是有其他方式可以满足如上的需求。 目前我知道有如下几种解决方法: 1:使用proxychains-ng,但是这样子会涉及到sip,有些人不能忍,上面的答案中有提到关闭sip的问题。 2:做个二级代理。二级代理需要两个服务器,一个国外服务器Outer(没被墙的),一个国内服务器Inner。我们的电脑直接国内服务器 (终端export all_proxy="http://192.168.x.x"等等) 然后在国内服务器上做再进行规则过滤,让公司内网的网段等其他网段不走Outer(即不走Outer代理服务器,一般就直接重定),其余的被墙的再走Outer。这样子内部只要搭建一遍即可让所有人都可以通过连接到Inner从而能满足:能go get 内网的代码,又能go get 哪些被墙的网站。 具体方法:可以使用ss(国外服务器上部署ss,因为ss的灵活性比较高,所以也推荐二级代理服务器使用ss,一级代理服务器使用cow)。详情:https://blog.guchengf.me/proxy-with-shadowsocks-cow cow+cow 或者是v2ray也可以了解一下。

panol avatar Jan 20 '19 11:01 panol

@lucas1993ch 感谢您的建议,已在内网(privoxy)+ 墙外(ss)撘了一套。

zouchao avatar Jan 22 '19 09:01 zouchao

还是alias方式可靠点.虽然要手动切换下

gatspy avatar Jan 30 '19 15:01 gatspy

别用shadowsocks了,Google的outline直接就能命令行使用,搭建和使用方法:科学上网之outline搭建和使用

luvvien avatar Feb 22 '19 19:02 luvvien

@luvvien 感谢分享,学习了

mrdulin avatar Feb 23 '19 03:02 mrdulin

谢谢分享

yibhou avatar Feb 24 '19 04:02 yibhou

楼主您好,我在iterm2下面根据楼主的教程配置了,curl ip.gs之后也是返回的香港ip,但是ssh还是走了国内的出口ip,请问一下ssh协议是还需要另外配置是吗?

jaywade95 avatar Mar 04 '19 07:03 jaywade95

@mrdulin 哇 美女工程师

luvvien avatar Mar 04 '19 11:03 luvvien

@jaywade95 可以参考下:https://github.com/mrdulin/blog/issues/69

mrdulin avatar Mar 04 '19 15:03 mrdulin

@mrdulin 哇 美女工程师

忽然发现头像背后是在青岛 2333。

wi1dcard avatar Mar 04 '19 16:03 wi1dcard

@mrdulin 哇 美女工程师

忽然发现头像背后是在青岛 2333。 @wi1dcard 我也发现了 哈哈 我距离青岛一个多小时

luvvien avatar Mar 05 '19 00:03 luvvien

@mrdulin 感谢楼主分享,已经成功配置

jaywade95 avatar Mar 05 '19 06:03 jaywade95

似乎执行

export http_proxy=http://127.0.0.1:1087
export https_proxy=http://127.0.0.1:1087

就够了

EndlessCheng avatar Mar 11 '19 02:03 EndlessCheng

之前总结过一篇文章: https://github.com/riskers/blog/issues/38

riskers avatar Mar 11 '19 02:03 riskers

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

xiebruce avatar Apr 19 '19 08:04 xiebruce

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

小鸡是啥...outline没有局部代理确实很伤...我一般是用命令行或者ide或者其他必须全局的情况下用outline...平时也用ss...还是不太习惯设置ss命令行代理...可能很多人会像我一样 export http_proxy 后直接把命令行网络弄瘫...反正我是尝试了好几次...最后都无奈恢复原来的样子了...可能是我太笨...不过outline确实很简单...开启关闭也很方便...他那个管理客户端很强...希望以后会出局部代理吧。

luvvien avatar Apr 19 '19 09:04 luvvien

@luvvien 小鸡就是小机——小机器,配置低(其实也未必配置低),现在的VPS基本上就KVM跟OpenVZ(简称OVZ)两种类型,KVM的可以更新内核,可以装BBR加速,但OVZ的不行,OVZ都是低版本linux内核(2.6.x),而docker要求3.x版本的内核,所以这种机器是安装不了outline的(有算有非docker的安装方式估计也得比较折腾,估计一般人弄不来)。

命令行弄瘫痪这个感觉不应该呀,其实就是export几个变量嘛,保存完source一下就生效,或者干脆新开一个tab就会自动读取它也会自动生效。

我最讨厌outline的就是那大大的圆形图标,明明可以一行搞定,非要弄个大大个圆圈在那。

xiebruce avatar Apr 19 '19 09:04 xiebruce

@luvvien 小鸡就是小机——小机器,配置低(其实也未必配置低),现在的VPS基本上就KVM跟OpenVZ(简称OVZ)两种类型,KVM的可以更新内核,可以装BBR加速,但OVZ的不行,OVZ都是低版本linux内核(2.6.x),而docker要求3.x版本的内核,所以这种机器是安装不了outline的(有算有非docker的安装方式估计也得比较折腾,估计一般人弄不来)。

命令行弄瘫痪这个感觉不应该呀,其实就是export几个变量嘛,保存完source一下就生效,或者干脆新开一个tab就会自动读取它也会自动生效。

我最讨厌outline的就是那大大的圆形图标,明明可以一行搞定,非要弄个大大个圆圈在那。

估计很少有人用你说的那种小鸡吧,我就是vps,最低配的。这玩意又不吃啥配置。我说的是网络,ss就不好用了。类unix的系统我也玩很多了,你说的配置环境变量我也都懂,可是改代理就是不行- -

luvvien avatar Apr 19 '19 10:04 luvvien

@luvvien 有卖肯定有买的,不然卖不出去就不会卖了,不过有些服务商例如bandwango好像已经不支持openvz了,但仍然有很多不知名的在卖openvz机器,所以到底有多少人在用也不好说,我就有个OVZ机器,kcp加持油管1080p毫无压力。

xiebruce avatar Apr 19 '19 10:04 xiebruce

@luvvien 有卖肯定有买的,不然卖不出去就不会卖了,不过有些服务商例如bandwango好像已经不支持openvz了,但仍然有很多不知名的在卖openvz机器,所以到底有多少人在用也不好说,我就有个OVZ机器,kcp加持油管1080p毫无压力。

市场份额太小了,可以忽略不计。美国节点、不加速1080也没压力

luvvien avatar Apr 19 '19 10:04 luvvien

@luvvien 美国机不加速还能1080p没压力, 那只能说你买的机器太好了,另外,BBR也是加速,你没装BBR?

xiebruce avatar Apr 19 '19 11:04 xiebruce

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

@xiebruce Outline 依旧是 Shadowsocks 内核,并不是 VPN,不要误导。全局 != VPN。

wi1dcard avatar Apr 19 '19 14:04 wi1dcard

其实 Outline 魔改的 Shadowsocks-go server 有个好处是可以用 Prometheus + Grafana 监控指标... 比较赏心悦目。

wi1dcard avatar Apr 19 '19 15:04 wi1dcard

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

@xiebruce Outline 依旧是 Shadowsocks 内核,并不是 VPN,不要误导。全局 != VPN。

是的,这位兄台说得对,刚刚忘记补充了,你用outline搭建的依然可以用ss client连接。

luvvien avatar Apr 19 '19 15:04 luvvien

@wi1dcard 我是根据电脑里的显示来看的,你看用outline的时候,它这些选项都说是vpn,旁边还写着vpn application:outline image

而用ss-NG的时候,自动代理选的是我连的WIFI→代理→Automatic Proxy Configuration,全局代理是直接选的Socks5 Proxy,手动的话是哪个都没选,也就是要我们手动自己选,还有http和https其实根本就不支持的,只是ss-NG自动开了一个privoxy把http和https请求转到socks5上: image

另外,从outline官网也说它是vpn: image

根据以上,我认为outline就是一个VPN软件,只不过用的socks5协议。

xiebruce avatar Apr 19 '19 16:04 xiebruce

@

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

@xiebruce Outline 依旧是 Shadowsocks 内核,并不是 VPN,不要误导。全局 != VPN。

是的,这位兄台说得对,刚刚忘记补充了,你用outline搭建的依然可以用ss client连接。

这个我知道,我也用着呢,因为它也是socks5协议的,但用socks5协议并不能代表它就不是VPN,根据上边我说的,我认为outline就是VPN。

xiebruce avatar Apr 19 '19 16:04 xiebruce

@

@luvvien outline有两个缺点:

  • 1、服务器需要KVM装docker,而现在很多人还是买的小鸡OVZ
  • 2、它已经是VPN而不是普通的代理了,它是全局走VPN了,访问国内网站也绕地球一大圈(有些人服务器在米国),这样肯定会导致访问国内服务变慢。 基于这样的原因,虽然我安装了,也能随时打开用,但我非常少用它,平时还是用着有pac的ss-NG爽点,毕竟还集成了kcptun可以加速,commandLine最多像上边说的,弄个开关切换一下。

@xiebruce Outline 依旧是 Shadowsocks 内核,并不是 VPN,不要误导。全局 != VPN。

是的,这位兄台说得对,刚刚忘记补充了,你用outline搭建的依然可以用ss client连接。

这个我知道,我也用着呢,因为它也是socks5协议的,但用socks5协议并不能代表它就不是VPN,根据上边我说的,我认为outline就是VPN。

@xiebruce VPN 有个很重要的特性是你能直接访问同一个虚拟内网内的其它设备,这也是它设计的初衷。虽然我没有实际求证,但我认为 Outline 并不具备这样的功能。你看到的 VPN 选项,只不过是 Outline 的 macOS 客户端为了转发系统流量而在本地启动的 VPN 服务端,你连接到的并不是远端服务器。ShadowsocksX-NG 也是一样,只不过使用本地 Socks5 服务代替了 VPN 而已。

wi1dcard avatar Apr 19 '19 23:04 wi1dcard

@wi1dcard 对,确实像你说的这样,它客户端按VPN的方式做了,但本身应该是不具备真正VPN的功能。

xiebruce avatar Apr 20 '19 02:04 xiebruce

@liushazm ss代理是基于tcp或者udp协议,而ping是走的icmp协议因此在ss下不能ping通google

参考: https://stackoverflow.com/questions/5274934/use-ping-through-socks-server 刚👀这个comment,真的是及时雨。

yunkunrao avatar May 25 '19 15:05 yunkunrao

求助。。貌似这样任然不成功。虽然cip.cc显示成功了,但是看linux的lastlogin还是老的ip。

AlphaDu avatar Jun 23 '19 02:06 AlphaDu

@yunkunrao 这个确实可以,谢谢

liushazm avatar Jun 26 '19 06:06 liushazm

@mrdulin 问大佬一个问题,为什么终端的命令不走全局代理?你前面说ping不走是因为它是ICMP,可是git pull 这样的呢?只要是应用层协议,SOCKS5就能代理吧?毕竟它在应用层之下。

xiebruce avatar Jul 15 '19 19:07 xiebruce

非常感谢,代理已经能显示外国的地址,但是ping www.google.com 的时候还是ping不通,请问知道为什么吗

ping不通 因为ping 是ICMP,你不能通过ping 来判断这个问题

Navven avatar Dec 12 '19 08:12 Navven

curl: (7) Received invalid version in initial SOCKS5 response.运行curl cip.cc 出现了这个东西是怎么回事啊

zycode1561 avatar Feb 17 '20 03:02 zycode1561

alias proxy='export socks5_proxy=socks5://127.0.0.1:1086;export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;'
alias unproxy='unset socks5_proxy http_proxy https_proxy'

这样可以把socks5和http以及https全都代理。

有用! 没弄http(s)代理前,curl www.google.com 时报错 curl: (52) Empty reply from server 用后就解决了

Interesting6 avatar Feb 25 '20 12:02 Interesting6

proxychains4 brew install 并不能让 brew install 走代理 为什么呢? 只有设置 export http proxy这种才能让 brew 走代理

phpmaple avatar Mar 22 '20 05:03 phpmaple

这里的人说话太好听了吧,超喜欢这里的[玫瑰]

bigbossx avatar Apr 07 '20 10:04 bigbossx

image


what's wrong with that?

$ vim ~/.zshrc  

# SSR proxy alias ⚠️  1086 端口号 

# 添加如下代理 alias 配置(proxy 和 unproxy)
# alias proxy='export all_proxy=socks5://127.0.0.1:1080'

# proxy 端口根据实际设置, 如 1086
$ alias proxy='export all_proxy=socks5://127.0.0.1:1086'

$ alias unproxy='unset all_proxy'

# 保存退出
$ :wq!

# 刷新
$ source ~/.zshrc

image

xgqfrms avatar Jun 19 '20 03:06 xgqfrms

@xgqfrms I also set it to no effect, have you solved it?

CrazyCatZhang avatar Sep 04 '20 14:09 CrazyCatZhang

按照楼主写的配置好后,输入proxy命令后,执行curl cip.cc,还是显示国内地址及运营商,这是为什么?但是我感觉执行proxy后,终端下载东西确实快了很多,如何判断终端代理是否配置成功呢?

qu-peng avatar Mar 16 '21 03:03 qu-peng

按照楼主写的配置好后,输入proxy命令后,执行curl cip.cc,还是显示国内地址及运营商,这是为什么?但是我感觉执行proxy后,终端下载东西确实快了很多,如何判断终端代理是否配置成功呢?

curl https://www.google.com 就行了,如果是一大片,那说明成功(因为那一大片是google首页的html源码,如果只有一行,那一行就是报错,说明没走代理,无法访问google)

xiebruce avatar Mar 16 '21 12:03 xiebruce

非常感谢,代理已经能显示外国的地址,但是ping www.google.com 的时候还是ping不通,请问知道为什么吗

你需要 tcping 工具 ,tcp 与 icmp 的区别~

zhuziyi1989 avatar Mar 25 '21 06:03 zhuziyi1989

export http_proxy=http://127.0.0.1:1087 需要在 proxy 中声明username和password吧

wyq984700527 avatar Jun 03 '22 04:06 wyq984700527