当前位置: 首页 > news >正文

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

参考:

  • https://blog.csdn.net/weixin_41831919/article/details/113061317
  • https://www.yuncongz.com/archives/1.html
  • https://blog.csdn.net/aoc68397/article/details/101893369

环境: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上测试

# 另一台机器上测试
$ 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

之后主机B的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
http://www.lryc.cn/news/349209.html

相关文章:

  • 探索数据结构:堆的具体实现与应用
  • 网络2--MAC地址,IP地址的理解
  • 类型的转换
  • memset函数
  • Java面向对象——多态
  • python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战
  • Angular前端项目在Apache httpd服务器上的部署
  • Oracle 更改数据文件位置的几种常用方式
  • 【opencv】图像畸变校正
  • Charger之二输入电压动态电源原理(VIN-DPM)
  • 【半夜学习MySQL】表结构的操作(含表的创建、修改、删除操作,及如何查看表结构)
  • 曲线救国:window 安装 docker
  • 番外篇 | 利用PyQt5+YOLOv5来搭建目标检测系统(附可视化界面+功能介绍+源代码)
  • Pascal Content数据集
  • 【Unity】使用Resources.LoadAll读取文件的顺序问题
  • pdf怎么标注红色方框?五种PDF标注红色方框方法
  • C++字符串细节,面试题06
  • AutoModelForCausalLM.from_pretrained 函数调用本地权重报错
  • 【qt】动态属性
  • Git知识点总结
  • 【数据库】数据库指令
  • 设计模式——状态模式(State)
  • 理解打包好的vue项目结构dist包
  • 24深圳杯C题18页高质量论文+可执行代码+图表
  • Midjourney Imagine API 申请及使用
  • 电子邮箱是什么?怎么申请一个电子邮箱?
  • C++ 并发编程指南(11)原子操作 | 11.4、通过内存序实现顺序模型
  • 【数据结构】栈和队列专题
  • 2024年程序员最应该关注的几件事?
  • 【初阶数据结构】单链表基础OJ题讲解