Tôi có mạng sau:
.________. ._______.
| vm-cli | <==> <vi1s0| vm-gw |enp2s0> <==> internet
·--------· ·-------·
vm-cli có địa chỉ 192.168.255.2; enp1s0@vm-gw có 192.168.255.1; enp2s0@vm-gw, không thành vấn đề.
tôi muốn tất cả các lưu lượng truy cập internet để đi qua Tor. Để làm được điều đó, tôi định cấu hình Tor để sử dụng ổ cắm trong suốt và sử dụng định tuyến chính sách để chuyển tiếp lưu lượng truy cập tới nó.Trước tiên, tôi thêm một quy tắc định tuyến và xác định một bảng định tuyến thay thế để định tuyến mọi thứ tới máy chủ cục bộ:
quy tắc ip thêm fwmark 1 bảng 1
tuyến ip thêm cục bộ 0.0.0.0/0 dev lo bảng 1
Sau đó, tôi định cấu hình tường lửa đầu tiên để chuyển hướng vm-gw
xuất ra proxy:
bảng proxy {
# chuyển lưu lượng được chuyển hướng đến proxy
chuyển hướng chuỗi {
loại filter hook prerouting bộ lọc ưu tiên; chính sách chấp nhận;
giao thức ip tcp đánh dấu 1 tproxy thành: 9040
}
}
bảng cục bộ {
# sử dụng NAT đích cho lưu lượng DNS vì nó không hoạt động với tproxy
chuỗi dstNAT {
gõ nat hook đầu ra ưu tiên mangle; chính sách chấp nhận;
udp dport tên miền chuyển hướng đến: 9053
}
# đánh dấu tất cả lưu lượng truy cập không phải Tor đi đến giao diện được kết nối internet để được định tuyến lại
định tuyến lại chuỗi {
loại mangle ưu tiên đầu ra của route hook; chính sách chấp nhận;
oif enp2s0 skuid != tor ip giao thức tcp meta mark set 1
}
}
Đẹp, tôi kiểm tra nó với đào
và Xoăn
: mọi thứ đều đi qua Tor.
Cái gì không hoạt động
Bây giờ tôi thêm quy tắc sau để chuyển hướng lưu lượng truy cập từ vm-cli
hoặc bất kỳ máy chủ nào khác sử dụng vm-gw
như cổng:
bảng điều khiển từ xa {
định tuyến lại chuỗi {
gõ nat hook prerouting ưu tiên mangle; chính sách chấp nhận;
# lưu lượng truy cập DNS NAT'ing đích
udp dport tên miền chuyển hướng đến: 9053
# đánh dấu lưu lượng truy cập tcp từ enp1s0 cho định tuyến chính sách
iif enp1s0 giao thức ip tcp meta mark set 1
}
}
Tôi thử thực hiện một truy vấn DNS, nó hoạt động. Tôi cố gắng thực hiện một yêu cầu HTTP nhưng không có câu trả lời...
theo dõi các gói tin
Theo dõi các gói và xem nhật ký Tor, tôi có thể thấy điều đó vm-cli
Lưu lượng TCP đến Tor. Nhưng mà Xoăn
trên vm-cli
có vẻ như nó không thấy bất kỳ câu trả lời HTTP nào.
Vì vậy, tôi cố gắng theo dõi phản hồi của máy chủ HTTP. Vì nó đến từ Tor nên tôi sẽ không thấy bất kỳ lưu lượng HTTP nào trong đầu vào, nhưng tôi sẽ thấy nó trong vm-gw
đầu ra. Sau đó, tôi thêm quy tắc sau để theo dõi:
bảng cục bộ {
đầu ra chuỗi {
loại móc bộ lọc đầu ra bộ lọc ưu tiên; chính sách chấp nhận;
tcp sport 80 ip Daddr 192.168.255.2 meta nftrace tập 1
}
[â¦]
}
Đang làm cuộn tròn http://perdu.com
trên vm-cli
Tôi nhận được dấu vết sau trên vm-gw
:
theo dõi id 2fc29112 ip gói đầu ra cục bộ: oif "enp1s0" ip saddr 208.97.177.124 ip daddr 192.168.255.2 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 0 ip length 60 tcp sport 80 tcp dport 57082 tcp flags == 0x12 cửa sổ tcp 65160
theo dõi id 2fc29112 ip quy tắc đầu ra cục bộ tcp sport 80 ip daddr 192.168.255.2 meta nftrace set 1 (tiếp tục phán quyết)
theo dõi id 2fc29112 ip kết quả đầu ra cục bộ tiếp tục
theo dõi id 2fc29112 ip chấp nhận chính sách đầu ra cục bộ
Và ở đó, mọi thứ đều đúng với tôi... có câu trả lời từ máy chủ HTTP, đích đến là vm-cli
sử dụng enp1s0
giao diện.
Tôi cố gắng theo dõi gói tin trên vm-cli
. Ở đó chúng ta có thể thấy gói gửi đi và phản hồi của nó:
theo dõi id d9101d30 gói đầu ra của bộ lọc ip: oif "enp2s0" ip saddr 192.168.255.2 ip daddr 208.97.177.124 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 40142 ip length 60 tcp sport 57124 tcp dport 80 tcp flags == syn cửa sổ tcp 64240
theo dõi id d9101d30 quy tắc đầu ra của bộ lọc ip tcp dport 80 meta nftrace set 1 (tiếp tục phán quyết)
theo dõi id d9101d30 kết quả đầu ra của bộ lọc ip tiếp tục
theo dõi id d9101d30 chấp nhận chính sách đầu ra của bộ lọc ip
theo dõi id 51163d64 gói định tuyến trước bộ lọc ip: iif "enp2s0" ether saddr 52:54:00:bd:38:6d ether Daddr 52:54:00:f0:a2:51 ip saddr 208.97.177.124 ip daddr 192.168.255.2 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 0 chiều dài ip 60 tcp sport 80 tcp dport 57124 tcp flags == 0x12 tcp window 65160
theo dõi id 51163d64 quy tắc định tuyến trước bộ lọc ip meta nftrace set 1 (tiếp tục phán quyết)
dấu vết id 51163d64 phán quyết định tuyến trước bộ lọc ip tiếp tục
theo dõi id 51163d64 chính sách định tuyến trước bộ lọc ip chấp nhận
Tôi có thể thấy:
- một gói đi từ 192.168.255.2:57124 đến 208.97.177.124:80
- một câu trả lời từ 208.97.177.124:80 đến 192.168.255.2:57124
Địa chỉ và cổng khớp nhau⦠cuộn tròn --verbose
cho biết rằng kết nối đã được thiết lập, nhưng tại sao yêu cầu HTTP không nhận được bất kỳ câu trả lời nào?
mạng lưới
xác nhận với tôi rằng phản hồi HTTP không đến được ứng dụng. tôi cũng đã thử hi vọng
và với thiết lập tproxy, tôi nhận được các bản sao:
hping perdu.com --destport 80 --syn --count 10
HPING perdu.com (enp2s0 208.97.177.124): Bộ S, 40 tiêu đề + 0 byte dữ liệu
len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=64240 rtt=9,8 ms
len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=64240 rtt=9,8 ms
CÚP! len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=64240 rtt=1049,9 ms
len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=2 win=64240 rtt=9,8 ms
CÚP! len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=64240 rtt=1099,9 ms
len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=3 win=64240 rtt=29,8 ms
CÚP! len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=2 win=64240 rtt=1059,9 ms
CÚP! len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=64240 rtt=3120,0 ms
len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=4 win=64240 rtt=29,8 ms
CÚP! len=44 ip=208.97.177.124 ttl=64 DF id=0 sport=80 flags=SA seq=3 win=64240 rtt=1079,9 ms
--- perdu.com thống kê hping ---
Truyền 5 gói, nhận 10 gói, mất gói -100%
khứ hồi tối thiểu/trung bình/tối đa = 9,8/749,9/3120,0 mili giây