我的一个linux机器有10个ip,ip分别是:
222.222.222.2(主ip)
222.222.222.3
...
222.222.222.10
我在上面跑了ss服务,目的是访问任意一个都可以。
现在的情况却是,不管我访问的是哪个ip,用www.ip138.com查看的ip都是222.222.222.2这个主ip的返回结果。
分析一下原因(谢楼下两位指点),由于ss是socks服务,不管客户端访问的哪个ip过来,服务器在对外访问的时候,走的都是缺省路由,也就会用222.222.222.2这个ip。
所以,虽然ss客户端与服务器之间连接用任意ip都可以,但是服务器去访问www.ip138.com时都会用222.222.222.2这个ip。
怎样才可以改成,我访问某个ip,那么数据就从这个ip向外访问,并且按这个ip原路返回?
.
迷茫2017-04-17 14:55:33
題主,請你解釋這段話:
但是,看到情況卻是,不管我訪問的是哪個ip,得到的都是222.222.222.2主ip的回傳結果。
你的「訪問」是什麼意思?是連接到你伺服器不同IP的ss服務,然後透過ss上網查詢目前IP麼?
上面是我對你描述的猜測,
對於你本機和SS伺服器之間的連接,如果你連的是222.222.222.3,伺服器是不可能用222.222.222.2回傳資料的,回傳了也會被直接丟包。
所以如果我對你的描述猜對了的話,你要改的是你伺服器的預設出口IP吧。
SS是socks代理,你透過SS訪問網頁完全等同於你的伺服器發起請求,所以預設只能從預設的網關出去。
從單一程式來說,主動選擇一個出口IP是可以的(例如wget的--bind-address),對於SS來說似乎需要改很多程式碼
伊谢尔伦2017-04-17 14:55:33
這個問題很難搞啊,因為ss是用戶態的,走的系統路由,系統說走哪就走哪。
辦法也不是沒有,就是用iptables做。難度有點高,我沒成功過,就不瞎貼了。
伊谢尔伦2017-04-17 14:55:33
倒是找到了這個方法,是透過iptables來做的。
http://shadowsocks.be/7.html
https://www.6zou.net/tech/shadowsocks-multiple-ips-outbound-with-iptables-how-to.html
要是100個ip,那不是很麻煩?