<![CDATA[Latest posts for the topic "Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl 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
:PREROUTING ACCEPT [26:5297]
:POSTROUTING 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
]]>
/hvaonline/posts/list/44941.html#277352 /hvaonline/posts/list/44941.html#277352 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#277733 /hvaonline/posts/list/44941.html#277733 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl - 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 ]]>
/hvaonline/posts/list/44941.html#277760 /hvaonline/posts/list/44941.html#277760 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#277770 /hvaonline/posts/list/44941.html#277770 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#277772 /hvaonline/posts/list/44941.html#277772 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#277774 /hvaonline/posts/list/44941.html#277774 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

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)
]]>
/hvaonline/posts/list/44941.html#277833 /hvaonline/posts/list/44941.html#277833 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

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]]>
/hvaonline/posts/list/44941.html#277840 /hvaonline/posts/list/44941.html#277840 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl 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 ]]>
/hvaonline/posts/list/44941.html#278436 /hvaonline/posts/list/44941.html#278436 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl 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,]]> /hvaonline/posts/list/44941.html#278462 /hvaonline/posts/list/44941.html#278462 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl zinxu mô tả là có 1 IP public và 02 domain nằm tên 02 sever khác nhau Theo vd_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, 
]]>
/hvaonline/posts/list/44941.html#278465 /hvaonline/posts/list/44941.html#278465 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#278468 /hvaonline/posts/list/44941.html#278468 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

quanta wrote:
@lyphuong: Với Nginx, phần cấu hình cho def.com.vn trỏ về 2.119 đâu bạn? 
Mình có sửa lại, đây là phần cấu hình hiện tại 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;

upstream  abc.com.vn  {
        server   192.168.2.115:80;
}
server
{
        listen  192.168.1.2:80;
        server_name  abc.com.vn;
        location / {
                 proxy_pass        http://abc.com.vn;
                 include        /etc/nginx/conf.d/proxy.conf;
                 #proxy_set_header   Host             $host;
                 #proxy_set_header   X-Real-IP        $remote_addr;
                 #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}
upstream  def.com.vn  {
        server   192.168.2.119:80;
}
server
{
        listen  192.168.1.2:80;
        server_name  def.com.vn;
        location / {
                 proxy_pass        http://def.com.vn;
                 include        /etc/nginx/conf.d/proxy.conf;
                 #proxy_set_header   Host             $host;
                 #proxy_set_header   X-Real-IP        $remote_addr;
                 #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        
}

}
/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;
]]>
/hvaonline/posts/list/44941.html#278472 /hvaonline/posts/list/44941.html#278472 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#278542 /hvaonline/posts/list/44941.html#278542 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

vd_ wrote:
1. Thông báo lỗi của nginx là gì? 2. Bạn dùng upstream server1 {... } & upstream server2 {... } rồi reference đến server1 và server2 trong proxy_pass thay vì dùng full domain như hiện tại. Theo tui đoán thì khi bạn dùng proxy_pass http://def.com.vn; thì nginx không biết bạn muốn pass đến server def.com.vn thực tế hay phần upstream def.com.vn trước đó.  
Các tập tin log sao nó 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
Mình sửa lại upstream bằng tên và proxy_pass theo tên proxy_pass http://thuvien nhưng vẫn chưa có kết quả khả quan. 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;

upstream  apachephp  {
        server   192.168.2.115:80;
}
server
{
        listen  192.168.1.2:80;
        server_name  abc.com.vn;
        location / {
                 proxy_pass        http://apachephp;
                 include        /etc/nginx/conf.d/proxy.conf;
                 #proxy_set_header   Host             $host;
                 #proxy_set_header   X-Real-IP        $remote_addr;
                 #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}
upstream  thuvien  {
        server   192.168.2.119:80;
}
server
{
        listen  192.168.1.2:80;
        server_name  def.com.vn;
        location / {
                 proxy_pass        http://thuvien;
                 include        /etc/nginx/conf.d/proxy.conf;
                 #proxy_set_header   Host             $host;
                 #proxy_set_header   X-Real-IP        $remote_addr;
                 #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        
}

}
]]>
/hvaonline/posts/list/44941.html#278558 /hvaonline/posts/list/44941.html#278558 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#278589 /hvaonline/posts/list/44941.html#278589 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

vd_ wrote:
- khi vào 2 site bằng browser thì hiện ra cái gì? - dns đã trỏ abc.com.vn và def.com.vn vào 192.168.1.2 chưa? 
Vấn đề đã giải quyết được rồi, cám ơn vd_quanta đã định hướng và giúp đỡ cho mình hoàn thành vụ này. làm việc với mấy vụ này dễ bị điên wá ! Thank mọi người !]]>
/hvaonline/posts/list/44941.html#278794 /hvaonline/posts/list/44941.html#278794 GMT
Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl /hvaonline/posts/list/44941.html#278845 /hvaonline/posts/list/44941.html#278845 GMT Làm sao để thiết lập các WebServer trong Lan qua máy chủ Squid,Iptabl

vd_ wrote:
bạn nên chia sẻ thêm là bạn giải quyết như thế nào, các bạn khác cũng như tôi sẽ học hỏi được thêm các case để xử lý. 
Khi dns trỏ abc.com.vn và def.com.vn vào (2 máy chủ web) 192.168.115 và 192.168.2.119 các máy trong lan dùng browser truy cập vào 2 site (đi thẳng đến máy webserver) không đi qua máy nginx front end proxy (Các tập tin log nginx sẽ không ghi vào được dung lượng là 0) Khi dns trỏ abc.com.vn và def.com.vn vào 192.168.1.2 (máy nginx front end proxy, iptables) các máy trong lan dùng browser truy cập vào 2 site đi qua máy nginx front end proxy (Các tập tin log nginx nội dung sẽ được ghi) Đến thời điểm này phần cấu hình nginx hoạt động tốt (nginx.conf, proxy.conf ) Nhưng các browser từ bên ngoài Internet vẫn không truy cập 2 site với tên miền abc.com.vn và def.com.vn. Vấn đề xét đến các rule của iptables và đây là rule cuối cùng mình thêm thì các browser từ bên ngoài Internet truy cập 2 site. Code:
-A PREROUTING  -p tcp -dport 80 -j REDIRECT --to-ports 80
Rule này nó đè làm mất tác dụng các rule để transparent proxy with Squid Mình tóm lại trường hợp và cách giải quyết để các bạn tham khảo: (Public 2 site ở 2 server khác nhau qua Internet) - 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. Cài đặt và cấu hình server Firewall: 1. Squid để các máy trong lan truy cập Internet. 2. Cài đặt và cấu hình nginx (nginx multiple backend web servers) như trên. 3. Thiết lập rule cần thiết cho iptables và thêm rule. Code:
-A PREROUTING  -p tcp -dport 80 -j REDIRECT --to-ports 80
]]>
/hvaonline/posts/list/44941.html#278936 /hvaonline/posts/list/44941.html#278936 GMT