banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vấn đề về Proxy server  XML
  [Guidance]   Vấn đề về Proxy server 06/10/2011 15:40:27 (+0700) | #1 | 248234
shuichi_akai
Elite Member

[Minus]    0    [Plus]
Joined: 12/10/2003 10:40:06
Messages: 161
Location: /home
Offline
[Profile] [PM]
Hi,

Mình đang có kế hoạch xây dựng một máy chủ Proxy cho công ty, mô hình hiện tại vẫn là Workgroup có thể xem như hình bên dưới. Default gateway là R1 được định tuyến theo kiểu: truy cập tới các máy nội bộ (10.0.0.0/8) thì tới R0, còn ra Internet thì qua R2. Trong đó R2 là Draytek multi-service router cung cấp DHCP, Internet load balancer, IPsec gateway, ...




Tất cả các máy con trong mạng LAN đều có quyền truy cập Internet và số lượng máy vào khoảng trăm PC, nên mình muốn xây dựng một Transparent server để không phải cấu hình proxy server trên từng máy con rất mất thời gian và không thuận tiện.

Vấn đề mình mong mọi người tư vấn là với mô hình mạng như này thì khi đặt Transparent proxy vào thì giải pháp phần mềm nào hiệu quả nhất? Và có phải định tuyến lại hay không? Khi đó thì các dịch vụ như mình kể trên sẽ bị ảnh hưởng như thế nào?

Mình đang bị rối nên có thể câu hỏi không được rõ ràng lắm, mong nhận được ý kiến của các bạn.
Xin cảm ơn.
[Up] [Print Copy]
  [Guidance]   Vấn đề về Proxy server 06/10/2011 22:51:04 (+0700) | #2 | 248251
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Nếu muốn transparent proxy thì chèn vào giữa con draytek và switch 1 cái server (dĩ nhiên, 2 card mạng, 1 vào sw và 1 vào draytek). Đơn giản nhất là chạy Linux và thiết lập iptables + squid để cache/filter.
Nhưng vì draytek còn làm việc nhiều hơn 1 cái router/NAT, là DHCP Server và có khi cả DNS Forwarder. Do đó 2 chức năng này phải chuyển qua con server đó để làm.
Còn về load balancer thì vẫn để con draytek làm. IP Sec VPN thì phải thay đổi 1 chút để thiết lập định tuyến của con Linux sao cho nó route được mạng nội bộ đến R0 (or R1) và ngược lại subnet VPN đầu xa đến R2. Draytek thay vì route mạng nội bộ đến R0 thì thay bằng đến server. Nếu giữa Draytek R2 và R0 hiện tại lại chạy định tuyến động (ví dụ RIP), thì có khi con Linux cũng phải lặp lại cái vai trò đó (cài RIP router daemon- lâu ko nhớ tên cái nào hay trên Linux).

Còn nếu cậu bỏ cái yêu cầu transparent đi, thì công việc đơn giản hơn (nhưng sẽ tốn công hơn): chỉ cần cài Linux + squid (or Win + ISA), thò 1 chân xuống mạng LAN (nghĩa là chỉ cần 1 lỗ mạng cắm vào sw). Sau đó đi config tất cả client trỏ proxy đến con đó là chạy được. Việc routing + IPSec VPN + DHCP... ko phải thay đổi gì cả. Có thể nếu bắt ép người dùng phải chạy proxy thì phải đặt mấy cái filter trên con Draytek sao cho chặn port 80 và 443 để mọi người ko đi trực tiếp được (và chỉ trừ IP của con proxy là đc chạy tất).
[Up] [Print Copy]
  [Guidance]   Vấn đề về Proxy server 07/10/2011 07:41:47 (+0700) | #3 | 248263
shuichi_akai
Elite Member

[Minus]    0    [Plus]
Joined: 12/10/2003 10:40:06
Messages: 161
Location: /home
Offline
[Profile] [PM]

myquartz wrote:
Nếu muốn transparent proxy thì chèn vào giữa con draytek và switch 1 cái server (dĩ nhiên, 2 card mạng, 1 vào sw và 1 vào draytek). Đơn giản nhất là chạy Linux và thiết lập iptables + squid để cache/filter.
Nhưng vì draytek còn làm việc nhiều hơn 1 cái router/NAT, là DHCP Server và có khi cả DNS Forwarder. Do đó 2 chức năng này phải chuyển qua con server đó để làm.
Còn về load balancer thì vẫn để con draytek làm. IP Sec VPN thì phải thay đổi 1 chút để thiết lập định tuyến của con Linux sao cho nó route được mạng nội bộ đến R0 (or R1) và ngược lại subnet VPN đầu xa đến R2. Draytek thay vì route mạng nội bộ đến R0 thì thay bằng đến server. Nếu giữa Draytek R2 và R0 hiện tại lại chạy định tuyến động (ví dụ RIP), thì có khi con Linux cũng phải lặp lại cái vai trò đó (cài RIP router daemon- lâu ko nhớ tên cái nào hay trên Linux).

Còn nếu cậu bỏ cái yêu cầu transparent đi, thì công việc đơn giản hơn (nhưng sẽ tốn công hơn): chỉ cần cài Linux + squid (or Win + ISA), thò 1 chân xuống mạng LAN (nghĩa là chỉ cần 1 lỗ mạng cắm vào sw). Sau đó đi config tất cả client trỏ proxy đến con đó là chạy được. Việc routing + IPSec VPN + DHCP... ko phải thay đổi gì cả. Có thể nếu bắt ép người dùng phải chạy proxy thì phải đặt mấy cái filter trên con Draytek sao cho chặn port 80 và 443 để mọi người ko đi trực tiếp được (và chỉ trừ IP của con proxy là đc chạy tất). 


Mình cũng nghĩ gần như vậy, do từ xưa con Draytek đã được giao cho chạy hơi nhiều dịch vụ nên khi thiết lập transparent proxy thì mình bị kẹt ở các dịch vụ của nó và định tuyến lại.

Tháng giờ kernel.org chưa phục hồi nữa nên mình cũng không có upgrade kernel được để làm thử Tproxy.

Thanks myquartz
[Up] [Print Copy]
  [Guidance]   Vấn đề về Proxy server 07/10/2011 14:21:28 (+0700) | #4 | 248290
cuti123
Member

[Minus]    0    [Plus]
Joined: 07/06/2011 23:59:01
Messages: 10
Offline
[Profile] [PM]
Squid là được đấy, dựng trước R2(tính từ trong ra), có thể cấu hình spanport
[Up] [Print Copy]
  [Guidance]   Vấn đề về Proxy server 18/10/2011 16:58:08 (+0700) | #5 | 248810
shuichi_akai
Elite Member

[Minus]    0    [Plus]
Joined: 12/10/2003 10:40:06
Messages: 161
Location: /home
Offline
[Profile] [PM]
Hi,

Mình không sử dụng Squid mà là Apache TrafficServer project, hiện tại đang test thử forward proxy thì thấy rất khả quan. Để làm transparent proxy thì mình route traffic 0.0.0.0/0 về con ATS này thay vì R2 như cũ, tất nhiên là ATS chỉ sử dụng 1 NIC, test với 2 NICs thì không hiểu sao không thể ping thấy bất cứ NIC nào (cả 2 chung subnet).

Trên con ATS này mình viết iptables rules để chuyển hướng các truy cập tới đích là http/https sẽ đi tới port đích là ATS:8080 và ATS:443, có thể tạm gọi là transparent proxy.

Code:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.7:8080
iptables -A FORWARD -p tcp -o eth0 -d 10.0.0.7 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 10.0.0.7:443
iptables -A FORWARD -p tcp -o eth0 -d 10.0.0.7 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


Đối với luồng HTTPS mình gán một cái self-signed certificate cho con ATS, khi người dùng truy cập một HTTPS website thì ATS sẽ đứng ra trung gian làm 2 lần 3-way handshake giữa user và host. Vì là self-signed cert nên khi truy cập https website thì browser sẽ cảnh báo unknown CA, nếu vẫn cố tình bỏ qua và chấp nhận thì vẫn không thể truy cập được https website.

Debug thấy thông báo lỗi như sau:
Code:
ERROR: SSL ERROR: SSL_ServerHandShake.
ERROR: SSL::5:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1093:SSL alert number 48


Mình thắc mắc là, nếu mình dùng một CA cert "xịn" thì có được chấp nhận không? Server có HandShake được bình thường không? Vì một cái SSL Cert cũng khá tốn kém.

Bật Wireshark lên xem thì khi mở https website thì chỉ liên tục thấy "TCP Keep-Alive" và "TCP Keep-Alive ACK", trên browser thì không thể tại được nội dung (Chắc tại Server HandShake SSL/TLS không được).

Một điều nữa là, đối với traffic HTTP, mọi thứ có vẻ bình thường: truy cập dễ dàng không vấn đề, nhưng kiểm tra thì không hề được cache (chắc chắn là mình đã bật tính năng cache control). Điều này không biết có nguyên nhân từ iptables không?

Rất mong nhận được góp ý của các bạn.
Thanks,
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|