一台linux通过另一台linux访问互联网-TinyProxy

参考:

环境:ubuntu 18.04
机器1: IP 219.216.65.252 (可以访问外网)
机器2: IP 202.199.6.202
目标: 让机器2通过机器1连上外网

什么是TinyProxy

Tinyproxy 是一个轻量级的 HTTP/HTTPS 代理服务器,设计简单且占用资源少,适合在内存和 CPU 资源有限的环境中运行。它的主要用途是作为网络间的中介,允许客户端通过它访问互联网资源,从而可以进行缓存、过滤、匿名和其他功能。

安装

sudo apt-get update
sudo apt-get install tinyproxy

配置(在机器1)

  1. 修改端口和允许远程连接的IP

    sudo vim /etc/tinyproxy/tinyproxy.conf
    

    Port 8888 #预设是8888 Port,你可以更改,我改成了9999
    Allow 127.0.0.1 #将127.0.0.1改成你自己的IP
    #例如你的IP 是1.2.3.4,你改成Allow 1.2.3.4,那只有你才可以连上这个Proxy
    #若你想任何IP都可以脸到Proxy在Allow前面打#注释

    $ cat /etc/tinyproxy/tinyproxy.conf |grep .*Port.*
    # Port: Specify the port which tinyproxy will listen on.  Please note
    #Port 8888
    Port 9999
    

    在这里插入图片描述
    Logfile (必须) 日志文件, 默认 /var/log/tinyproxy/tinyproxy.log,在 LogFile 文件不存在时会警告,不会运行失败。

    具体设置的值可以通过命令在配置文件中查找:

    	$ sudo cat /etc/tinyproxy/tinyproxy.conf |grep .*pid.*
    	PidFile "/run/tinyproxy/tinyproxy.pid"
    
  2. 查看端口是否开放(应该和下面的一样):

    $ netstat -ltnp |grep .*9999.*
    tcp        0      0 0.0.0.0:9999    0.0.0.0:*     LISTEN      7611/tinyproxy      
    tcp6       0      0 :::9999         :::*          LISTEN      7611/tinyproxy
    

    如果没有打开,则使用iptables命令放开9999端口规则:

    iptables -I INPUT -p tcp --dport 9999 -j ACCEPT
    

    再次用上面的命令测试即可。
    参考: https://blog.csdn.net/weixin_41831919/article/details/113061317

  3. 启动代理(在机器1)

    # 启动
    service tinyproxy start 
    # 重启
    sudo service tinyproxy restart
    # 关闭
    sudo service tinyproxy stop
    

测试

机器1上测试

# 本地
$ curl http://httpbin.org/get?show_env=1
{
  "args": {
    "show_env": "1"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.78.0", 
    "X-Amzn-Trace-Id": "Root=1-664318e8-70126aea75c7a1c23c94e1a4", 
    "X-Forwarded-For": "219.216.65.252", 
    "X-Forwarded-Port": "80", 
    "X-Forwarded-Proto": "http"
  }, 
  "origin": "219.216.65.252", 
  "url": "http://httpbin.org/get?show_env=1"
}
# 本地使用代理, 可以执行export http_proxy=''来清空
$ export http_proxy='219.216.65.252:9999'
$ curl http://httpbin.org/get?show_env=1
$ # 或者直接: curl -x 219.216.65.252:9999 http://httpbin.org/get?show_env=1
{
  "args": {
    "show_env": "1"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.78.0", 
    "Via": "1.1 tinyproxy (tinyproxy/1.8.4)", 
    "X-Amzn-Trace-Id": "Root=1-66431b0e-2bb370e5133d103260f0a670", 
    "X-Forwarded-For": "219.216.65.252", 
    "X-Forwarded-Port": "80", 
    "X-Forwarded-Proto": "http"
  }, 
  "origin": "219.216.65.252", 
  "url": "http://httpbin.org/get?show_env=1"
}

在机器2上测试

http://代理服务器IP:端口号 即: http://219.216.65.252:9999

# 另一台机器上测试 (输出如下,这表示已经可以使用机器1作为代理访问互联网了)
$ curl -x 219.216.65.252:9999 http://httpbin.org/get?show_env=1
{
  "args": {
    "show_env": "1"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.68.0", 
    "Via": "1.1 tinyproxy (tinyproxy/1.8.4)", 
    "X-Amzn-Trace-Id": "Root=1-66436e27-7b0e8400044872ed2ad4b3c9", 
    "X-Forwarded-For": "219.216.65.252", 
    "X-Forwarded-Port": "80", 
    "X-Forwarded-Proto": "http"
  }, 
  "origin": "219.216.65.252", 
  "url": "http://httpbin.org/get?show_env=1"
}

对于机器2可以参考如下三种配置方法:

有三种常用方式:
永久设置
vim /etc/profile
export http_proxy=‘http://代理服务器IP:端口号’
export https_proxy=‘http://代理服务器IP:端口号’
source /etc/profile
临时设置(重连后失效):
也可以直接运行
export http_proxy='http://代理服务器IP:端口号 export https_proxy=‘http://代理服务器IP:端口号’
注意:设置之后可能使用ping时还是无法连接外网,但是pip时可以的,因为ping的协议不一样不能使用这个代理
单次设置
直接在pip时设置代理也是可以的:
pip install -r requirements.txt --proxy=代理服务器IP:端口号
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/king_cpp_py/article/details/81192387

之后主机2 的pip,conda,apt均可使用。

可能遇到的一些问题

$ service tinyproxy start
Failed to add /run/systemd/ask-password to directory watch: No space left on device:

参考:https://askubuntu.com/questions/828779/failed-to-add-run-systemd-ask-password-to-directory-watch-no-space-left-on-dev

由于watch数据数量被限制了。

使用root身份,如果只需要临时修复时运行:

cat /proc/sys/fs/inotify/max_user_watches
echo 1048576 > /proc/sys/fs/inotify/max_user_watches

允许生产更多watch。

长期修复方法是编辑文件/etc/sysctl.conf以包含以下行:

fs.inotify.max_user_watches=1048576
  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ystraw_ah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值