Bỏ qua việc chặn ILV bằng DNSTap và BGP

Bỏ qua việc chặn ILV bằng DNSTap và BGP

Chủ đề này khá bị đánh đập, tôi biết. Ví dụ, có một điều tuyệt vời bài viết, nhưng chỉ phần IP của danh sách chặn mới được xem xét ở đó. Chúng tôi cũng sẽ thêm tên miền.

Do tòa án và RKN chặn mọi thứ bên phải và bên trái, và các nhà cung cấp đang cố gắng hết sức để không rơi vào mức phạt do Revizorro đưa ra, nên tổn thất liên quan từ việc chặn là khá lớn. Và trong số các trang web bị chặn "hợp pháp" có rất nhiều trang hữu ích (xin chào, rutracker)

Tôi sống ngoài phạm vi quản lý của RKN, nhưng bố mẹ, người thân và bạn bè của tôi vẫn ở nhà. Vì vậy, người ta đã quyết định nghĩ ra một cách dễ dàng để những người ở xa CNTT có thể vượt qua việc chặn, tốt nhất là không có sự tham gia của họ.

Trong lưu ý này, tôi sẽ không mô tả những thứ cơ bản của mạng theo từng bước mà sẽ mô tả các nguyên tắc chung về cách triển khai sơ đồ này. Vì vậy, kiến ​​thức về cách thức hoạt động của mạng nói chung và Linux nói riêng là điều cần phải có.

Các loại ổ khóa

Đầu tiên, hãy làm mới trí nhớ của chúng ta về những gì đang bị chặn.

Có một số loại khóa trong XML chưa được tải từ RKN:

  • IP
  • Домен
  • URL

Để đơn giản, chúng tôi sẽ giảm chúng thành hai: IP và tên miền và chúng tôi sẽ chỉ rút tên miền khỏi việc chặn theo URL (chính xác hơn là họ đã làm điều này cho chúng tôi).

những người tốt từ Roskomsvoboda nhận ra một điều tuyệt vời API, thông qua đó chúng ta có thể có được những gì chúng ta cần:

Truy cập vào các trang web bị chặn

Để làm điều này, chúng tôi cần một số VPS nhỏ ở nước ngoài, tốt nhất là có lưu lượng truy cập không giới hạn - có nhiều VPS với giá 3-5 đô la. Bạn cần mang nó ở nước ngoài gần để ping không lớn lắm, nhưng một lần nữa, hãy lưu ý rằng Internet và địa lý không phải lúc nào cũng trùng khớp. Và vì không có SLA với giá 5 đô la, nên tốt hơn hết bạn nên lấy hơn 2 sản phẩm từ các nhà cung cấp khác nhau để có khả năng chịu lỗi.

Tiếp theo, chúng ta cần thiết lập một đường hầm được mã hóa từ bộ định tuyến máy khách đến VPS. Tôi sử dụng Wireguard là cách thiết lập nhanh nhất và dễ dàng nhất. Tôi cũng có bộ định tuyến máy khách dựa trên Linux (APU2 hoặc thứ gì đó trong OpenWRT). Trong trường hợp của một số Mikrotik/Cisco, bạn có thể sử dụng các giao thức có sẵn trên chúng như OpenVPN và GRE-over-IPSEC.

Xác định và chuyển hướng lưu lượng truy cập quan tâm

Tất nhiên, bạn có thể ngăn chặn tất cả lưu lượng truy cập Internet đi ra nước ngoài. Tuy nhiên, rất có thể, tốc độ làm việc với nội dung địa phương sẽ bị ảnh hưởng rất nhiều vì điều này. Ngoài ra, yêu cầu về băng thông trên VPS sẽ cao hơn nhiều.

Do đó, chúng ta sẽ cần phải phân bổ lưu lượng truy cập bằng cách nào đó đến các trang web bị chặn và hướng nó đến đường hầm một cách có chọn lọc. Ngay cả khi một số lưu lượng truy cập "thêm" đến đó, nó vẫn tốt hơn nhiều so với việc lái mọi thứ qua đường hầm.

Để quản lý lưu lượng, chúng tôi sẽ sử dụng giao thức BGP và thông báo các tuyến đến các mạng cần thiết từ VPS của chúng tôi cho khách hàng. Hãy coi BIRD là một trong những daemon BGP tiện lợi và hữu dụng nhất.

IP

Với việc chặn theo IP, mọi thứ đều rõ ràng: chúng tôi chỉ cần thông báo tất cả các IP bị chặn bằng VPS. Vấn đề là có khoảng 600 nghìn mạng con trong danh sách mà API trả về và phần lớn trong số đó là các máy chủ /32. Số lượng tuyến đường này có thể gây nhầm lẫn cho các bộ định tuyến máy khách yếu.

Do đó, khi xử lý danh sách, người ta quyết định tóm tắt lên mạng / 24 nếu nó có 2 máy chủ trở lên. Do đó, số lượng tuyến đường đã giảm xuống còn ~ 100 nghìn. Kịch bản cho việc này sẽ theo sau.

Tên miền

Nó phức tạp hơn và có một số cách. Ví dụ: bạn có thể cài đặt Squid trong suốt trên mỗi bộ định tuyến máy khách và thực hiện chặn HTTP ở đó cũng như xem xét quá trình bắt tay TLS để lấy URL được yêu cầu trong trường hợp đầu tiên và tên miền từ SNI trong trường hợp thứ hai.

Nhưng do tất cả các loại TLS1.3 + eSNI mới lạ, phân tích HTTPS ngày càng trở nên ít thực tế hơn. Có, và cơ sở hạ tầng phía máy khách đang trở nên phức tạp hơn - ít nhất bạn sẽ phải sử dụng OpenWRT.

Vì vậy, tôi quyết định đi theo con đường chặn phản hồi đối với các yêu cầu DNS. Ở đây, mọi DNS-over-TLS / HTTPS đều bắt đầu lơ lửng trên đầu bạn, nhưng chúng tôi có thể (hiện tại) kiểm soát phần này trên máy khách - hãy tắt nó hoặc sử dụng máy chủ của riêng bạn cho DoT / DoH.

Làm cách nào để chặn DNS?

Ở đây cũng vậy, có thể có một số cách tiếp cận.

  • Chặn lưu lượng DNS qua PCAP hoặc NFLOG
    Cả hai phương pháp chặn này đều được triển khai trong tiện ích sidmat. Nhưng nó đã lâu không được hỗ trợ và chức năng còn rất thô sơ nên bạn vẫn cần phải viết khai thác cho nó.
  • Phân tích nhật ký máy chủ DNS
    Thật không may, các bộ đệ quy mà tôi biết không thể ghi lại phản hồi mà chỉ ghi lại các yêu cầu. Về nguyên tắc, điều này là hợp lý, vì không giống như các yêu cầu, câu trả lời có cấu trúc phức tạp và rất khó để viết chúng ở dạng văn bản.
  • DNSTap
    May mắn thay, nhiều người trong số họ đã hỗ trợ DNSTap cho mục đích này.

DNSTap là gì?

Bỏ qua việc chặn ILV bằng DNSTap và BGP

Đây là giao thức máy khách-máy chủ dựa trên Bộ đệm giao thức và Luồng khung để chuyển từ máy chủ DNS sang bộ sưu tập các truy vấn và phản hồi DNS có cấu trúc. Về cơ bản, máy chủ DNS truyền siêu dữ liệu truy vấn và phản hồi (loại tin nhắn, IP máy khách/máy chủ, v.v.) cùng với các thông báo DNS hoàn chỉnh ở dạng (nhị phân) mà nó hoạt động với chúng qua mạng.

Điều quan trọng là phải hiểu rằng trong mô hình DNSTap, máy chủ DNS hoạt động như một máy khách và bộ thu thập hoạt động như một máy chủ. Nghĩa là, máy chủ DNS kết nối với bộ thu thập chứ không phải ngược lại.

Ngày nay DNSTap được hỗ trợ trong tất cả các máy chủ DNS phổ biến. Tuy nhiên, ví dụ, BIND trong nhiều bản phân phối (như Ubuntu LTS) thường được xây dựng vì lý do nào đó mà không có sự hỗ trợ của nó. Vì vậy, chúng ta đừng bận tâm đến việc lắp ráp lại mà hãy sử dụng một bộ đệ quy nhẹ hơn và nhanh hơn - Không ràng buộc.

Làm cách nào để bắt DNSTap?

một vài số Các tiện ích CLI để làm việc với luồng sự kiện DNSTap, nhưng chúng không phù hợp để giải quyết vấn đề của chúng tôi. Vì vậy, tôi quyết định phát minh ra chiếc xe đạp của riêng mình để làm được mọi thứ cần thiết: dnstap-bgp

Thuật toán làm việc:

  • Khi khởi chạy, nó tải danh sách các miền từ một tệp văn bản, đảo ngược chúng (habr.com -> com.habr), loại trừ các dòng bị hỏng, trùng lặp và tên miền phụ (tức là nếu danh sách chứa habr.com và www.habr.com, nó sẽ chỉ được tải cái đầu tiên) và xây dựng cây tiền tố để tìm kiếm nhanh qua danh sách này
  • Hoạt động như một máy chủ DNSTap, nó chờ kết nối từ máy chủ DNS. Về nguyên tắc, nó hỗ trợ cả socket UNIX và TCP, nhưng các máy chủ DNS mà tôi biết chỉ có thể sử dụng socket UNIX
  • Các gói DNSTap đến trước tiên được giải tuần tự hóa thành cấu trúc Protobuf, sau đó chính thông báo DNS nhị phân, nằm ở một trong các trường Protobuf, được phân tích cú pháp theo cấp độ của bản ghi DNS RR
  • Nó được kiểm tra xem máy chủ được yêu cầu (hoặc tên miền mẹ của nó) có nằm trong danh sách được tải hay không, nếu không, phản hồi sẽ bị bỏ qua
  • Chỉ các bản ghi A/AAAA/CNAME được chọn từ phản hồi và các địa chỉ IPv4/IPv6 tương ứng được trích xuất từ ​​chúng
  • Địa chỉ IP được lưu trữ với TTL có thể định cấu hình và được quảng cáo tới tất cả các BGP ngang hàng được định cấu hình
  • Khi nhận được phản hồi trỏ đến một IP đã được lưu trong bộ nhớ đệm, TTL của nó sẽ được cập nhật
  • Sau khi TTL hết hạn, mục nhập sẽ bị xóa khỏi bộ đệm và khỏi các thông báo BGP

Chức năng bổ sung:

  • Đọc lại danh sách tên miền của SIGHUP
  • Giữ bộ nhớ đệm đồng bộ với các phiên bản khác dnstap-bgp thông qua HTTP/JSON
  • Sao chép bộ đệm trên đĩa (trong cơ sở dữ liệu BoltDB) để khôi phục nội dung của nó sau khi khởi động lại
  • Hỗ trợ chuyển sang không gian tên mạng khác (lý do cần điều này sẽ được mô tả bên dưới)
  • Hỗ trợ IPv6

Hạn chế:

  • Tên miền IDN chưa được hỗ trợ
  • Ít cài đặt BGP

tôi đã thu thập RPM và DEB gói để cài đặt dễ dàng. Nên hoạt động trên tất cả các hệ điều hành tương đối gần đây với systemd. họ không có bất kỳ sự phụ thuộc nào.

Đề án

Vì vậy, hãy bắt đầu lắp ráp tất cả các thành phần lại với nhau. Kết quả là chúng ta sẽ có được cấu trúc liên kết mạng như thế này:
Bỏ qua việc chặn ILV bằng DNSTap và BGP

Tôi nghĩ logic của công việc đã rõ ràng từ sơ đồ:

  • Máy khách đã định cấu hình máy chủ của chúng tôi làm DNS và các truy vấn DNS cũng phải đi qua VPN. Điều này là cần thiết để nhà cung cấp không thể sử dụng tính năng chặn DNS để chặn.
  • Khi mở trang web, khách hàng sẽ gửi một truy vấn DNS như “IP của xxx.org là gì”
  • cởi ra giải quyết xxx.org (hoặc lấy nó từ bộ đệm) và gửi phản hồi đến khách hàng “xxx.org có IP như vậy và như vậy”, sao chép nó song song thông qua DNSTap
  • dnstap-bgp thông báo những địa chỉ này trong BIRD qua BGP nếu tên miền nằm trong danh sách bị chặn
  • BIRD quảng cáo tuyến đường đến các IP này với next-hop self bộ định tuyến máy khách
  • Các gói tiếp theo từ máy khách đến các IP này sẽ đi qua đường hầm

Trên máy chủ, đối với các tuyến đường đến các trang web bị chặn, tôi sử dụng một bảng riêng bên trong BIRD và nó không giao nhau với hệ điều hành theo bất kỳ cách nào.

Sơ đồ này có một nhược điểm: gói SYN đầu tiên từ máy khách rất có thể sẽ có thời gian để chuyển qua nhà cung cấp trong nước. lộ trình không được công bố ngay lập tức. Và ở đây có thể có các tùy chọn tùy thuộc vào cách nhà cung cấp thực hiện việc chặn. Nếu anh ta chỉ giảm lưu lượng truy cập thì không có vấn đề gì. Và nếu anh ta chuyển hướng nó đến một số DPI, thì (về mặt lý thuyết) các hiệu ứng đặc biệt có thể xảy ra.

Cũng có thể khách hàng không tôn trọng những điều kỳ diệu của DNS TTL, điều này có thể khiến khách hàng sử dụng một số mục nhập cũ từ bộ đệm đã hỏng thay vì yêu cầu Không giới hạn.

Trong thực tế, cả thứ nhất và thứ hai đều không gây ra vấn đề gì cho tôi, nhưng số dặm của bạn có thể thay đổi.

Điều chỉnh máy chủ

Để dễ lăn, tôi đã viết vai trò cho Ansible. Nó có thể định cấu hình cả máy chủ và máy khách dựa trên Linux (được thiết kế cho các bản phân phối dựa trên cơ sở gỡ lỗi). Tất cả các cài đặt khá rõ ràng và được đặt trong Inventory.yml. Vai trò này bị cắt khỏi sổ tay lớn của tôi nên có thể có lỗi - yêu cầu kéo chào mừng 🙂

Chúng ta hãy đi qua các thành phần chính.

bgp

Việc chạy hai daemon BGP trên cùng một máy chủ có một vấn đề cơ bản: BIRD không muốn thiết lập BGP ngang hàng với localhost (hoặc bất kỳ giao diện cục bộ nào). Từ từ nào cả. Việc tìm kiếm trên Google và đọc danh sách gửi thư không giúp ích gì, họ cho rằng đây là do thiết kế. Có lẽ có một số cách, nhưng tôi không tìm thấy nó.

Bạn có thể thử một daemon BGP khác, nhưng tôi thích BIRD và nó được tôi sử dụng ở mọi nơi, tôi không muốn tạo ra các thực thể.

Do đó, tôi đã ẩn dnstap-bgp bên trong không gian tên mạng, được kết nối với thư mục gốc thông qua giao diện veth: nó giống như một cái ống, các đầu của nó nhô ra trong các không gian tên khác nhau. Ở mỗi đầu này, chúng tôi treo các địa chỉ IP p2p riêng tư không vượt ra ngoài máy chủ, vì vậy chúng có thể là bất kỳ thứ gì. Đây là cơ chế tương tự được sử dụng để truy cập các tiến trình bên trong được mọi người yêu mến Docker và các container khác.

Đối với điều này nó đã được viết kịch bản và chức năng đã được mô tả ở trên để tự kéo tóc sang một không gian tên khác đã được thêm vào dnstap-bgp. Do đó, nó phải được chạy dưới quyền root hoặc được cấp cho tệp nhị phân CAP_SYS_ADMIN thông qua lệnh setcap.

Tập lệnh mẫu để tạo không gian tên

#!/bin/bash

NS="dtap"

IP="/sbin/ip"
IPNS="$IP netns exec $NS $IP"

IF_R="veth-$NS-r"
IF_NS="veth-$NS-ns"

IP_R="192.168.149.1"
IP_NS="192.168.149.2"

/bin/systemctl stop dnstap-bgp || true

$IP netns del $NS > /dev/null 2>&1
$IP netns add $NS

$IP link add $IF_R type veth peer name $IF_NS
$IP link set $IF_NS netns $NS

$IP addr add $IP_R remote $IP_NS dev $IF_R
$IP link set $IF_R up

$IPNS addr add $IP_NS remote $IP_R dev $IF_NS
$IPNS link set $IF_NS up

/bin/systemctl start dnstap-bgp

dnstap-bgp.conf

namespace = "dtap"
domains = "/var/cache/rkn_domains.txt"
ttl = "168h"

[dnstap]
listen = "/tmp/dnstap.sock"
perm = "0666"

[bgp]
as = 65000
routerid = "192.168.149.2"

peers = [
    "192.168.149.1",
]

chim.conf

router id 192.168.1.1;

table rkn;

# Clients
protocol bgp bgp_client1 {
    table rkn;
    local as 65000;
    neighbor 192.168.1.2 as 65000;
    direct;
    bfd on;
    next hop self;
    graceful restart;
    graceful restart time 60;
    export all;
    import none;
}

# DNSTap-BGP
protocol bgp bgp_dnstap {
    table rkn;
    local as 65000;
    neighbor 192.168.149.2 as 65000;
    direct;
    passive on;
    rr client;
    import all;
    export none;
}

# Static routes list
protocol static static_rkn {
    table rkn;
    include "rkn_routes.list";
    import all;
    export none;
}

rkn_routes.list

route 3.226.79.85/32 via "ens3";
route 18.236.189.0/24 via "ens3";
route 3.224.21.0/24 via "ens3";
...

DNS

Theo mặc định, trong Ubuntu, tệp nhị phân Không liên kết bị giới hạn bởi cấu hình AppArmor, điều này cấm nó kết nối với tất cả các loại ổ cắm DNSTap. Bạn có thể xóa hồ sơ này hoặc vô hiệu hóa nó:

# cd /etc/apparmor.d/disable && ln -s ../usr.sbin.unbound .
# apparmor_parser -R /etc/apparmor.d/usr.sbin.unbound

Điều này có lẽ nên được thêm vào playbook. Tất nhiên, việc sửa hồ sơ và cấp các quyền cần thiết là lý tưởng, nhưng tôi quá lười biếng.

không bị ràng buộc.conf

server:
    chroot: ""
    port: 53
    interface: 0.0.0.0
    root-hints: "/var/lib/unbound/named.root"
    auto-trust-anchor-file: "/var/lib/unbound/root.key"
    access-control: 192.168.0.0/16 allow

remote-control:
    control-enable: yes
    control-use-cert: no

dnstap:
    dnstap-enable: yes
    dnstap-socket-path: "/tmp/dnstap.sock"
    dnstap-send-identity: no
    dnstap-send-version: no

    dnstap-log-client-response-messages: yes

Tải xuống và xử lý danh sách

Tập lệnh tải xuống và xử lý danh sách địa chỉ IP
Nó tải xuống danh sách, tính tổng tiền tố pfx. Trong không_thêm и không_tóm tắt bạn có thể yêu cầu IP và mạng bỏ qua hoặc không tóm tắt. Tôi cần nó. mạng con VPS của tôi nằm trong danh sách chặn 🙂

Điều buồn cười là API RosKomSvoboda chặn các yêu cầu bằng tác nhân người dùng Python mặc định. Có vẻ như cậu bé kịch bản đã hiểu rồi. Vì vậy, chúng tôi đổi nó thành Ognelis.

Cho đến nay, nó chỉ hoạt động với IPv4. Tỷ trọng của IPv6 tuy nhỏ nhưng sẽ dễ khắc phục. Trừ khi bạn cũng phải sử dụng bird6.

rkn.py

#!/usr/bin/python3

import json, urllib.request, ipaddress as ipa

url = 'https://api.reserve-rbl.ru/api/v2/ips/json'
pfx = '24'

dont_summarize = {
    # ipa.IPv4Network('1.1.1.0/24'),
}

dont_add = {
    # ipa.IPv4Address('1.1.1.1'),
}

req = urllib.request.Request(
    url,
    data=None, 
    headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
    }
)

f = urllib.request.urlopen(req)
ips = json.loads(f.read().decode('utf-8'))

prefix32 = ipa.IPv4Address('255.255.255.255')

r = {}
for i in ips:
    ip = ipa.ip_network(i)
    if not isinstance(ip, ipa.IPv4Network):
        continue

    addr = ip.network_address

    if addr in dont_add:
        continue

    m = ip.netmask
    if m != prefix32:
        r[m] = [addr, 1]
        continue

    sn = ipa.IPv4Network(str(addr) + '/' + pfx, strict=False)

    if sn in dont_summarize:
        tgt = addr
    else:
        tgt = sn

    if not sn in r:
        r[tgt] = [addr, 1]
    else:
        r[tgt][1] += 1

o = []
for n, v in r.items():
    if v[1] == 1:
        o.append(str(v[0]) + '/32')
    else:
        o.append(n)

for k in o:
    print(k)

Tập lệnh để cập nhật
Tôi chạy nó trên vương miện mỗi ngày một lần, có lẽ đáng để kéo nó sau mỗi 4 giờ. Theo tôi, đây là khoảng thời gian gia hạn mà RKN yêu cầu từ các nhà cung cấp. Ngoài ra, họ còn có một số biện pháp chặn siêu khẩn cấp khác, có thể đến nhanh hơn.

Thực hiện như sau:

  • Chạy tập lệnh đầu tiên và cập nhật danh sách các tuyến đường (rkn_routes.list) cho BIRD
  • Tải lại BIRD
  • Cập nhật và dọn dẹp danh sách miền cho dnstap-bgp
  • Tải lại dnstap-bgp

rkn_update.sh

#!/bin/bash

ROUTES="/etc/bird/rkn_routes.list"
DOMAINS="/var/cache/rkn_domains.txt"

# Get & summarize routes
/opt/rkn.py | sed 's/(.*)/route 1 via "ens3";/' > $ROUTES.new

if [ $? -ne 0 ]; then
    rm -f $ROUTES.new
    echo "Unable to download RKN routes"
    exit 1
fi

if [ -e $ROUTES ]; then
    mv $ROUTES $ROUTES.old
fi

mv $ROUTES.new $ROUTES

/bin/systemctl try-reload-or-restart bird

# Get domains
curl -s https://api.reserve-rbl.ru/api/v2/domains/json -o - | jq -r '.[]' | sed 's/^*.//' | sort | uniq > $DOMAINS.new

if [ $? -ne 0 ]; then
    rm -f $DOMAINS.new
    echo "Unable to download RKN domains"
    exit 1
fi

if [ -e $DOMAINS ]; then
    mv $DOMAINS $DOMAINS.old
fi

mv $DOMAINS.new $DOMAINS

/bin/systemctl try-reload-or-restart dnstap-bgp

Chúng được viết mà không cần suy nghĩ nhiều, vì vậy nếu bạn thấy điều gì đó có thể được cải thiện - hãy thực hiện nó.

thiết lập máy khách

Ở đây tôi sẽ đưa ra các ví dụ về bộ định tuyến Linux, nhưng trong trường hợp của Mikrotik / Cisco thì điều đó thậm chí còn dễ dàng hơn.

Đầu tiên, chúng tôi thiết lập BIRD:

chim.conf

router id 192.168.1.2;
table rkn;

protocol device {
    scan time 10;
};

# Servers
protocol bgp bgp_server1 {
    table rkn;
    local as 65000;
    neighbor 192.168.1.1 as 65000;
    direct;
    bfd on;
    next hop self;
    graceful restart;
    graceful restart time 60;
    rr client;
    export none;
    import all;
}

protocol kernel {
    table rkn;
    kernel table 222;
    scan time 10;
    export all;
    import none;
}

Như vậy, chúng ta sẽ đồng bộ các tuyến nhận được từ BGP với bảng định tuyến kernel số 222.

Sau đó, chỉ cần yêu cầu kernel xem tấm này trước khi nhìn vào tấm mặc định là đủ:

# ip rule add from all pref 256 lookup 222
# ip rule
0:  from all lookup local
256:    from all lookup 222
32766:  from all lookup main
32767:  from all lookup default

Mọi thứ vẫn còn là cấu hình DHCP trên bộ định tuyến để phân phối địa chỉ IP đường hầm của máy chủ dưới dạng DNS và sơ đồ đã sẵn sàng.

Hạn chế

Với thuật toán hiện tại để tạo và xử lý danh sách tên miền, nó bao gồm, trong số những thứ khác, youtube.com và CDN của nó.

Và điều này dẫn đến thực tế là tất cả các video sẽ đi qua VPN, điều này có thể làm tắc nghẽn toàn bộ kênh. Có lẽ đáng để biên soạn một danh sách các loại trừ tên miền phổ biến chặn RKN trong thời điểm hiện tại, can đảm rất mỏng. Và bỏ qua chúng khi phân tích cú pháp.

Kết luận

Phương pháp được mô tả cho phép bạn bỏ qua hầu hết mọi hoạt động chặn mà nhà cung cấp hiện đang triển khai.

Về nguyên tắc, dnstap-bgp có thể được sử dụng cho bất kỳ mục đích nào khác khi cần một số mức độ kiểm soát lưu lượng dựa trên tên miền. Chỉ cần lưu ý rằng ở thời đại của chúng ta, hàng nghìn trang web có thể tồn tại trên cùng một địa chỉ IP (ví dụ như sau một số Cloudflare), vì vậy phương pháp này có độ chính xác khá thấp.

Nhưng với nhu cầu vượt khóa thì như vậy là khá đủ.

Bổ sung, chỉnh sửa, yêu cầu kéo - chào mừng!

Nguồn: www.habr.com

Thêm một lời nhận xét