SOCKS 是基于TCP应用层协议穿透防火墙的代理服务器,即使防火墙阻止了一些应用端口,也能通过SOCKS代理穿透。SOCKS协议是独立于应用层的,因此可以用于WWW、FTP、Telnet等等。

来至百度解释:Socks不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问Internet就可能需要使用SOCKS。

首先,一个应用层客户端连接到SOCKS代理服务器,这时代理服务器会查看访问列表(access list)是否允许客户端访问远端的应用资源。如果允许,代理服务器将数据包传递给应用服务器,并创建一个应用服务器与客户端的连接。

注意:配置你的应用客户端必须使用SOCKS v4版本

安全的SOCKS代理应该是通过访问列表和防火墙控制访问外部应用,例如防火墙禁止FTP的TCP/21端口,通过SOCKS代理允许指定客户端IP访问。如果不安全的代理服务器引入网络,可能为垃圾邮件发送者通过路由器发送垃圾邮件提供条件。

属性描述

§  connection-idle-timeout (时间; 默认: 2m) – 连接空闲超时时间,即连接空闲后多长时间关闭

§  enabled (yes | no; 默认: no) – 是否启用SOCKS代理

§  max-connections (整型: 1..500; 默认: 200) – 同时建立最大连接数

§  port (整型: 1..65535; 默认: 1080) – SOCKS服务器监听连接的TCP端口

访问列表(Access List

操作路径: /ip socks access

在SOCKS访问列表中,你能添加访问策略控制访问SOCKS服务器。SOCKS访问列表类似于防火墙列表策略。

属性描述

§  action (allow | deny; 默认: allow) – 选择此规则的执行方式。

allow – 匹配这个规则将允许数据包转发,并进一步处理

deny -  匹配这个规则将拒绝数据访问

§  dst-address (IP address/netmask) – 目标IP地址(对端服务器)

§  dst-port (port) – 目标TCP端口

§  src-address (IP address/netmask) – 源IP地址(客户端)

§  src-port (port) – 源TCP端口

活动连接(Active Connections

操作路径: /ip socks connections

活动连接列表显示了所有已经建立TCP连接,用于SOCKS代理服务器连接维护

属性描述

§  dst-address (只读: IP地址) – 目标IP地址

§  rx (只读: 整型) – 接收字节

§  src-address (只读: IP地址) – 源IP地址

§  tx (只读: 整型) – 发送字节

§  type (只读: in | out | unknown) – 连接类型

in – 向内连接

out – 向外连接

unknown – 连接正被发起

事例

查看当前TCP连接列表

[admin@MikroTik] ip socks connections> print

# SRC-ADDRESS                DST-ADDRESS             TX         RX

0 192.168.0.2:3242           159.148.147.196:80         4847       2880

1 192.168.0.2:3243           159.148.147.196:80         3408       2127

2 192.168.0.2:3246           159.148.95.16:80           10172      25207

3 192.168.0.2:3248           194.8.18.26:80             474        1629

4 192.168.0.2:3249           159.148.95.16:80           6477       18695

5 192.168.0.2:3250           159.148.95.16:80           4137       27568

6 192.168.0.2:3251           159.148.95.16:80           1712       14296

7 192.168.0.2:3258           80.91.34.241:80            314        208

8 192.168.0.2:3259           80.91.34.241:80            934        524

9 192.168.0.2:3260           80.91.34.241:80            930        524

10 192.168.0.2:3261           80.91.34.241:80            312        158

11 192.168.0.2:3262           80.91.34.241:80            312        158

[admin@MikroTik] ip socks connections>

应用实例

FTP服务通过SOCKS代理服务器

假设一个内网192.168.0.0/24,并做了nat伪装(masqueraded),RouterOS网络接口配置一个公网IP 10.1.0.104/24 和内网网关192.168.0.1/24,互联网中有一台FTP服务器IP地址是10.5.8.8。我们希望让内网客户端IP地址192.168.0.2访问这个FTP服务器

首先,确认nat伪装规则已经配置

[admin@MikroTik] ip firewall nat> print

Flags: X - disabled, I - invalid, D - dynamic

0   chain=srcnat action=masquerade src-address=192.168.0.0/24

[admin@MikroTik] ip firewall nat>

然后确认访问公网的FTP服务已经被防火墙拒绝,即访问FTP服务是不能直接通过正常应用协议访问:

[admin@MikroTik] ip firewall filter> print

Flags: X - disabled, I - invalid, D - dynamic

0   chain=forward action=drop src-address=192.168.0.0/24 dst-port=21 protocol=tcp

[admin@MikroTik] ip firewall filter>

这里就需要使用SOCKS代理服务器去访问,首先启用SOCKS服务器:

[admin@MikroTik] ip socks> set enabled=yes

[admin@MikroTik] ip socks> print

enabled: yes

port: 1080

connection-idle-timeout: 2m

max-connections: 200

[admin@MikroTik] ip socks>

接下来配置访问列表,添加客户端IP地址192.168.0.2/32到SOCKS访问列表中,允许数据传输从FTP服务器到客户端(且允许目标端口从1024到65535的所有IP地址),然后拒绝所有:

[admin@MikroTik] ip socks access> add src-address=192.168.0.2 dst-port=21 \

\... action=allow

[admin@MikroTik] ip socks access> add dst-port=1024-65535 action=allow

[admin@MikroTik] ip socks access> add action=deny

[admin@MikroTik] ip socks access> print

Flags: X - disabled

0   src-address=192.168.0.2 dst-port=21 action=allow

1   dst-port=1024-65535 action=allow

2   action=deny

[admin@MikroTik] ip socks access>

这样,SOCKS服务器已经配置完成,查看Connctions中断数据传输和连接情况:

[admin@MikroTik] ip socks connections> print

# SRC-ADDRESS                DST-ADDRESS         TX         RX

0 192.168.0.2:1238           10.5.8.8:21                1163       4625

1 192.168.0.2:1258           10.5.8.8:3423              0          3231744

[admin@MikroTik] ip socks connections>

注意:为了让客户端正确连接SOCKS代理服务器,你必须在客户端应用配置上指定IP地址和端口到你的FTP客户端,在这个实例中IP地址设置为192.168.0.1,TCP端口为1080。

RouterOS SOCKS代理服务器(官方文档翻译)的更多相关文章

  1. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

  2. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  3. 蓝牙4.0——Android BLE开发官方文档翻译

    ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

  4. GreenDao官方文档翻译(上)

    笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...

  5. Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng

    Aircrack-ng官方文档翻译---Airdecap-ng   Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...

  6. Aircrack-ng官方文档翻译[中英对照]---Airmon-ng

    Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...

  7. Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng

    Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...

  8. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

  9. Retrofit官方文档翻译

    Retrofit官方文档翻译 官方文档网址 http://square.github.io/retrofit/ 介绍 Retrofit 将你的 HTTP API 转换为 Java 接口. public ...

随机推荐

  1. 从0开始配置ubuntu深度学习系统

    目录 个性化配置 ubuntu安装及其分区 NVIDIA驱动安装 配置使用清华源 安装shadowsocks-qt 安装chrome 安装gdebi 安装atom 安装wps 安装sogou piny ...

  2. 获取主机的对外ip

    # curl -w "\n" ifconfig.me # curl -w "\n" ipinfo.io/json # curl -w "\n" ...

  3. vim 安装molokai主题

    在.vim文件夹下创建文件夹colors 进入 https://github.com/tomasr/molokai 下载molokai.vim 将其放入colors文件夹下 进入.vimrc中 添加 ...

  4. 使用 puppeteer 创建一个自动化导出 PDF 的服务

    最近在基于 RAP2 做内网的一个 API 管理平台,涉及到与外部人员进行协议交换,需要提供 PDF 文档. 在设置完成 CSS 后已经可以使用浏览器的打印功能实现导出 PDF,但全手动,总是觉得不爽 ...

  5. 前端引用公共html模块方案

    最近临时一个负责公司官网的妹纸请假,于是临时接手了下官网的项目,官网都是静态页面,算是很简单的,但发现页面挺多,而每个页面总有部分是和其他页面一模一样的,比如页头.页尾等,这样就导致一个地方的修改要在 ...

  6. 雷林鹏分享:Ruby 文件的输入与输出

    Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...

  7. Tensorflow学习笔记二

    现在来开始安装Tensorflow吧 Tensorflow有两种模式, 一种GPU支持, 另外一种仅CPU支持 虚拟机仅有CPU支持, 那就第一种模式吧 有4种途径去安装 virtualenv &qu ...

  8. this 知多少

    js 中的this 到底指向哪里涅,学习js的过程中,肯定有不少小伙伴们调入this的大坑中,究其原因,this的指向在函数创建的时候是决定不了的,在调用的时候才能决定,谁调用的就指向谁...曾经,我 ...

  9. 『转』Bitdefender Internet Security 2013 – 免费1年

    活动中可以选择获取Bitdefender Internet Security 2013+Bitdefender Mobile Security (手机版)各一年激活码申请地址:https://part ...

  10. 爱奇艺、腾讯、优酷、搜狐、芒果、乐视、PPTV、音悦台等VIP视频免费观看

    观看地址一:http://www.luoruiyuan.cn/pages/id-62_uid-2_btid-35.html 观看地址二:http://movie.luoruiyuan.cn/vip.h ...