各家 IPLC 流量價格簡易對照

注意:流量價格不包括 VM 或者其他費用,這裡對比的只是各家在「加購流量」時需要的金額,取各家相近配置的 50G 單向流量(即雙向 100GB)報價。

數據準確性&時效性聲明:請以你購買時的實際報價為准。該處數據只是我給自己寫的筆記。

服務商 流量價格 專線參數 提供商
修羅雲 1.0元/GB 深港,15Mbps 安暢
GbpsCloud 1.2元/GB 沪日,10Mbps 安暢
CloudIPLC 1.4元/GB 沪日,20Mbps N/A
IPLCLink 1.6998元/GB 深港,200Mbps 阿里雲 CEN
GbpsCloud 1.8元/GB 沪日,30Mbps 安暢
ManSora 1.9544元/GB 沪日,100Mbps 阿里雲 CEN

騰訊雲的小技巧?- 使用雙彈性網卡主動迴避回程路由阻斷

其實這就是一篇很普通的講述雙公網 IP 部署的文章,為什麼說是騰訊雲小技巧呢,因為良心雲怕是唯一一個最低配 VM 都支持兩張彈性網卡的雲服務商了。

先說說背景吧,這邊一直用騰訊雲的機子做服務器的死活監測,包括國內和國外的主機,一直以來都用的很舒適,直到有一天加了一臺新主機的監控,就有點噩夢的開局…

新主機的回程路由是動態的,這本身沒啥問題,但好死不死,怕是被有些人科學利用過度,三線中有一條線的回程路由是去不到騰訊雲的,導致一旦隨機到那段路由,我在騰訊雲的死活監測就會開始報警…我好難啊。

跟客服交流幾天,每天換 10 來次彈性 IP 苟活,覺得再這樣下去不行,開始思考解決方案…最終記起,騰訊雲是支持兩個 IP 綁定的啊。

先說一下為什麼換 IP 有用,簡單來說就是不同 IP 即便在同一個 BGP,對面過來的動態回程是不一樣的,你問我為什麼這麼蛋疼?問我有什麼用。

那麼思路到位,就開始折騰吧。

首先我們參考騰訊雲的 IP 追加步驟:

https://cloud.tencent.com/document/product/576/18535#linux-.E4.B8.8B.E7.9A.84.E9.85.8D.E7.BD.AE.E6.AD.A5.E9.AA.A4

文章本身寫的不錯,只不過國內的這些文章都寫的挺死板的,關鍵地方記得標注一個 “請參照實際配置” 都已經算是良心文了…

接下來,我們研究一下 ip rule 能做的騷操作:

https://www.cnblogs.com/wanstack/p/7728785.html

搞定!…(黑人問號)

沒錯你們自己看吧,我沒說我要寫教程。(x)

ip route add default dev eth0 via 172.27.16.1 table 10
ip route add default dev eth1 via 172.27.16.1 table 20

ip rule add from 172.27.16.10 table 10
ip rule add from 172.27.16.14 table 20

因為所以,科學道理,搞定上面的路由表之後,我們就可以通過簡單的 ip rule 來過上幸福生活了。

ip rule add to [target ip] table 10 / 20

之後,在網絡發生超時錯誤時,用上面的 ip rule 命令就能靈活切換去程公網 IP 了,這邊為了偷懶,直接用 crontab 每 30 分鐘就換一次,估計是能解決滴。(再不行我去把失敗時才切路由的腳本補上…)

IPLC專線產品推薦

個人覺得比較值得推薦的IPLC專線:非阿里雲內網產品,是實實在在的自有/租借機櫃資源。

目前實際使用過,並感覺還不錯的,主要推薦三家:

  1. CloudIPLC(目前已不在使用)
  2. 修罗云
  3. GbpsCloud

各自說一下優缺點:

CloudIPLC:入口上海電信/聯通機櫃,出口東京 Equinix 。可以說是上海至日本專線中目前性價比最高的服務商(即便提價後),穩定端對端延遲 26ms,缺點在於偶爾會被 DDoS 攻擊導致斷流,通知也不算及時,但技術團隊很負責。同時,CloudIPLC 要求實名認證,有顧忌的話可以考慮下面一家。

推廣鏈接:https://www.cloudiplc.com/aff.php?aff=367

修罗云:應該是目前性價比最高的深圳至香港專線,套餐價格跟流量相對應,1元1GB。入口深圳電信,出口香港 Equinix,安暢的線路。端對端延遲 2ms。剛買的時候估計因為價格太低,經常遭到惡意 DDoS 攻擊導致服務不可用,最近穩定下來了。自主開發的面板及其易用性給了我很好的印象。缺點是無法自定義端口號。

推廣鏈接:https://www.xiuluohost.com/?aff=36117

GbpsCloud:價格不便宜,但好處在於能夠提供獨立 IP,說實話這個價位來說很超值了。線路入口無錫三線,出口東京 NTT,是安暢的機房和線路。GbpsCloud 家賣的東西都以穩定為名,基本不會出什麼故障。但要注意的是,他們的工單反應速度比較慢,回覆可能要等上兩天,建議有問題一定要提前發起工單,不建議新手購買使用。

推廣鏈接:https://gbpscloud.com/aff.php?aff=48

Fail2ban 聯動 Aliyun CLI 將 IP 直接錄入安全組

For AWS:

https://www.cloudar.be/awsblog/integrating-fail2ban-with-aws-network-acls/

注意,本文中的做法需要先在系統中配置好 aliyun-cli,
具體做法請參考:https://github.com/aliyun/aliyun-cli

在 jail.d 的配置文件中添加:

action = aliyun[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]

然後在 action.d 文件夾中添加 aliyun.conf 配置:

[INCLUDES]

before = iptables-blocktype.conf

[Definition]

actionstart = aliyun configure set --profile ecsRamRoleProfile --mode EcsRamRole --ram-role-name <替換為 RAM Role 名稱> --region <替換為安全組地域>
              iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I <chain> -p <protocol> --dport <port> -j fail2ban-<name>

actionstop = iptables -D <chain> -p <protocol> --dport <port> -j fail2ban-<name>
             iptables -F fail2ban-<name>
             iptables -X fail2ban-<name>

actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'

actionban = /usr/local/bin/aliyun ecs AuthorizeSecurityGroup --SecurityGroupId <替換為安全組 ID> --SourceCidrIp <ip>/32 --IpProtocol ALL --PortRange=-1/-1 --NicType intranet --Policy Drop

actionunban = /usr/local/bin/aliyun ecs RevokeSecurityGroup --SecurityGroupId <替換為安全組 ID> --SourceCidrIp <ip>/32 --IpProtocol ALL --PortRange=-1/-1 --NicType intranet --Policy Drop

[Init]

使用 Fail2ban 封殺主動探測 IP

我們想要封殺的主動探測行為:

0000-00-00 00:00:00 WARNING common.py:238 unsupported addrtype 69, maybe wrong password or encryption method
0000-00-00 00:00:00 WARNING tcprelay.py:521 Protocol ERROR, TCP ogn data ... from ::ffff:119.96.105.1:50522 via port 443 by UID 443
0000-00-00 00:00:00 ERROR tcprelay.py:1097 can not parse header when handling connection from ::ffff:119.96.105.1:50522

安裝 Fail2ban:

yum -y install epel-release
yum -y install fail2ban

添加 Filter:(e.g. /etc/fail2ban/filter.d/ssr.conf

[INCLUDES]
before = common.conf

[Definition]

failregex = ^.+ERROR.+can not parse header when handling connection from +<HOST>

ignoreregex =

添加 Jail:(e.g. /etc/fail2ban/jail.d/01-ssr.conf

[ssr]
enabled = true
port = 0:65535
logpath = (Log to watch)
maxretry = 1
bantime = 86400
findtime = 300

(可選)禁用 FirewallD,使用 iptables 進行封禁:(個人覺得 f2b 跟 iptables 更合得來)

mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.disabled

啟動 Fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

查看 Jail 規則狀態:

fail2ban-client status ssr