天天看點

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代理伺服器(官方文檔翻譯)