RouterOS SOCKS代理服务器(官方文档翻译)
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代理服务器(官方文档翻译)的更多相关文章
- 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 ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng
Aircrack-ng官方文档翻译---Airdecap-ng Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...
- Aircrack-ng官方文档翻译[中英对照]---Airmon-ng
Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...
- Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng
Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...
- Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET
OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...
- Retrofit官方文档翻译
Retrofit官方文档翻译 官方文档网址 http://square.github.io/retrofit/ 介绍 Retrofit 将你的 HTTP API 转换为 Java 接口. public ...
随机推荐
- POJ 3320 Jessica‘s Reading Problem(哈希、尺取法)
http://poj.org/problem?id=3320 题意:给出一串数字,要求包含所有数字的最短长度. 思路: 哈希一直不是很会用,这道题也是参考了别人的代码,想了很久. #include&l ...
- 二进制文件和ASCII文件有何区别
二进制文件和ASCII文件(即文本文件)的区别,对于和计算机亲近时间尚短的同学是个难题. 1.一个例子:两种100000 有程序: #include<iostream> using nam ...
- Android -- Activity的生命周期,Activity四种启动模式 Standard, SingleTop,SingleTask,SingleInstance
1. 示例图 . 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: Activity的完整生命周期自第一次调用onCreate()开始,直至调 ...
- git 撤销
在add之前撤回文件: git checkout src/com/jay/example/testforgit/MainActivity.java 已经add的,先取消添加,再撤回 git reset ...
- 100W数据,测试索引
两张表,结构相同,数据内容相同.唯一不同的就是是否包含索引.tf_user_index表中包含索引. 这100w数据,我造了近一天时间. mysql> select count(*) from ...
- mysql获取随机数据的方法
order by rand() 数据多了极慢,随机性非常好,适合非常小数据量的情况. 复制代码 代码如下: SELECT * FROM table_name AS r1 JOIN (SELECT (R ...
- JavaScript权威指南--类和模块
知识要点 每个javascript对象都是一个属性集合,相互之间没有任何联系.在javascript中也可以定义对象的类,让每个对象都共享某些属性,这种“共享”的特性是非常有用的.类的成员或实例都包含 ...
- HDU-5492 Find a path (枚举+DP)
Problem Description Frog fell into a maze. This maze is a rectangle containing N rows and M columns. ...
- 创建对象并生成结果的3个步骤-Chapter 3 P38
必须完成3个步骤才能创建对象并生成结果: 1 创建对象 namespace LanguageFeatures { public class Product { public int Product ...
- 简话Angular 00 为什么要学Angular
一句话: 现在不学Angular的结局,就和5年前不学JQuery一样! 谁学谁知道,早学早进阶! 1. JQuery vs Javascipt 问两个问题: 1) 你用过JQuery吗?当然! 2) ...