1 Preliminary Note
In this example I'm trying to redirect HTTP traffic (port 80) from the IP address 192.168.0.101 to the IP address 192.168.0.100.
Please note that rinetd is not able to redirect FTP because FTP requires more than one socket.
2 Installing And Configuring rinetd
To install rinetd, we simply run
apt-get install rinetd
rinetd's configuration file is /etc/rinetd.conf. To forward HTTP traffic from 192.168.0.101 to 192.168.0.100, we add the line 192.168.0.101 80 192.168.0.100 80:
vi /etc/rinetd.conf
#
# this is the configuration file for rinetd, the internet redirection server
#
# you may specify global allow and deny rules here
# only ip addresses are matched, hostnames cannot be specified here
# the wildcards you may use are * and ?
#
# allow 192.168.2.*
# deny 192.168.2.1?
#
# forwarding rules come here
#
# you may specify allow and deny rules after a specific forwarding rule
# to apply to only that forwarding rule
#
# bindadress bindport connectaddress connectport
192.168.0.101 80 192.168.0.100 80
# logging information
logfile /var/log/rinetd.log
# uncomment the following line if you want web-server style logfile format
# logcommon
Then we restart rinetd:
/etc/init.d/rinetd restart
Now run
netstat -tap
and you should see that rinetd is listening on port 80 (www):
server2:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:sunrpc *:* LISTEN 1956/portmap
tcp 0 0 server2.example.com:www *:* LISTEN 2485/rinetd
tcp 0 0 *:3025 *:* LISTEN 2347/rpc.statd
tcp 0 0 *:auth *:* LISTEN 2306/inetd
tcp 0 0 localhost.localdom:smtp *:* LISTEN 2294/exim4
tcp6 0 0 *:ssh *:* LISTEN 2326/sshd
tcp6 0 0 server2.example.com:ssh ::ffff:192.168.0.3:4776 ESTABLISHED2409/0
server2:~#
Now when you direct your browser to a web page on the IP address 192.168.0.101, it should receive that page from the server with the IP address 192.168.0.100.
Instead of specifiying the port numbers in /etc/rinetd.conf, you can also use the service names. The service names are stored in /etc/services, so when you open that file, you will see that the service for port 80 is named www on Debian.
grep 80 /etc/services
server2:~# grep 80 /etc/services
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
socks 1080/tcp # socks proxy server
socks 1080/udp
amanda 10080/tcp # amanda backup services
amanda 10080/udp
omirr 808/tcp omirrd # online mirror
omirr 808/udp omirrd
canna 5680/tcp # cannaserver
zope-ftp 8021/tcp # zope management by ftp
webcache 8080/tcp # WWW caching service
tproxy 8081/tcp # Transparent Proxy
omniorb 8088/tcp # OmniORB
omniorb 8088/udp
server2:~#
So you could use the following configuration in /etc/rinetd.conf, it has the same effect as the first one:
vi /etc/rinetd.conf
#
# this is the configuration file for rinetd, the internet redirection server
#
# you may specify global allow and deny rules here
# only ip addresses are matched, hostnames cannot be specified here
# the wildcards you may use are * and ?
#
# allow 192.168.2.*
# deny 192.168.2.1?
#
# forwarding rules come here
#
# you may specify allow and deny rules after a specific forwarding rule
# to apply to only that forwarding rule
#
# bindadress bindport connectaddress connectport
192.168.0.101 www 192.168.0.100 www
# logging information
logfile /var/log/rinetd.log
# uncomment the following line if you want web-server style logfile format
# logcommon
And to make rinetd listen on all IP addresses that are configured on the system where it is installed, we can use 0.0.0.0 as the bindaddress:
vi /etc/rinetd.conf
#
# this is the configuration file for rinetd, the internet redirection server
#
# you may specify global allow and deny rules here
# only ip addresses are matched, hostnames cannot be specified here
# the wildcards you may use are * and ?
#
# allow 192.168.2.*
# deny 192.168.2.1?
#
# forwarding rules come here
#
# you may specify allow and deny rules after a specific forwarding rule
# to apply to only that forwarding rule
#
# bindadress bindport connectaddress connectport
0.0.0.0 80 192.168.0.100 80
# logging information
logfile /var/log/rinetd.log
# uncomment the following line if you want web-server style logfile format
# logcommon
After you've restarted rinetd...
/etc/init.d/rinetd restart
... rinetd should now listen on all interfaces (*:www):
netstat -tap
server2:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:sunrpc *:* LISTEN 1956/portmap
tcp 0 0 *:www *:* LISTEN 2503/rinetd
tcp 0 0 *:3025 *:* LISTEN 2347/rpc.statd
tcp 0 0 *:auth *:* LISTEN 2306/inetd
tcp 0 0 localhost.localdom:smtp *:* LISTEN 2294/exim4
tcp 0 0 server2.example.com:www 192.168.0.3:4798 TIME_WAIT -
tcp6 0 0 *:ssh *:* LISTEN 2326/sshd
tcp6 0 148 server2.example.com:ssh ::ffff:192.168.0.3:4776 ESTABLISHED2409/0
server2:~#
http://www.deimos.fr/blocnotesinfo/images/c/cb/Port-Forwarding_With_rinetd_On_Debian_Etch.pdf
วันเสาร์ที่ 18 ธันวาคม พ.ศ. 2553
วันอังคารที่ 14 ธันวาคม พ.ศ. 2553
เก็บ Packet Install Ubuntu&Debian
sudo apt-get --print-uris --yes upgrade | grep ^\' | cut -d\' -f2 >mydownload.txt
wget --input-file mydownload.txt
wget --input-file mydownload.txt
วันพุธที่ 8 ธันวาคม พ.ศ. 2553
วันอังคารที่ 23 พฤศจิกายน พ.ศ. 2553
การสร้าง auto dj ใน shoutcast
การสร้าง auto dj ใน shoutcast
ไปเจอคำแนะนำใน thaihosttalk.com และค้นหาจาก google.com ได้รายละเอียดจากเว็บนี้ครับ http://www.packhuso.in.th/?p=73
จึง ลอก เนื้อหามาไว้ที่นี้ กัน ลืมครับ และเพื่อนๆ จะไ้ด้ใช้ประโยชน์ด้วย
*******************************
*********************************
ไปเจอคำแนะนำใน thaihosttalk.com และค้นหาจาก google.com ได้รายละเอียดจากเว็บนี้ครับ http://www.packhuso.in.th/?p=73
จึง ลอก เนื้อหามาไว้ที่นี้ กัน ลืมครับ และเพื่อนๆ จะไ้ด้ใช้ประโยชน์ด้วย
*******************************
*********************************
Download โปรแกรมสำหรับใช้งานได้ที่นี่
http://download.shoutcast.com/beta/sc_trans-Beta-Drop-5-2009_02_03.zip
หลังจาก Download เสร็จแล้วจะมีรายละเอียดการ Config โปรแกรม ดังนี้นคะรับ.
โฟลเดอร์ที่เก็บไฟล์ของผมนะครับ. (/streams/jvond_trans/)
music (โฟลเดอร์)
sc_trans (ไฟล์)
sc_trans.conf (ไฟล์)
trans.lst (ไฟล์)
______________________________
ลองดู Config ได้ตามด้านล่างนะครับ. (sc_trans.conf);
;; ENCODER OPTIONS
encoder=mp3
bitrate=96000
samplerate=44100
channels=2
;;; NETWORK OPTIONS
outprotocol=1
serverip=64.150.166.74
serverport=9000
password=XXXXXX
;;;; LOGGING OPTIONS:
;where does the log file go
logfile=/streams/jvond_trans/sc_trans.log
; 1 to do screen logging else 0
screenlog=1
;;;;;; METADATA CONTROL
; my stream name
streamtitle=JVonD Productions
; url related to my stream
streamurl=http://jvondproductions.com
; my genre
genre=trance
; other assorted stuff
;aim=myaimaddr
;irc=myirc
;icq=myicq
; register with yp
public=1
;;;; PLAYLIST CONTROL
; your playlist
playlistfile=/streams/jvond_trans/trans.lst
; by default we shuffle the playlist. Lets turn that off
shuffle = 0
; set our crossfade time to 2 seconds. zero means no xfade
xfade=2
; file must be at least 20 seconds or we don’t crossfade
xfadethreshold=20
; drop folder for priority playlists
playlists=/streams/jvond_trans/
; where finished priority playlists get copied
archive=/streams/jvond_trans/
;;; LIVE CAPTURE:
; don’t capture
capture=0
; set capture parameters
;capturedevice=Sound Blaster
;captureinput=Line-In
;capturesamplerate=44100
;capturechannels=2
;;;; DJ SUPPORT:
; dj listen port
djport=9016
; dj password
djpassword=XXXXXX
; idle time until auto-dump
autodumpsourcetime=30
; record dj broadcasts here
djbroadcasts=
;; REPLAY GAIN CONTROL:
applyreplaygain=0
calculatereplaygain=0
;;; OTHER:
adminport=5555
adminuser=admin
adminpassword=XXXXXX__________________________________
ข้อมูลในไฟล์ List นะครับ. (trans.lst);
/streams/jvond_trans/music/08_Measure.mp3
/streams/jvond_trans/music/09_DeEase.mp3
___________________________________
เสร็จแล้วสามารถสั่ง Run ได้ตามแบบด้านล่างเลยนะครับ.. (สำหรับ Linux ถ้าเป็น Windows ก็ ดับเบิ่ลคลิ๊กเอา)
[root@localhost jvond_trans]# ./sc_trans
หรือ
[root@localhost jvond_trans]#./sc_trans sc_config1.conf
สำหรับการโหลด Config ไฟล์อื่น
เพิ่มเติมครับ.
เมื่อสั่ง Run Auto DJ แล้ว Auto DJ จะทำงานเมื่อสถานะของ Server ไม่มีการเชื่อมต่อจาก DJ คนอื่นนะครับ. พูดง่ายๆ คือ ถ้าเราจัดรายการอยู่ Auto DJ จะไม่ทำงาน แต่พอเราออกปุ๊บมันจะทำงานเองเลย ครับ.
*********************************
*********************************
http://download.shoutcast.com/beta/sc_trans-Beta-Drop-5-2009_02_03.zip
หลังจาก Download เสร็จแล้วจะมีรายละเอียดการ Config โปรแกรม ดังนี้นคะรับ.
โฟลเดอร์ที่เก็บไฟล์ของผมนะครับ. (/streams/jvond_trans/)
music (โฟลเดอร์)
sc_trans (ไฟล์)
sc_trans.conf (ไฟล์)
trans.lst (ไฟล์)
______________________________
ลองดู Config ได้ตามด้านล่างนะครับ. (sc_trans.conf);
;; ENCODER OPTIONS
encoder=mp3
bitrate=96000
samplerate=44100
channels=2
;;; NETWORK OPTIONS
outprotocol=1
serverip=64.150.166.74
serverport=9000
password=XXXXXX
;;;; LOGGING OPTIONS:
;where does the log file go
logfile=/streams/jvond_trans/sc_trans.log
; 1 to do screen logging else 0
screenlog=1
;;;;;; METADATA CONTROL
; my stream name
streamtitle=JVonD Productions
; url related to my stream
streamurl=http://jvondproductions.com
; my genre
genre=trance
; other assorted stuff
;aim=myaimaddr
;irc=myirc
;icq=myicq
; register with yp
public=1
;;;; PLAYLIST CONTROL
; your playlist
playlistfile=/streams/jvond_trans/trans.lst
; by default we shuffle the playlist. Lets turn that off
shuffle = 0
; set our crossfade time to 2 seconds. zero means no xfade
xfade=2
; file must be at least 20 seconds or we don’t crossfade
xfadethreshold=20
; drop folder for priority playlists
playlists=/streams/jvond_trans/
; where finished priority playlists get copied
archive=/streams/jvond_trans/
;;; LIVE CAPTURE:
; don’t capture
capture=0
; set capture parameters
;capturedevice=Sound Blaster
;captureinput=Line-In
;capturesamplerate=44100
;capturechannels=2
;;;; DJ SUPPORT:
; dj listen port
djport=9016
; dj password
djpassword=XXXXXX
; idle time until auto-dump
autodumpsourcetime=30
; record dj broadcasts here
djbroadcasts=
;; REPLAY GAIN CONTROL:
applyreplaygain=0
calculatereplaygain=0
;;; OTHER:
adminport=5555
adminuser=admin
adminpassword=XXXXXX__________________________________
ข้อมูลในไฟล์ List นะครับ. (trans.lst);
/streams/jvond_trans/music/08_Measure.mp3
/streams/jvond_trans/music/09_DeEase.mp3
___________________________________
เสร็จแล้วสามารถสั่ง Run ได้ตามแบบด้านล่างเลยนะครับ.. (สำหรับ Linux ถ้าเป็น Windows ก็ ดับเบิ่ลคลิ๊กเอา)
[root@localhost jvond_trans]# ./sc_trans
หรือ
[root@localhost jvond_trans]#./sc_trans sc_config1.conf
สำหรับการโหลด Config ไฟล์อื่น
เพิ่มเติมครับ.
เมื่อสั่ง Run Auto DJ แล้ว Auto DJ จะทำงานเมื่อสถานะของ Server ไม่มีการเชื่อมต่อจาก DJ คนอื่นนะครับ. พูดง่ายๆ คือ ถ้าเราจัดรายการอยู่ Auto DJ จะไม่ทำงาน แต่พอเราออกปุ๊บมันจะทำงานเองเลย ครับ.
*********************************
*********************************
วันพฤหัสบดีที่ 18 พฤศจิกายน พ.ศ. 2553
ตัวอย่าง Script 5WAN (Wan ละ 4M) โหลดบาลานซ์ทั้ง 5 เส้น ไม่แยกเกมส์
ไฟล์ /etc/ppp/ip-up.d/0route
#!/bin/sh
droute=""
ppp101=`/sbin/ifconfig -a | grep "ppp101"`
if [ -n "$ppp101" ]; then
# echo "ppp101 is up"
status=`expr $status + 1`
ip route add default table 101 dev ppp101
ip route add default table 201 dev ppp101
IPWAN=`ip addr show ppp101 |grep inet |cut -d " " -f 6`
ip rule del prio 201
ip rule add from $IPWAN lookup 201 prio 201
droute="$droute nexthop dev ppp101 weight 4"
fi
ppp102=`/sbin/ifconfig -a | grep "ppp102"`
if [ -n "$ppp102" ]; then
# echo "ppp102 is up"
status=`expr $status + 2`
ip route add default table 102 dev ppp102
ip route add default table 202 dev ppp102
IPWAN=`ip addr show ppp102 |grep inet |cut -d " " -f 6`
ip rule del prio 202
ip rule add from $IPWAN lookup 202 prio 202
droute="$droute nexthop dev ppp102 weight 4"
fi
ppp103=`/sbin/ifconfig -a | grep "ppp103"`
if [ -n "$ppp103" ]; then
# echo "ppp103 is up"
status=`expr $status + 4`
ip route add default table 103 dev ppp103
ip route add default table 203 dev ppp103
IPWAN=`ip addr show ppp103 |grep inet |cut -d " " -f 6`
ip rule del prio 203
ip rule add from $IPWAN lookup 203 prio 203
droute="$droute nexthop dev ppp103 weight 4"
fi
ppp104=`/sbin/ifconfig -a | grep "ppp104"`
if [ -n "$ppp104" ]; then
# echo "ppp104 is up"
status=`expr $status + 8`
ip route add default table 104 dev ppp104
ip route add default table 204 dev ppp104
IPWAN=`ip addr show ppp104 |grep inet |cut -d " " -f 6`
ip rule del prio 204
ip rule add from $IPWAN lookup 204 prio 204
droute="$droute nexthop dev ppp104 weight 4"
fi
ppp105=`/sbin/ifconfig -a | grep "ppp105"`
if [ -n "$ppp105" ]; then
# echo "ppp105 is up"
status=`expr $status + 16`
ip route add default table 105 dev ppp105
ip route add default table 205 dev ppp105
IPWAN=`ip addr show ppp105 |grep inet |cut -d " " -f 6`
ip rule del prio 205
ip rule add from $IPWAN lookup 205 prio 205
droute="$droute nexthop dev ppp105 weight 4"
fi
if [ -n "$droute" ]; then
ip route del default
ip route del table 250 default
defroute="ip route add default equalize $droute"
defroute2="ip route add table 250 default equalize $droute"
`$defroute`
`$defroute2`
fi
ip route flush cache
#!/bin/sh
droute=""
ppp101=`/sbin/ifconfig -a | grep "ppp101"`
if [ -n "$ppp101" ]; then
# echo "ppp101 is up"
status=`expr $status + 1`
ip route add default table 101 dev ppp101
ip route add default table 201 dev ppp101
IPWAN=`ip addr show ppp101 |grep inet |cut -d " " -f 6`
ip rule del prio 201
ip rule add from $IPWAN lookup 201 prio 201
droute="$droute nexthop dev ppp101 weight 4"
fi
ppp102=`/sbin/ifconfig -a | grep "ppp102"`
if [ -n "$ppp102" ]; then
# echo "ppp102 is up"
status=`expr $status + 2`
ip route add default table 102 dev ppp102
ip route add default table 202 dev ppp102
IPWAN=`ip addr show ppp102 |grep inet |cut -d " " -f 6`
ip rule del prio 202
ip rule add from $IPWAN lookup 202 prio 202
droute="$droute nexthop dev ppp102 weight 4"
fi
ppp103=`/sbin/ifconfig -a | grep "ppp103"`
if [ -n "$ppp103" ]; then
# echo "ppp103 is up"
status=`expr $status + 4`
ip route add default table 103 dev ppp103
ip route add default table 203 dev ppp103
IPWAN=`ip addr show ppp103 |grep inet |cut -d " " -f 6`
ip rule del prio 203
ip rule add from $IPWAN lookup 203 prio 203
droute="$droute nexthop dev ppp103 weight 4"
fi
ppp104=`/sbin/ifconfig -a | grep "ppp104"`
if [ -n "$ppp104" ]; then
# echo "ppp104 is up"
status=`expr $status + 8`
ip route add default table 104 dev ppp104
ip route add default table 204 dev ppp104
IPWAN=`ip addr show ppp104 |grep inet |cut -d " " -f 6`
ip rule del prio 204
ip rule add from $IPWAN lookup 204 prio 204
droute="$droute nexthop dev ppp104 weight 4"
fi
ppp105=`/sbin/ifconfig -a | grep "ppp105"`
if [ -n "$ppp105" ]; then
# echo "ppp105 is up"
status=`expr $status + 16`
ip route add default table 105 dev ppp105
ip route add default table 205 dev ppp105
IPWAN=`ip addr show ppp105 |grep inet |cut -d " " -f 6`
ip rule del prio 205
ip rule add from $IPWAN lookup 205 prio 205
droute="$droute nexthop dev ppp105 weight 4"
fi
if [ -n "$droute" ]; then
ip route del default
ip route del table 250 default
defroute="ip route add default equalize $droute"
defroute2="ip route add table 250 default equalize $droute"
`$defroute`
`$defroute2`
fi
ip route flush cache
Script สำหรับ 3WAN , 4WAN , 5WAN สำหรับ MultiWAN Server
ไฟล์ /etc/ppp/ip-up.d/0route (ppp101 = Games , ppp102 + ppp103 = WEB)
#!/bin/bash
WAN1=0
WAN2=0
WAN3=0
ppp101=`/sbin/ifconfig -a | grep "ppp101"`
if [ -n "$ppp101" ]; then
# echo "ppp101 is up"
WAN1=1
ip route add default table 101 dev ppp101
ip route add default table 201 dev ppp101
IPWAN=`ip addr show ppp101 |grep inet |cut -d " " -f 6`
ip rule del prio 201
ip rule add from $IPWAN lookup 201 prio 201
fi
ppp102=`/sbin/ifconfig -a | grep "ppp102"`
if [ -n "$ppp102" ]; then
# echo "ppp102 is up"
WAN2=1
ip route add default table 102 dev ppp102
ip route add default table 202 dev ppp102
IPWAN=`ip addr show ppp102 |grep inet |cut -d " " -f 6`
ip rule del prio 202
ip rule add from $IPWAN lookup 202 prio 202
fi
ppp103=`/sbin/ifconfig -a | grep "ppp103"`
if [ -n "$ppp103" ]; then
# echo "ppp103 is up"
WAN3=1
ip route add default table 103 dev ppp103
ip route add default table 203 dev ppp103
IPWAN=`ip addr show ppp103 |grep inet |cut -d " " -f 6`
ip rule del prio 203
ip rule add from $IPWAN lookup 203 prio 203
fi
LinkStatus=$WAN1$WAN2$WAN3
if [ $LinkStatus -eq 111 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default equalize nexthop dev ppp102 weight 4 nexthop dev ppp103 weight 4
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp103
ip route add table 250 default equalize nexthop dev ppp102 weight 4 nexthop dev ppp103 weight 4
fi
if [ $LinkStatus -eq 011 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp103
ip route add table 101 default dev ppp102
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 101 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp103
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 110 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 102
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp102
ip route add table 250 default dev ppp102
fi
if [ $LinkStatus -eq 100 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp101
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp101
ip route add table 103 default dev ppp101
ip route add table 250 default dev ppp101
fi
if [ $LinkStatus -eq 010 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 102
ip route add table 101 default dev ppp102
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp102
ip route add table 250 default dev ppp102
fi
if [ $LinkStatus -eq 001 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 103
ip route add table 101 default dev ppp103
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 000 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
fi
ip route flush cache
#!/bin/bash
WAN1=0
WAN2=0
WAN3=0
ppp101=`/sbin/ifconfig -a | grep "ppp101"`
if [ -n "$ppp101" ]; then
# echo "ppp101 is up"
WAN1=1
ip route add default table 101 dev ppp101
ip route add default table 201 dev ppp101
IPWAN=`ip addr show ppp101 |grep inet |cut -d " " -f 6`
ip rule del prio 201
ip rule add from $IPWAN lookup 201 prio 201
fi
ppp102=`/sbin/ifconfig -a | grep "ppp102"`
if [ -n "$ppp102" ]; then
# echo "ppp102 is up"
WAN2=1
ip route add default table 102 dev ppp102
ip route add default table 202 dev ppp102
IPWAN=`ip addr show ppp102 |grep inet |cut -d " " -f 6`
ip rule del prio 202
ip rule add from $IPWAN lookup 202 prio 202
fi
ppp103=`/sbin/ifconfig -a | grep "ppp103"`
if [ -n "$ppp103" ]; then
# echo "ppp103 is up"
WAN3=1
ip route add default table 103 dev ppp103
ip route add default table 203 dev ppp103
IPWAN=`ip addr show ppp103 |grep inet |cut -d " " -f 6`
ip rule del prio 203
ip rule add from $IPWAN lookup 203 prio 203
fi
LinkStatus=$WAN1$WAN2$WAN3
if [ $LinkStatus -eq 111 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default equalize nexthop dev ppp102 weight 4 nexthop dev ppp103 weight 4
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp103
ip route add table 250 default equalize nexthop dev ppp102 weight 4 nexthop dev ppp103 weight 4
fi
if [ $LinkStatus -eq 011 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp103
ip route add table 101 default dev ppp102
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 101 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp103
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 110 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 102
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp102
ip route add table 250 default dev ppp102
fi
if [ $LinkStatus -eq 100 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp101
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp101
ip route add table 103 default dev ppp101
ip route add table 250 default dev ppp101
fi
if [ $LinkStatus -eq 010 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 102
ip route add table 101 default dev ppp102
ip route add table 102 default dev ppp102
ip route add table 103 default dev ppp102
ip route add table 250 default dev ppp102
fi
if [ $LinkStatus -eq 001 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
ip route add default dev ppp 103
ip route add table 101 default dev ppp103
ip route add table 102 default dev ppp103
ip route add table 103 default dev ppp103
ip route add table 250 default dev ppp103
fi
if [ $LinkStatus -eq 000 ]; then
ip route del default
ip route del table 101 default
ip route del table 102 default
ip route del table 103 default
ip route del table 250 default
fi
ip route flush cache
Multiwan Ubuntu
เริ่มจาก config pppoe
Ubuntu 8.04
########### STEP 1 ###########
apt-get install pppoeconf
########### STEP 2 ###########
pppoeconf eth0
poff dsl-provider
mv /etc/ppp/peers/dsl-provider /etc/ppp/peers/3bb-link
pppoeconf eth1
poff dsl-provider
mv /etc/ppp/peers/dsl-provider /etc/ppp/peers/true-link
########### STEP 3 ###########
nano /etc/ppp/peers/3bb-link
noipdefault
defaultroute
replacedefaultroute
usepeerdns
nano /etc/ppp/peers/true-link
noipdefault
#defaultroute
#replacedefaultroute
#usepeerdns
########### STEP 4 ###########
pon 3bb-link
poff 3bb-link
pon true-link
poff true-link
########### STEP 5 ###########
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth2
auto ppp101
iface ppp101 inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider 3bb-link
auto ppp102
iface ppp102 inet ppp
pre-up /sbin/ifconfig eth2 up # line maintained by pppoeconf
provider true-link
########### STEP 6 ###########
ifup ppp101
ifup ppp102
pon 3bb-link
pon true-link
########### STEP 7 ###########
nano /root/checklink.sh
#!/bin/bash
PATH=$PATH:/sbin
# Make sure ppp101 is still up
if [ "`ifconfig | grep ppp101`" == '' ]
then
sudo ifdown ppp101
sudo ifup ppp101
fi
# Make sure ppp102 is still up
if [ "`ifconfig | grep ppp102`" == '' ]
then
sudo ifdown ppp102
sudo ifup ppp102
fi
########### STEP 8 ###########
nano /etc/crontab
*/5 * * * * sh /root/checklink.sh
chmod +x /root/checklink.sh
########### STEP 9 Load Balance ###########
echo "101 3bb" /etc/iptables2/rt_tables
echo "102 true" /etc/iptables2/rt_tables
echo "200 LB" /etc/iptables2/rt_tables
ip rule add pref 101 fwmark 0x101 lookup 101
ip rule add pref 102 fwmark 0x102 lookup 102
ip rule add pref 200 fwmark 0x200 lookup 200
ip route del default
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 200 default equalize nexthop dev ppp101 weight 1 nexthop dev ppp102 weight 1
nano /etc/init.d/firewall.iptables
EXTIF="ppp+"
INTIF="eth2"
iptables -A INPUT -t mangle -i ppp101 -j CONNMARK --set-mark 0x101
iptables -A INPUT -t mangle -i ppp102 -j CONNMARK --set-mark 0x102
การตั้ง ppp ให้ตรงกับ interface ของ lan card บน Ubuntu 7.10
ให้แก้ไฟล์ /etc/ppp/peers/dsl-xxx
# Minimalistic default options file for DSL/PPPoE connections
noipdefault
#defaultroute
#replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
mtu 1432
#persist
maxfail 0
#holdoff 20
plugin rp-pppoe.so
nic-eth1 <---- กำหนด eth1
unit 1 <---- กำหนด ppp1
user "y74240000@goldcyber"
-----------------------------------------------
Ubuntu 8.04
########### STEP 1 ###########
apt-get install pppoeconf
########### STEP 2 ###########
pppoeconf eth0
poff dsl-provider
mv /etc/ppp/peers/dsl-provider /etc/ppp/peers/3bb-link
pppoeconf eth1
poff dsl-provider
mv /etc/ppp/peers/dsl-provider /etc/ppp/peers/true-link
########### STEP 3 ###########
nano /etc/ppp/peers/3bb-link
noipdefault
defaultroute
replacedefaultroute
usepeerdns
nano /etc/ppp/peers/true-link
noipdefault
#defaultroute
#replacedefaultroute
#usepeerdns
########### STEP 4 ###########
pon 3bb-link
poff 3bb-link
pon true-link
poff true-link
########### STEP 5 ###########
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth2
auto ppp101
iface ppp101 inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider 3bb-link
auto ppp102
iface ppp102 inet ppp
pre-up /sbin/ifconfig eth2 up # line maintained by pppoeconf
provider true-link
########### STEP 6 ###########
ifup ppp101
ifup ppp102
pon 3bb-link
pon true-link
########### STEP 7 ###########
nano /root/checklink.sh
#!/bin/bash
PATH=$PATH:/sbin
# Make sure ppp101 is still up
if [ "`ifconfig | grep ppp101`" == '' ]
then
sudo ifdown ppp101
sudo ifup ppp101
fi
# Make sure ppp102 is still up
if [ "`ifconfig | grep ppp102`" == '' ]
then
sudo ifdown ppp102
sudo ifup ppp102
fi
########### STEP 8 ###########
nano /etc/crontab
*/5 * * * * sh /root/checklink.sh
chmod +x /root/checklink.sh
########### STEP 9 Load Balance ###########
echo "101 3bb" /etc/iptables2/rt_tables
echo "102 true" /etc/iptables2/rt_tables
echo "200 LB" /etc/iptables2/rt_tables
ip rule add pref 101 fwmark 0x101 lookup 101
ip rule add pref 102 fwmark 0x102 lookup 102
ip rule add pref 200 fwmark 0x200 lookup 200
ip route del default
ip route add table 101 default dev ppp101
ip route add table 102 default dev ppp102
ip route add table 200 default equalize nexthop dev ppp101 weight 1 nexthop dev ppp102 weight 1
nano /etc/init.d/firewall.iptables
EXTIF="ppp+"
INTIF="eth2"
iptables -A INPUT -t mangle -i ppp101 -j CONNMARK --set-mark 0x101
iptables -A INPUT -t mangle -i ppp102 -j CONNMARK --set-mark 0x102
การตั้ง ppp ให้ตรงกับ interface ของ lan card บน Ubuntu 7.10
ให้แก้ไฟล์ /etc/ppp/peers/dsl-xxx
# Minimalistic default options file for DSL/PPPoE connections
noipdefault
#defaultroute
#replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
mtu 1432
#persist
maxfail 0
#holdoff 20
plugin rp-pppoe.so
nic-eth1 <---- กำหนด eth1
unit 1 <---- กำหนด ppp1
user "y74240000@goldcyber"
-----------------------------------------------
(Ubuntu)การติดตั้ง Webmin แบบใช้คำสั่ง apt-get
If you like to install and update Webmin via APT, edit the /etc/apt/sources.list file on your system and add the line :
deb http://download.webmin.com/download/repository sarge contrib
You should also fetch and install my GPG key with which the repository is signed, with the commands :
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
You will now be able to install with the commands :
apt-get update
apt-get install webmin
webmin All dependencies should be resolved automatically
deb http://download.webmin.com/download/repository sarge contrib
You should also fetch and install my GPG key with which the repository is signed, with the commands :
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
You will now be able to install with the commands :
apt-get update
apt-get install webmin
webmin All dependencies should be resolved automatically
ติดตั้ง lightsquid เพื่อดู access.log ของ Squid เหมือนกับ sarg
สำหรับ CentOS,fedora
Code
# wget http://sourceforge.net/projects/lightsquid/files/lightsquid/lightsquid-1.8.tgz
# tar -zxvf lightsquid-1.8.tgz
# mv lightsquid-1.8 /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# chmod +x *.cgi
# chmod +x *.pl
# chown -R apache:apache *
# echo "Config Httpd.conf";
# echo "#Add for Lightsquid Report" >> /etc/httpd/conf/httpd.conf
# echo "<Directory /var/www/html/lightsquid>" >> /etc/httpd/conf/httpd.conf
# echo "AddHandler cgi-script .cgi" >> /etc/httpd/conf/httpd.conf
# echo "AllowOverride All" >> /etc/httpd/conf/httpd.conf
# echo "</Directory>" >> /etc/httpd/conf/httpd.conf
# service httpd restart
# ./check-setup.pl
# ./lightparser.pl
# /var/www/html/lightsquid/lightparser.pl
# echo '5 4 * * * root /var/www/html/lightsquid/lightparser.pl' >> /etc/crontab
ดูรายงาน squid โดย [url]http://ip-server/lightsquid[/url]
[b]สำหรับ Debian, Ubuntu[/b]
Code
# apt-get install apache2 libgd-gd2-perl
# wget [url]http://sourceforge.net/projects/lightsquid/files/lightsquid/lightsquid-1.8.tgz[/url]
# tar -zxvf lightsquid-1.8.tgz
# mv lightsquid-1.8 /var/www/lightsquid
# cd /var/www/
# chown -R www-data:www-data lightsquid
# cd /var/www/lightsquid
- ตั้งค่าให้ ทำงานได้
# chmod +x *.cgi
# chmod +x *.pl
- ไปแก้ไขไฟล์ lightsquid.cfg ตั้งค่า Global variables ต่างๆ ให้ตรงตามเครื่อง server เช่น
$cfgpath ="/www/lightsquid";
$tplpath ="/www/lightsquid/tpl";
$langpath ="/www/lightsquid/lang";
$reportpath ="/www/lightsquid/report";
$logpath ="/var/lib/squid/logs"; <------- ดูให้ตรงกับในเครื่อง server
$ip2namepath ="/www/lightsquid/ip2name";
$lockpath =$reportpath;
$maxlocktime = 30*60;
$debug = 0;
$debug2 = 0;
$graphreport = 0; <------- กรณีไม่ได้ติดตั้ง module libgd, GD.PM
ส่วนอื่นๆ ตั้งตามที่ติดมากับโปรแกรม
แก้ไข /etc/apache2/httpd.conf
Alias /lightsquid /var/www/lightsquid
<Directory /var/www/lightsquid>
AddHandler cgi-script .cgi
AllowOverride All
</Directory>
- restart apache2
# /etc/init.d/apache2 restart
# /var/www/lightsquid/lightparser.pl
- เมื่อเสร็จแล้ว ให้ตรวจสอบการติดตั้งโดยเรียกสคริปต์ ./check-setup.pl ถ้าทุกอย่างถูกต้องให้นำเข้าข้อมูลเก่าได้เลย โดยสั่ง
# ./lightparser.pl access.log.0.{gz|bz2}
# ./lightparser.pl access.log.1.{gz|bz2}
# ./lightparser.pl access.log.2.{gz|bz2}
ไปเรื่อยๆ
- ไปตั้งค่า crontab ให้ทำงานตามช่วงเวลา ตามที่เราต้องการ ในที่นี้ ผมให้ทำงานวันละครั้งตอน 4 นาฬิกา 5 นาทีหลังจากที่ squid ทำการ rotate log ไปเรียบร้อยแล้วตอนตี 4
# crontab -e
0 4 * * * /usr/sbin/squid -k rotate
5 4 * * * /var/www/lightsquid/lightparser.pl
- เรียกดูข้อมูลได้จากเว็บ http://ip_server/lightsquid
- เป็นอันเรียบร้อย ทีนี้ เราก็สามารถตรวจสอบได้แล้ว ว่าใครใช้เน็ต ไปไหนบ้าง ใช้ปริมาณ มากน้อยเท่าไหร่ ใช้เวลาไหน
Code
# wget http://sourceforge.net/projects/lightsquid/files/lightsquid/lightsquid-1.8.tgz
# tar -zxvf lightsquid-1.8.tgz
# mv lightsquid-1.8 /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# chmod +x *.cgi
# chmod +x *.pl
# chown -R apache:apache *
# echo "Config Httpd.conf";
# echo "#Add for Lightsquid Report" >> /etc/httpd/conf/httpd.conf
# echo "<Directory /var/www/html/lightsquid>" >> /etc/httpd/conf/httpd.conf
# echo "AddHandler cgi-script .cgi" >> /etc/httpd/conf/httpd.conf
# echo "AllowOverride All" >> /etc/httpd/conf/httpd.conf
# echo "</Directory>" >> /etc/httpd/conf/httpd.conf
# service httpd restart
# ./check-setup.pl
# ./lightparser.pl
# /var/www/html/lightsquid/lightparser.pl
# echo '5 4 * * * root /var/www/html/lightsquid/lightparser.pl' >> /etc/crontab
ดูรายงาน squid โดย [url]http://ip-server/lightsquid[/url]
[b]สำหรับ Debian, Ubuntu[/b]
Code
# apt-get install apache2 libgd-gd2-perl
# wget [url]http://sourceforge.net/projects/lightsquid/files/lightsquid/lightsquid-1.8.tgz[/url]
# tar -zxvf lightsquid-1.8.tgz
# mv lightsquid-1.8 /var/www/lightsquid
# cd /var/www/
# chown -R www-data:www-data lightsquid
# cd /var/www/lightsquid
- ตั้งค่าให้ ทำงานได้
# chmod +x *.cgi
# chmod +x *.pl
- ไปแก้ไขไฟล์ lightsquid.cfg ตั้งค่า Global variables ต่างๆ ให้ตรงตามเครื่อง server เช่น
$cfgpath ="/www/lightsquid";
$tplpath ="/www/lightsquid/tpl";
$langpath ="/www/lightsquid/lang";
$reportpath ="/www/lightsquid/report";
$logpath ="/var/lib/squid/logs"; <------- ดูให้ตรงกับในเครื่อง server
$ip2namepath ="/www/lightsquid/ip2name";
$lockpath =$reportpath;
$maxlocktime = 30*60;
$debug = 0;
$debug2 = 0;
$graphreport = 0; <------- กรณีไม่ได้ติดตั้ง module libgd, GD.PM
ส่วนอื่นๆ ตั้งตามที่ติดมากับโปรแกรม
แก้ไข /etc/apache2/httpd.conf
Alias /lightsquid /var/www/lightsquid
<Directory /var/www/lightsquid>
AddHandler cgi-script .cgi
AllowOverride All
</Directory>
- restart apache2
# /etc/init.d/apache2 restart
# /var/www/lightsquid/lightparser.pl
- เมื่อเสร็จแล้ว ให้ตรวจสอบการติดตั้งโดยเรียกสคริปต์ ./check-setup.pl ถ้าทุกอย่างถูกต้องให้นำเข้าข้อมูลเก่าได้เลย โดยสั่ง
# ./lightparser.pl access.log.0.{gz|bz2}
# ./lightparser.pl access.log.1.{gz|bz2}
# ./lightparser.pl access.log.2.{gz|bz2}
ไปเรื่อยๆ
- ไปตั้งค่า crontab ให้ทำงานตามช่วงเวลา ตามที่เราต้องการ ในที่นี้ ผมให้ทำงานวันละครั้งตอน 4 นาฬิกา 5 นาทีหลังจากที่ squid ทำการ rotate log ไปเรียบร้อยแล้วตอนตี 4
# crontab -e
0 4 * * * /usr/sbin/squid -k rotate
5 4 * * * /var/www/lightsquid/lightparser.pl
- เรียกดูข้อมูลได้จากเว็บ http://ip_server/lightsquid
- เป็นอันเรียบร้อย ทีนี้ เราก็สามารถตรวจสอบได้แล้ว ว่าใครใช้เน็ต ไปไหนบ้าง ใช้ปริมาณ มากน้อยเท่าไหร่ ใช้เวลาไหน
เอา Log ใน Squid ใส่ใน Mysql
สั่ง
apt-get install syslog-ng
เสร็จแล้วแก้ไขไฟล์ /etc/syslog-ng/syslog-ng.conf
เพิ่ม
######################
destination d_mysql {
pipe("/var/log/mysql.pipe"
template("
CREATE TABLE IF NOT EXISTS log_$YEAR$MONTH$DAY (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
datetime datetime default NULL,
program varchar(15) default NULL,
msg text,
seq bigint(20) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq),
KEY host (host),
KEY program (program),
KEY datetime (datetime),
KEY priority (priority),
KEY facility (facility)
) DEFAULT CHARSET=tis620 COLLATE=tis620_bin;\n\n
INSERT INTO log_$YEAR$MONTH$DAY
(host, facility, priority, level, tag, datetime, program, msg,seq) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG','$YEAR-$MONTH-$DAY
$HOUR:$MIN:$SEC','$PROGRAM', '$MSG',null );\n\n") template-escape(yes));
};
######################
filter f_proxyS { match("http"); };
log {
source(s_all);
filter(f_proxyS);
destination(d_mysql);
};
จบการแก้ไขไฟล์
สร้างไฟล์
/etc/syslog2mysql.sh
มีเนื้อหา
#!/bin/bash
if [ ! -e /var/log/mysql.pipe ]
then
/usr/bin/mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
/usr/bin/mysql -uroot -p1234 syslog < /var/log/mysql.pipe > /dev/null
done
จบ
เสร็จแล้วสั่ง
/etc/init.d/syslog-ng restart
sh /etc/syslog2mysql.sh &
ใน squid.conf
เพิ่ม
access_log syslog
หนึ่งบรรทัด
แล้วสั่ง
squid -k reconfig
ใน db สร้างฐานข้อมูลชื่อ syslog จบจ้า
apt-get install syslog-ng
เสร็จแล้วแก้ไขไฟล์ /etc/syslog-ng/syslog-ng.conf
เพิ่ม
######################
destination d_mysql {
pipe("/var/log/mysql.pipe"
template("
CREATE TABLE IF NOT EXISTS log_$YEAR$MONTH$DAY (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
datetime datetime default NULL,
program varchar(15) default NULL,
msg text,
seq bigint(20) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq),
KEY host (host),
KEY program (program),
KEY datetime (datetime),
KEY priority (priority),
KEY facility (facility)
) DEFAULT CHARSET=tis620 COLLATE=tis620_bin;\n\n
INSERT INTO log_$YEAR$MONTH$DAY
(host, facility, priority, level, tag, datetime, program, msg,seq) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG','$YEAR-$MONTH-$DAY
$HOUR:$MIN:$SEC','$PROGRAM', '$MSG',null );\n\n") template-escape(yes));
};
######################
filter f_proxyS { match("http"); };
log {
source(s_all);
filter(f_proxyS);
destination(d_mysql);
};
จบการแก้ไขไฟล์
สร้างไฟล์
/etc/syslog2mysql.sh
มีเนื้อหา
#!/bin/bash
if [ ! -e /var/log/mysql.pipe ]
then
/usr/bin/mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
/usr/bin/mysql -uroot -p1234 syslog < /var/log/mysql.pipe > /dev/null
done
จบ
เสร็จแล้วสั่ง
/etc/init.d/syslog-ng restart
sh /etc/syslog2mysql.sh &
ใน squid.conf
เพิ่ม
access_log syslog
หนึ่งบรรทัด
แล้วสั่ง
squid -k reconfig
ใน db สร้างฐานข้อมูลชื่อ syslog จบจ้า
สมัครสมาชิก:
บทความ (Atom)