IT

Tạo ssh tunneling trên linux

Đăng vào ngày 12 Tháng Tám 2013 lúc 09:36 bởi Duy Khánh Mục: IT, Unix/Linux  ||  Tags: , , ,    Bình luận (0)

Debian/Ubuntu:

# apt-get instal autossh

# /usr/bin/autossh -L 192.168.1.110:25:localhost:25 khanh@remoteserver.com -p 22 -N -f

 

Centos/RHEL:

# yum install autossh

# /usr/bin/autossh -M29001 -f -N -L192.168.1.110:25:localhost:25 khanh@remoteserver.com -p 22

 

Usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]

Khắc phục tình trạng Zenoss báo device down

Đăng vào ngày 7 Tháng Tám 2013 lúc 21:32 bởi Duy Khánh Mục: IT, Troubleshooting, Unix/Linux  ||  Tags: , , , ,    Bình luận (0)

Đối với phiên bản Zenoss 4, việc kiểm tra up/down của một thiết bị được thực hiện bằng nmap. Trong tài liệu tại http://nmap.org/nmap_doc.html có chỉ ra rằng "nmap tries to detect your primary interface and uses that address". Do vậy, việc Zenoss báo device down có thể quá trình thực thi của nmap đã detect sai interface, dẫn tới quá trình ping tới host đích không thành công. Hiện tại mình không thấy cập nhật nào của Zenoss fix lỗi này. Chúng ta có thể tự sửa bằng tay bằng việc cho nmap chọn đúng source ip lúc thực thi lệnh

Sửa file sau: 

# vi /opt/zenoss/Products/ZenStatus/nmap/NmapPingTask.py

Tìm hàm _executeNmapCmd và thêm vào nội dung args.extend(["-S", "dia_chi_ip_server_zenoss"])

 

Sau đó khởi động lại dịch vụ zenping để thay đổi có hiệu lực:

# su - zenoss

# zenping restart

Một số lệnh để kiểm tra:

- Lệnh nmap sử dụng và tự detect source address

# nmap -sn -PE -n --privileged --send-ip --initial-rtt-timeout 2 --min-rtt-timeout 2 --max-retries 0 -v -d --packet-trace 8.8.8.8

- Lệnh khi định ra một source address 

# nmap -S DIA_CHI_IP_NGUON -sn -PE -n --privileged --send-ip --initial-rtt-timeout 2 --min-rtt-timeout 2 --max-retries 0 -v -d --packet-trace 8.8.8.8

So sánh kết quả của lệnh trả về để giúp chúng ta tìm đúng source address cần đặt ở bên trên :)

Thay đổi mailman hostname

Đăng vào ngày 20 Tháng Bảy 2013 lúc 12:01 bởi Duy Khánh Mục: IT, Mail Server, Network Solution, Unix/Linux  ||  Tags: , , ,    Bình luận (1)

Khi migrate mailman từ server này sang server khác, có thể chúng ta gặp trường hợp mailman setup ở server mới nhận sai hostname --> email gửi đi với địa chỉ nguồn sai.

Để fix lại hostname theo ý muốn, chúng ta có thể sửa file mm_cfg.pyc trong mục /var/lib/mailman/Mailman với nội dung:

 

# Default domain for email addresses of newly created MLs

DEFAULT_EMAIL_HOST = 'lists.khanh.com.vn'

#-------------------------------------------------------------

# Default host for web interface of newly created MLs

DEFAULT_URL_HOST   = 'lists.khanh.com.vn'

#-------------------------------------------------------------

# Required when setting any of its arguments.

add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

-----

Chúng ta cần khởi động lại mailman sau khi thay đổi cấu hình

# service mailman restart

Kể từ đây, mailling list mới được tạo ra sẽ lấy theo hostname này. Đối với những list đã tạo trước đó, chúng ta có thể fix hostname bằng lệnh

# withlist -l -r fix_url test01 --urlhost=list.khanh.com.vn

 

Simple FTP Server With Python

Đăng vào ngày 27 Tháng Sáu 2013 lúc 16:39 bởi Duy Khánh Mục: IT  ||  Tags: ,    Bình luận (0)

 

The solution uses pyftpdlib package. To install the package is really simple:

$ easy_install pyftpdlib

or

$ pip install pyftpdlib

after that create the folowing script and save it as a python file:

from pyftpdlib.authorizers import DummyAuthorizer

from pyftpdlib.handlers import FTPHandler

from pyftpdlib.servers import FTPServer

authorizer = DummyAuthorizer()

authorizer.add_user("user", "password", "/home/user", perm="elradfmw")

authorizer.add_anonymous("/home/nobody")

handler = FTPHandler

handler.authorizer = authorizer

server = FTPServer(("0.0.0.0", 21), handler)

server.serve_forever()

Then run the script and try accessing your server using ftp.

Only 10 lines but it works like a charm, a very python way :)

If you want to download the script you can get it here.

Cấu hình Proxmox server sử dụng một Public IP cho tất cả VM

Đăng vào ngày 2 Tháng Sáu 2013 lúc 12:41 bởi Duy Khánh Mục: IT, Unix/Linux, Virtualization  ||  Tags: , ,    Bình luận (0)

I - Cài đặt và cấu hình Proxmox:

- Download file ISO tại trang chủ: http://www.proxmox.com

- Sau khi cài đặt thành công proxmox, chúng ta có thể truy cập vào giao diện web tại địa chỉ https://<ip-server>:8006

- Mặc định sau khi cài đặt xong Proxmox địa chỉ IP public sẽ được gán trên card vmbr0, card này được bridge với card eth0 của server. Chúng ta cần thay đổi một số thông tin tại đây.

/etc/network/interfaces

Địa chỉ IP public của server sẽ được gán trên card eth0. Đối với card vmbr0 chúng ta sẽ chuyển bridge_ports sang none (thay vì eth0) trước đó. Cấu hình mẫu như bên dưới

# network interface settings
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address  192.168.100.115
        netmask  255.255.255.0
        gateway  192.168.100.2
        dns-nameservers 8.8.8.8

auto vmbr0
iface vmbr0 inet static
        address  10.10.10.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0

Giả sử ở cấu hình trên, địa chỉ public của server sẽ là 192.168.100.115 được gán lên card eth0, còn địa chỉ 10.10.10.1 được gán trên card vmbr0 sẽ giao tiếp với các VM bên trong.

Trên giao diện web của Proxmox, thẻ network ta sẽ có thông tin như sau

Chúng ta cũng sẽ setup một VM để test. VM này sẽ có địa chỉ IP là 10.10.10.10.

 

II - Cài đặt và cấu hình shorewall

- Cài đặt shorewall bằng lệnh: apt-get install shorewall

- Kích hoạt Ip forwarding trên shorewall bằng cách mở file /etc/shorewall/shorewall.conf

Đổi

IP_FORWARDING=Off

Thành

IP_FORWARDING=On

- Cấu hình Zone trong file /etc/shorewall/zones. Chúng ta sẽ có 3 Zone fw, net, và dmz. Trong đó net là zone giao tiếp từ môi trường internet, dmz là zone nội bộ bên trong.

#ZONE   TYPE            OPTIONS         IN                      OUT
#                                       OPTIONS                 OPTIONS
fw      firewall
net     ipv4
dmz     ipv4

- Cho biết các zone được kết nối thông qua interface nào. Tạo file /etc/shorewall/interfaces

#ZONE   INTERFACE       BROADCAST       OPTIONS
net     eth0            detect          blacklist,nosmurfs
dmz     venet0          detect          routeback
dmz     vmbr0           detect          routeback,bridge

- Tiếp tục, chúng ta cấu hình các policy mặc định giữa các zone. Tạo file /etc/shorewall/policy

#SOURCE DEST    POLICY          LOG     LIMIT:          CONNLIMIT:
#                               LEVEL   BURST           MASK

# From Firewall Policy
fw      fw      ACCEPT
fw      net     ACCEPT
fw      dmz     ACCEPT

# From DMZ Policy

dmz     dmz     ACCEPT
dmz     net     ACCEPT
dmz     fw      DROP            info

# From Net Policy
net     fw      DROP            info
net     dmz     DROP            info 

# THE FOLLOWING POLICY MUST BE LAST
#
all     all     REJECT          info

- Thiết lập rules cho shorewall tại /etc/shorewall/rules

#ACTION          SOURCE     DEST       PROTO   DEST        SOURCE     ORIGINAL    RATE

# Permit access to SSH
SSH/ACCEPT       net        fw         -       -            -          -          6/min:5

# Permit access to Proxmox Manager and Console
ACCEPT           net        fw                        tcp     8006,5900:5999
# VM access rules DNAT net dmz:10.10.10.10:22 tcp 1022 # PING Rules Ping/ACCEPT all all # LAST LINE -- DO NOT REMOVE

Trong ví dụ về cấu hình rule ở trên, chúng ta cho phép SSH và ping tới Proxmox server. Ngoài ra, chúng ta còn thực hiện việc NAT port 22 trên VM. Với cấu hình này, nếu chúng ta muốn SSH tới VM từ bên ngoài internet, chúng ta có thể SSH thông qua public IP với port là 1022 (Cấu hình cho các dịch vụ khác tương tự).

- Thiết lập cho phép kết nối từ VM ra ngoài internet thông qua tệp tin /etc/shorewall/masq

#INTERFACE      SOURCE          ADDRESS         PROTO   PORT(S) IPSEC   MARK
eth0            10.10.10.0/24

# LAST LINE -- DO NOT REMOVE

- Kiểm tra cấu hình của shorewall đã đúng hay chưa

shorewall check
- Nếu mọi cấu hình đều OK, chúng ta kích hoạt cho phép Shorewall được khởi động
/etc/default/shorewall
- Khởi động Shorewall
service shorewall start
Chú ý: Nếu bạn SSH tới Proxmox server từ xa. Việc cấu hình sai shorewall có thể làm bạn bị mất kết nối khi khởi động dịch vụ shorewall. Để tránh tình trạng này, chúng ta có thể sử dụng lệnh sau để kiểm tra trước. Với lệnh này, shorewall sẽ chỉ apply cấu hình trong vòng 60 giây, sau thời gian đó, nó sẽ tự động khôi phục lại trạng thái trước đó.
shorewall try /etc/shorewall 60
Mọi cấu hình đã xong, bây giờ chúng ta có thể truy xất SSH tới VM bên trong thông qua ip public của Proxmox Server.

Install puppet on ubuntu server

Đăng vào ngày 26 Tháng Năm 2013 lúc 22:24 bởi Duy Khánh Mục: IT, Unix/Linux  ||  Tags: , ,    Bình luận (0)

Install puppet master

master$ sudo apt-get -y install puppetmaster

Regenerate Master Certificate

master$ sudo service puppetmaster stop

master$ sudo rm -r /var/lib/puppet/ssl

Add master’s name to config

master$ sudoedit /etc/puppet/puppet.conf

add these names under [master] heading

dns_alt_names = puppet, master.local, puppet.khanh.com.vn

Certificate is automatically generated when you start PuppetMaster

master$ sudo service puppetmaster start

Connect from Slave

slave$ sudo apt-get -y install puppet

slave$ sudoedit /etc/puppet/puppet.conf

Add master DNS name under [agent] heading. Puppet will connect to server.

[agent]

server = master.local

Allow puppet slave to start

slave$ sudoedit /etc/default/puppet

Change to yes:

START=yes

Sign Slave Certificate on Master

master$ sudo puppet cert --list

master$ sudo puppet cert --sign slave.example.com

Create Site Manifest and a Module

....

Test Slave get configuration from Master

slave$ sudo puppet agent --test

------------------------

Force agent to regenerate certificate request by generate command

 

[puppet agent]$ puppet  certificate   generate    web1  --ca-location  remote
warning: peer certificate won't be verified in this SSL session
err: Error 400 on SERVER: web1 already has a revoked certificate; ignoring certificate request
err: Try 'puppet help certificate generate' for usage
#It because the revoked certificate still exist in the server, it need to be deleted
[puppet master]$ puppet cert list –all
- web1                                     (BA:18:D1:86:D6:5E:9E:99:55:39:3D:67:79:BF:BD:D0) (certificate revoked)
[puppet master]$ puppet cert clean web1
#re-run the command, the warning is expected because the request hasn’t been signed by master yet
[puppet agent]$puppet certificate generate web1 --ca-location remote
warning: peer certificate won't be verified in this SSL session
true
#The pending request appears in master 
[puppet master]$ puppet cert list
web1 (3B:ED:D9:8D:2F:C2:A1:D3:89:B4:D0:FD:41:7E:5E:0C)
#Sign the certificate
[puppet master]# puppet cert sign web1

Error "Unable to read data from the Metabase. Ensure that Microsoft Internet Information Services is installed" while installing Exchange 2010 on W2K8

Đăng vào ngày 19 Tháng Năm 2013 lúc 11:17 bởi Duy Khánh Mục: IT, Mail Server, Windows Server, Troubleshooting  ||  Tags: ,    Bình luận (0)

 

PROBLEM DESCRIPTION:

While installing Exchange 2010 on Windows 2008 R2 some times admins can see two error messages

Errors:

- Unable to read data from the Metabase. Ensure that Microsoft Internet Information Services is installed.

- Unable to access the ‘Default Web Site’ on this computer.

CAUSE: Exchange 2010 Prerequisites are not met successfully

SOLUTION: One can follow Microsoft Article to make sure all prerequisites are met:

http://technet.microsoft.com/en-us/library/bb691354(EXCHG.140).aspx

If all common roles are being installed on one server as I had to do some time back for test environment following is what is needed to be executed from Windows Powershell (should be started with "Run As Administrator")

- Import-Module ServerManager

- Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression,NET-HTTP-Activation,RPC-Over-HTTP-Proxy -Restart

- Set-Service NetTcpPortSharing -StartupType Automatic

Install sysbench on CentOS

Đăng vào ngày 24 Tháng Tư 2013 lúc 22:45 bởi Duy Khánh Mục: IT, SQL, Unix/Linux  ||  Tags: , ,    Bình luận (0)

Download sysbench from: http://sourceforge.net/projects/sysbench/

Sysbench need mysql-devel installed

# yum install mysql-devel

Following commands to install sysbench

# aclocal

# libtoolize --force --copy

sysbench_installation_root_folder >  ./autogen.sh

sysbench_installation_root_folder > ./configure

sysbench_installation_root_folder > make

sysbench_installation_root_folder > make install 

 

Example: Benchmark MySQL

1. Create test table in database test with 1.000.000 records

# sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=mypassword prepare

2. Benchmark MySQL follow command

# sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=mypassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run

3. Clean up DB afterwards

# sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-password=mypassword cleanup

Chạy nhiều Tomcat instance trên cùng một server

Đăng vào ngày 28 Tháng Ba 2013 lúc 07:42 bởi Duy Khánh Mục: IT, Unix/Linux, Web Design  ||  Tags: , , ,    Bình luận (2)

B1: Cài đặt Tomcat

Cài đặt Tomcat phân chia thành các thư mục khác nhau, ví dụ /var/tomcat/serverA /var/tomcat/serverB. Trong đó các thư mục serverA, serverB cần có những thư mục nội dung và cấu hình sau: bin, lib, conf, logs, temp, webapps, work

Xem thêm: Cách cài đặt Tomcat7

B2: Thay đổi port

Mỗi Instance sẽ lắng nghe trên các port khác nhau, cần phải thay đổi để không bị xung đột. Có 3 port cần phải đổi là

  • shutdown port: Port này được dùng bở tiến trình java khi tomcat chạy. Khi script shutdown.sh được thực hiện, tomcat sẽ gửi tín hiện kết thúc thông qua port này. Ví dụ 8005
  • connector port: Port dùng để kết nối tới tomcat từ xa (trình duyệt). Ví dụ 8080
  • ajp port: Port dùng khi apache httpd server liên lạc với tomcat, sử dụng để tạo loadbalancer. Ví dụ: 8009

Bạn cần sử file conf/server.xml thay đổi port

B3: Tạo init script cho mỗi Instance

 

#!/bin/bash

    # description: Tomcat Start Stop Restart

    # processname: tomcat

    # chkconfig: 234 20 80

    JAVA_HOME=/usr/java/jdk1.7.0_17/

    export JAVA_HOME

    PATH=$JAVA_HOME/bin:$PATH

    export PATH

    CATALINA_HOME=/usr/share/tomcat7

 

    case $1 in

    start)

    sh $CATALINA_HOME/bin/startup.sh

    ;;

    stop)

    sh $CATALINA_HOME/bin/shutdown.sh

    ;;

    restart)

    sh $CATALINA_HOME/bin/shutdown.sh

    sh $CATALINA_HOME/bin/startup.sh

    ;;

    esac

    exit 0

 

------------------------

 

 

#!/bin/bash

    # description: Tomcat Start Stop Restart

    # processname: tomcat

    # chkconfig: 234 20 80

    JAVA_HOME=/usr/java/jdk1.7.0_17/

    export JAVA_HOME

    PATH=$JAVA_HOME/bin:$PATH

    export PATH

    CATALINA_BASE=/usr/share/tomcat7-new

 

    case $1 in

    start)

    sh $CATALINA_BASE/bin/startup.sh

    ;;

    stop)

    sh $CATALINA_BASE/bin/shutdown.sh

    ;;

    restart)

    sh $CATALINA_BASE/bin/shutdown.sh

    sh $CATALINA_BASE/bin/startup.sh

    ;;

    esac

    exit 0

Install Tomcat 7 on Centos 6.3

Đăng vào ngày 16 Tháng Ba 2013 lúc 07:46 bởi Duy Khánh Mục: IT, Unix/Linux, Web Design  ||  Tags: , , , ,    Bình luận (1)

This post will cover installing and basic configuration of apache-tomcat-7.0.30

If you do not already have the Java Development Kit (JDK) installed on your machine, you will need to download and install the required JDK for your platform.

If you do have the JDK installed, you can skip to: Step 2: Download and Install the  apache-tomcat-7.0.30

Step 1: Install the JDK
[root@station1 Downloads]# rpm -ivh jdk-7u7-linux-x64.rpm

--> 

[root@station1 Downloads]# JAVA_HOME=/usr/java/jdk1.7.0_17
[root@station1 Downloads]# export JAVA_HOME
[root@station1 Downloads]# PATH=$JAVA_HOME/bin:$PATH
[root@station1 Downloads]# export PATH 
[root@station1 Downloads]# vim /root/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
JAVA_HOME=/usr/java/jdk1.7.0_17/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
#PATH=$PATH:$HOME/bin
#export PATH
Restart or logout and login
[root@station1 Downloads]# echo $JAVA_HOME
/usr/java/jdk1.7.0_17/
       Step 2: Download and Unpack apache-tomcat-7.0.30 (or latest)
To download apache-tomcat click here
[root@station1 Downloads]# tar -xzvf apache-tomcat-7.0.30.tar.gz 
[root@station1 Downloads]# mv apache-tomcat-7.0.30 /usr/share/ 
[root@station1 Downloads]# vim /etc/init.d/tomcat 
    #!/bin/bash
    # description: Tomcat Start Stop Restart
    # processname: tomcat
    # chkconfig: 234 20 80
    JAVA_HOME=/usr/java/jdk1.7.0_17
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH
    CATALINA_HOME=/usr/share/apache-tomcat-7.0.30

    case $1 in
    start)
    sh $CATALINA_HOME/bin/startup.sh
    ;;
    stop)
    sh $CATALINA_HOME/bin/shutdown.sh
    ;;
    restart)
    sh $CATALINA_HOME/bin/shutdown.sh
    sh $CATALINA_HOME/bin/startup.sh
    ;;
    esac
    exit 0
[root@station1 ~]# chmod 755 /etc/init.d/tomcat
[root@station1 ~]# chkconfig --add tomcat
[root@station1 ~]# chkconfig --level 234 tomcat on
[root@station1 ~]# chkconfig --list tomcat
tomcat             0:off    1:off    2:on    3:on    4:on    5:off    6:off
[root@station1 ~]# service tomcat stop
Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_17
Using CLASSPATH:       /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
[root@station1 ~]# service tomcat start
Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_17
Using CLASSPATH:       /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
[root@station1 ~]# service tomcat restart
Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_17
Using CLASSPATH:       /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
Using CATALINA_BASE:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME:   /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_07
Using CLASSPATH:       /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
For logs

[root@station1 ~]# less /usr/share/apache-tomcat-7.0.30/logs/catalina.out
We can now access the Tomcat Manager page at http://127.0.0.1:8080
------------

Nghe nhạc cho vui

Ghi Chú

+ command "netstat -ano": IPs access

+ Restore dữ liệu trên SQLServer bằng dòng lệnh

RESTORE DATABASE db_name
FROM DISK = 'E:\db.BAK'
WITH REPLACE

+ Cover từ VB.NET sang C#

http://developerfusion.com/tools/convert/vb-to-csharp/

Certifications