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

news2024/11/18 3:43:14

参考:

  • 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.coloradmin.cn/o/1676035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦: 华秋: 背胶: FPC板背胶是可以粘接在光滑表面的一种薄型胶带,可以在狭小以及光滑的表面上用来提供高…

【IDE】com.intellij.debugger.engine.evaluation.EvaluateException

目录标题 报错重现代码分析解决方式 报错重现 Error during generated code invocation com.intellij.debugger.engine.evaluation.EvaluateException: Method threw java.lang.NullPointerException exception.代码分析 //ls来自上下文 ls.stream().map(m->m.getRewardTy…

搞懂Docker(十)- 优化创建镜像

获取示例程序 示例程序 或者 示例程序 获取示例程序程序结构如下├── getting-started-app/ │ ├── package.json │ ├── README.md │ ├── spec/ │ ├── src/ │ └── yarn.lock优化创建镜像 使用docker image history命令,可以查看创建镜像里的每一层的信息…

Java面试八股文(SpringCloud篇)

****************************************************

AI大模型日报#0514:OpenAI GPT-4o震撼发布、我是如何赢得GPT-4提示工程大赛冠军的

导读:欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。《AI大模型日报》今日要点:OpenAI在春季新品发布会上推出全能模型GPT-4o及桌面App,颠覆科技界。GPT-4o…

很难找到全的!150个软件测试领域专业术语汇总

1. 单元测试(Unit Testing):对软件中的最小功能单元(通常是函数或方法)进行测试,以验证其是否按预期工作。 2. 集成测试(Integration Testing):测试不同模块之间的交互…

Linux内核发送网络数据

前言 我们开始今天对 Linux 内核⽹络发送过程的深度剖析。还是按照我们之前的传统,先从⼀段代码作为切⼊。 上述代码中,调⽤ send 之后内核是怎么样把数据包发送出去的。本⽂基于Linux 3.10,⽹卡驱动采⽤Intel的igb举例。 基础框架 我们看…

汇聚荣科技:拼多多开店没有流量应该怎么办?

拼多多开店没有流量是一个常见的问题,许多新手商家都会遇到这样的困境。那么,如何解决这个问题呢?下面从四个方面进行详细阐述。 一、优化店铺和商品 首先,要确保店铺和商品的质量。店铺要有自己独特的风格和特色,商品要有高质量…

windows平台Visual Studio2022编译libuvc调试usb摄像头

一、下载libuv源码,源码地址:libuvc/libuvc: a cross-platform library for USB video devices (github.com) 二、新建vs工程,将libuvc源码中的include和src目录下的文件拷贝到工程中。 1.include源码修改 ①libuvc头文件修改 将 #includ…

基于NIOS-II软核流水灯和串口通信实现

文章目录 一、创建工程二、系统设计1. 在 “component library” 标签栏中找到 “Nios II Processor” 后点击 Add2. 在 ”Component Library” 标签栏中的查找窗口输入 jtag 找到 ”JTAG UART ”,然后点击 Add3. 添加片上存储器 On-Chip Memory(RAM)核4. 查找窗口输…

ORA-00932: inconsistent datatypes: expected - got CLOB的分析解决方案

最近在项目中遇到查询数据时报ORA-00932: inconsistent datatypes: expected - got CLOB错误,这个错误很明显是由于查询时类型的不匹配造成的。 问题分析: 一、检查你的查询的实体的类型是否于数据库的保持一致,如果不一致,那么需…

eNSP PRO安装完整版(超详细)

目录 eNSP PRO包: 安装步骤: eNSP PRO包: 链接: https://pan.baidu.com/s/12oBJ708OHMZlhj8nS21HSw?pwdr64q 提取码: r64q 安装步骤: 将ensp pro的包下载并且解压出来 在Oracle VM VirtualBox,将我们解压好的en…

OpenAI 发布了免费的 GPT-4o,国内大模型还有哪些机会?

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 这是今天在某乎看到一个问题:OpenAI 发完 GPT-4o&…

电力系统潮流计算的计算机算法(一)——网络方程、功率方程和节点分类

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第一篇笔记。下一篇传送门。 实际中的大规模电力系统包含成百上千个节点、发电机组和负荷,网络是复杂的,需要建立复杂电力系统的同一潮流数学模型,借助计算机进行求解。 简介 …

CSS的基础语法和常见的语法简单归纳

CSS CSS 是层叠样式表(Cascading Style Sheets)的缩写。它是一种用来控制网页样式和布局的标记语言。通过 CSS,可以定义网页中的元素(如文字、图像、链接等)的外观和排版方式,包括字体、颜色、大小、间距、…

Ubuntu 安装chrome和chromedriver

1.安装包下载 百度网盘地址 2.更新软件包 sudo apt-get update 3.安装chrome sudo apt install ./google-chrome-stable_current_amd64.deb 4.检查是否安装成功 google-chrome --version 5.安装chrome-driver驱动,解压zip文件 unzip chromedriver_linux64.z…

SOLIDWORKS教育版 SOLIDWORKS科研版 SOLIDWORKS商业版应该怎么选?

SOLIDWORKS是达索系统(Dassault Systemes S.A)的子公司,是基于Windows开发的三维CAD系统,已经成为全球三维CAD领头的品牌,市场占有率高,广泛应用于航天和国际、工业机械、汽车和运输、消费产品、设计与工程…

LeetCode11盛最多水的容器

问题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。 解…

JAVA云his医院管理系统源码(如何解决传统HIS的弊端、在医院管理中的具体应用场景有哪些)

开发技术: 前端:AngularNginx; 后台:JavaSpring,SpringBoot,SpringMVC,SpringSecurity,MyBatisPlus等; 数据库:MySQL MyCat; 基于云计算技术…

虚拟化技术 分离虚拟机数据流量与ESXi的流量管理

一、实验内容 为ESXi主机添加网卡通过vClient查看已添加的网卡信息为ESXi添加网络,创建标准交换机修改网络配置,实现虚拟机数据流量与ESXi的管理流量分离 二、实验主要仪器设备及材料 安装有64位Windows操作系统的台式电脑或笔记本电脑,建…