Unix/Linux

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

 

Convert Virtualbox vm to Proxmox KVM vm

Đăng vào ngày 20 Tháng Bảy 2013 lúc 08:18 bởi Duy Khánh Mục: Network Solution, Unix/Linux, Virtualization  ||  Tags: , ,    Bình luận (0)

 

Step 1: Convert .vdi (used by virtualbox vm) to .raw (used by kvm vm)

VBoxManage clonehd --format RAW util1.vdi util1.raw

Step 2:  Reduce the size of raw file by converting to .qcow file

qemu-img convert -f raw util1.raw -O qcow2 util1.qcow2

Step 3:  Using proxmox web GUI create new KVM vm

Step 4: qcow image will be put here: /var/lib/vz/images/106/util1.qcow

kvm vm configuration on proxmox will be located on: /etc/pve/nodes/hetzner2/qemu-server/106.conf

Edit the hard disk configuration line to use new images

 

Đọc tiếp...

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

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
------------

Fedora - How to change boot sequence in Grub2

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

his is for dual boot os users, there are many who prefers dual boot to keep another OS optional. For any reason if you wish to change boot sequence unlike grub, grub2 requires couple of commands to run.

Here will take example to keep Windows as default boot.
First of all find menuentry for Windows

cat/boot/grub2/grub.cfg |grep Windows

result:-

menuentry "Windows 7 (loader) (on /dev/sda1)"--class windows --class os {

Set Windows menuentry as default (only entry mentioned in either " or 'from above command)

grub2-set-default "Windows 7 (loader) (on /dev/sda1)"

Verify default entry

grub2-editenv list

Generate updated grub.cfg

grub2-mkconfig -o/boot/grub2/grub.cfg

Below is to set Fedora as default boot

cat /boot/grub2/grub.cfg |grep Fedora
grub2-set-default "Fedora Linux, with Linux 3.1.0-5.fc16.i686"
grub2-editenv list
grub2-mkconfig -o /boot/grub2/grub.cfg

 

 

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