[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
11/07/2013 15:46:01 (+0700) | #1 | 277352 |
lyphuong
Member
|
0 |
|
|
Joined: 31/01/2007 11:08:21
Messages: 30
Offline
|
|
Hiện tại từ Internet bên ngoài chỉ mới truy cập được vào website của WebServer1: 192.168.2.115 với tên miền là abc.com.vn
Hiện tại mình gặp vấn đề còn lại mong mọi người giúp đỡ, cám ơn mọi người
Chưa thiết lập được để Internet bên ngoài truy cập được vào website của WebServer2: 192.168.2.119 với tên miền là def.com.vn
Khi truy cập tên miền def.com.vn thì nó chạy vào nội dung website tên miền websever1: 192.168.2.115
Thiết lập mạng
Firewall: CentOS 6 gồm Iptables, squid
Eth0 (card mạng ngoài): 192.168.1.2
Eth1 (card mạng trong): 192.168.2.111
Các WebServer trong LAN, sử dụng mỗi tên miền cho website riêng
WebServer1: 192.168.2.115 (abc.com.vn)
WebServer2: 192.168.2.119 (def.com.vn)
Hiện tại cấu hình Iptables như sau:
Code:
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 192.168.1.2 -i eth0 -j DNAT --to 192.168.2.115:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 192.168.1.2 -i eth0 -j DNAT --to 192.168.2.119:80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -o eth0 -j SNAT --to 192.168.1.2
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 8080 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m udp -p tcp --dport 53 -j ACCEPT
Tập tin /etc/sysconfig/iptables
Code:
# Generated by iptables-save v1.4.7 on Thu Jul 11 16:46:05 2013
*nat
REROUTING ACCEPT [26:5297]
OSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [34:2040]
-A PREROUTING -d 192.168.1.2/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.115:80
-A PREROUTING -d 192.168.1.2/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.119:80
-A POSTROUTING -o eth0 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.1.2
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Jul 11 16:46:05 2013
# Generated by iptables-save v1.4.7 on Thu Jul 11 16:46:05 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [366:198764]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
COMMIT
# Completed on Thu Jul 11 16:46:05 2013
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
24/07/2013 22:47:46 (+0700) | #2 | 277733 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
- iptables hoạt động ở tầng nào? Trong khi đó cái hostname kia (def.com.vn) nằm ở tầng nào? Một request từ ngoài vào, đến 192.168.1.2, cổng 80 làm sao iptables biết chuyển nó đi đâu?
- Thứ tự xử lý các rules của iptables ra sao?
|
|
Let's build on a great foundation! |
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
25/07/2013 19:44:02 (+0700) | #3 | 277760 |
lyphuong
Member
|
0 |
|
|
Joined: 31/01/2007 11:08:21
Messages: 30
Offline
|
|
- iptables hoạt động ở tầng nào? Trong khi đó cái hostname kia (def.com.vn) nằm ở tầng nào? Một request từ ngoài vào, đến 192.168.1.2, cổng 80 làm sao iptables biết chuyển nó đi đâu?
- Thứ tự xử lý các rules của iptables ra sao?
Dù abc.com.vn hay def.com.vn đi vào nó đều phân giải thành cùng một IP do đó nó thực thi ưu tiên rule từ trên xuống
Code:
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 192.168.1.2 -i eth0 -j DNAT --to 192.168.2.115:80
Nên lúc nào nó cũng đi vào nội dung website tên miền websever1: 192.168.2.115
Quanta cho mình hỏi Có lẽ phải NAT thêm port 53 DNS cho nó để nó hiểu được là abc.com.vn hay def.com.vn để đi đúng vào hostname hỏng biết phải không để mai mình thử xem sao
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
26/07/2013 07:38:38 (+0700) | #4 | 277770 |
bigname
Member
|
0 |
|
|
Joined: 30/06/2013 21:04:48
Messages: 10
Offline
|
|
Trên firewall cùng 1 interface cùng 1 port làm sao nó phân biệt được request muốn tới webserver nào để mà forward? |
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
26/07/2013 07:49:41 (+0700) | #5 | 277772 |
lhthanh
Member
|
0 |
|
|
Joined: 22/07/2013 08:41:06
Messages: 5
Offline
|
|
theo mình nghĩ ở đây bạn nên dựng 1 dns server cho mạng LAN cũng như để phân giải các tên miền.
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
26/07/2013 08:21:52 (+0700) | #6 | 277774 |
vd_
Member
|
0 |
|
|
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
|
|
Tuỳ theo tên miền mà route traffic, như vậy việc quyết định route traffic là ở lớp application -> iptable không thể dùng được, phải dùng reverse proxy.
Squid có thể đươc, tuy không chuyên.
Thường người ta sẽ dùng nginx, mod_proxy, haproxy, varnish v.v... để làm việc này. |
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
28/07/2013 12:22:53 (+0700) | #7 | 277833 |
lyphuong
Member
|
0 |
|
|
Joined: 31/01/2007 11:08:21
Messages: 30
Offline
|
|
vd_ wrote:
Tuỳ theo tên miền mà route traffic, như vậy việc quyết định route traffic là ở lớp application -> iptable không thể dùng được, phải dùng reverse proxy.
Squid có thể đươc, tuy không chuyên.
Thường người ta sẽ dùng nginx, mod_proxy, haproxy, varnish v.v... để làm việc này.
Mình vẫn còn đang lây quây vấn đề này vấn chưa xong, vấn đề của mình một WebServer1 là HĐH Windows 2003, còn một WebServer2 CentOS 6
Code:
WebServer1: 192.168.2.115 (abc.com.vn)
WebServer2: 192.168.2.119 (def.com.vn)
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
28/07/2013 21:58:37 (+0700) | #8 | 277840 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
lyphuong wrote:
vấn đề của mình một WebServer1 là HĐH Windows 2003, còn một WebServer2 CentOS 6
Backend web servers chạy hệ điều hành nào không liên quan gì ở đây cả. Vấn đề là iptables không làm được điều mà bạn đang định làm (lý do thì mình và vd_ đã nói ở trên rồi).
Tuy nhiên, `squid` có thể làm được. Tham khảo: http://wiki.squid-cache.org/ConfigExamples/Reverse/MultipleWebservers |
|
Let's build on a great foundation! |
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
12/09/2013 13:21:16 (+0700) | #9 | 278436 |
lyphuong
Member
|
0 |
|
|
Joined: 31/01/2007 11:08:21
Messages: 30
Offline
|
|
Mình cố gắng tìm hiểu cấu hình cho được vụ này chứ hỏi hoài cũng hỏng ổn, mà lay hoay cũng chưa ra.
Theo quanta mình sử dụng squid cấu hình cho Webserver public vẫn chưa được, chưa tìm ra lỗi gì; và vd_ dùng nginx vẫn chưa được
Code:
cache_peer 192.168.2.115 parent 80 0 no-query originserver name=centos6
cache_peer_domain centos6 abc.com.vn
cache_peer 192.168.2.119 parent 80 0 no-query originserver name=servertv
cache_peer_domain servertv def.com.vn
Mình sử dụng nginx cấu hình vẫn không được: nginx.conf
Firewall: CentOS 6 gồm Iptables, squid
Eth0 (card mạng ngoài): 192.168.1.2
Eth1 (card mạng trong): 192.168.2.111
WebServer1: 192.168.2.115 (abc.com.vn) vì mình hỏng dám đưa tên miền thật lên trong file cấu hình
Code:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
## Basic reverse proxy server ##
## Apache backend for abc.com.vn ##
upstream apachephp {
server 192.168.2.115:80;
}
## Start abc.com.vn##
server {
listen 192.168.1.2:80;
server_name abc.com.vn;
access_log /var/log/nginx/abc.com.vn.access.log main;
error_log /var/log/nginx/abc.com.vn.error.log;
#root /usr/share/nginx/html;
#index index.html index.htm;
## send request back to apache1 ##
location / {
proxy_pass http://apachephp;
include /etc/nginx/conf.d/proxy.conf;
}
}
## End thongtinkhcn.vinhlong.gov.vn##
}
/etc/nginx/conf.d/proxy.conf
Code:
proxy_wwwect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
Các tập tin log không ghi vào được dung lượng là 0:
Code:
-rw-r--r--. 1 nginx root 0 Aug 20 21:09 access.log
-rw-r--r--. 1 nginx root 0 Aug 26 21:48 error.log
-rw-r--r--. 1 nginx root 0 Aug 21 15:09 abc.com.vn.access.log
-rw-r--r--. 1 nginx root 0 Aug 21 15:09 abc.com.vn.error.log
Mình sử dụng nginx reverse proxy websever backends trong nội bộ LAN thì truy cập được không không thể public ra ngoài Internet
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
15/09/2013 16:46:22 (+0700) | #10 | 278462 |
zinxu
Member
|
0 |
|
|
Joined: 16/06/2011 01:27:50
Messages: 13
Offline
|
|
Tôi chưa đọc đến phần IPtables, nhưng vì bạn không đề cập đến public IP nên tôi muốn hỏi lại để làm rõ đề bài.
Tôi hiểu đề bài như dưới đây, không biết có đúng không?
- Bạn có 01 public IP
- Và 02 domain (ABC và XYZ) cùng map về Public IP ở trên
- Mỗi domain nằm trên 1 server khác nhau.
Vấn đề:
- Từ Internet vào ABC hay XYZ luôn bị lấy dữ liệu của domain ABC
Nếu như tôi hiểu đúng đề bài, thì về nguyên tắc phải có thiết bị/phần mềm hiểu được HTTP request: để tiếp nhận và từ đó chuyển tiếp yêu cầu đến đúng đích. Theo tôi, ý của bạn vd_ ở trên là đúng hướng rồi. Vấn đề chính không phải là firewall hay hệ điều hành, mà là phân tích được thông tin về domain trong gói tin HTTP để chuyển tiếp.
Chúc bạn thành công, |
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
16/09/2013 14:06:27 (+0700) | #11 | 278465 |
lyphuong
Member
|
0 |
|
|
Joined: 31/01/2007 11:08:21
Messages: 30
Offline
|
|
Tình trạng của mình đúng như bạn zinxu mô tả là có 1 IP public và 02 domain nằm tên 02 sever khác nhau
Theo vd_ và quanta dùng squid hoặc nginx để giải quyết trường hợp của mình.
Mình đã dùng squid hoặc nginx để cấu hình nhưng chưa thành công, không biết lỗi gì trong tập tin cấu hình.
zinxu wrote:
Tôi chưa đọc đến phần IPtables, nhưng vì bạn không đề cập đến public IP nên tôi muốn hỏi lại để làm rõ đề bài.
Tôi hiểu đề bài như dưới đây, không biết có đúng không?
- Bạn có 01 public IP
- Và 02 domain (ABC và XYZ) cùng map về Public IP ở trên
- Mỗi domain nằm trên 1 server khác nhau.
Vấn đề:
- Từ Internet vào ABC hay XYZ luôn bị lấy dữ liệu của domain ABC
Nếu như tôi hiểu đúng đề bài, thì về nguyên tắc phải có thiết bị/phần mềm hiểu được HTTP request: để tiếp nhận và từ đó chuyển tiếp yêu cầu đến đúng đích. Theo tôi, ý của bạn vd_ ở trên là đúng hướng rồi. Vấn đề chính không phải là firewall hay hệ điều hành, mà là phân tích được thông tin về domain trong gói tin HTTP để chuyển tiếp.
Chúc bạn thành công,
|
|
|
|
|
[Question] Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl |
17/09/2013 08:56:28 (+0700) | #12 | 278468 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
@lyphuong: Với Nginx, phần cấu hình cho def.com.vn trỏ về 2.119 đâu bạn? |
|
Let's build on a great foundation! |
|
|