一些 VPN 流量被阻止以保護端點
我有一個
strongswan
用於測試IKEv2
的VPN 伺服器(今天早上,我在英國的一列火車(Transpennine Express,使用Icomera.com)並連接到車載 wifi。這是一個純 IPv4 網路,並利用 OpenDNS 阻止某些站點。不幸的是,它們阻止了堆棧交換,所以我連接到我的 VPN 以試圖繞過這些限制。它在一些網站上執行良好,例如 news.bbc.co.uk 和一些 twitter.com(它允許在某些地址訪問https://abs.twimg.com,但阻止了其他類似/responsive-web/web/runtime.21a6d542388d1e3e4.js
和/responsive-web/web/main.d9a47f436e41de1a4.js``/responsive-web/web/i18n-rweb/en.10f7da63e9b736204.js``/responsive-web/web/icon-default.3c3b224a61f8b0e54.png
)。但是,其他域根本不起作用;例如 google.com 和 amazon.com。 是什麼阻止了某些交流?
ping
並traceroute
在所有域上工作並返回有效 IP(通過 v4 和 v6,通過 VPN - 如果我禁用 IPv6,問題仍然存在)。通過埠 80連接telnet
到站點是可行的,但是當我嘗試時wget
,它會在重定向後卡住(通常是到 https,儘管下面的重定向到 http 地址失敗):wget -vv -4 google.com --2019-09-02 08:39:18-- http://google.com/ Resolving google.com (google.com)... 172.217.18.14 Connecting to google.com (google.com)|172.217.18.14|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://www.google.com/ [following] --2019-09-02 08:39:18-- http://www.google.com/ Resolving www.google.com (www.google.com)... 216.58.205.228 Connecting to www.google.com (www.google.com)|216.58.205.228|:80... connected. HTTP request sent, awaiting response... ^C
使用
adb
(Android調試外殼,連接到我的手機,以防我的硬體有特殊性),我嘗試了同樣的方法 - 它沒有wget
,所以我使用curl
了,但結果相同:NB1:/ $ curl google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML> NB1:/ $ curl https://google.com curl: (28) Operation timed out after 300191 milliseconds with 0 out of 0 bytes received
如果我嘗試通過 SSH 連接到託管 VPN 的伺服器(我在這裡沒有使用密鑰),同時連接到 VPN:
ssh -v user@1.2.3.4 OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /jkl/ssh_config debug1: /abc/ssh_config line 19: Applying options for * debug1: Connecting to 1.2.3.4 [1.2.3.4 port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/user/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/user/.ssh/id_ed25519-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4 debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000 debug1: Authenticating to 1.2.3.4:22 as 'user' debug1: SSH2_MSG_KEXINIT sent
然後什麼都沒有,沒有超時或無法通過身份驗證的消息等。我可以訪問的另一台 SSH 伺服器連接良好。
VPN 伺服器使用 Cloudflare 1.1.1.1 DNS 伺服器。執行該命令
dig +nocmd +multiline +noall +answer TXT resolver.dnscrypt.info
會返回實際的解析器,它似乎在 VPN 上使用正確的 DNS 配置:嘗試1:
resolver.dnscrypt.info. 10 IN TXT "Resolver IP: 162.158.85.239"
嘗試2:
resolver.dnscrypt.info. 10 IN TXT "Resolver IP: 162.158.82.32"
顯然這不是 DNS 錯誤,因為地址已解析,並且 VPN 通過多個埠(至少 22、25、80、443)正確連接和接收數據。 什麼可能會在這裡阻止某些交流? 幾乎就像發生了某種 DPI,它似乎與安全通信有關 - 某些 HTTPS 連接和上述 SSH。這不是連接問題 - 我每秒都在後台執行一個腳本 ping,當失敗時,我顯然停止嘗試診斷問題。
我能找到的唯一相關問題是Cisco ASA:部分通過 VPN 的流量在此處被阻止 785363 關於 Cisco ASA 設備,但這不會導致問題,因為它們只出現在我連接的網路上。我假設它與使用的 OpenDNS 設置有關,但無法弄清楚它是如何工作的。
相關伺服器的日誌中沒有任何立即可見的內容。
作為參考,當我沒有連接到 VPN(並允許使用不安全的證書)時,我在 Chrome 中嘗試訪問 stackoverflow.com 時看到了這一點:
This site is blocked due to content filtering. stackoverflow.com Sorry, stackoverflow.com has been blocked by your network administrator. You can still get FREE movies, TV shows and magazines through our TPE App or at tv.tpexpress.co.uk. This site was blocked due to the following categories: Forums/Message boards Diagnostic Info ACType 0 Block Type aup Bundle ID 640224 Domain Tagging - Host block.opendns.com IP Address 176.12.107.132 Org ID 2218188 Origin ID 72833478 Prefs - Query url=8485666876808770837177808815688078&ablock&server=lon15&prefs=&tagging=&nref Server lon15 Time 2019-09-02 08:48:01.341364541 +0000 UTC m=+5779291.314972467
我最近有機會再次測試有問題的網路。
這裡的解決方案是使用 MTU。對有效負載的進一步分析
curl -v
顯示,在客戶端打招呼後握手失敗並且沒有看到響應,即使 VPN 伺服器看到了這一點,這讓我懷疑路由中存在問題。進一步看,客戶端的 MTU 為 1500,通常工作正常,但在此網路配置中失敗。解決方法是降低 MTU,並且可以通過更改
iptables
.具有不同長度的不同域返回不同大小的有效負載,這不會導致問題,因此不一致。