2009年3月18日 星期三

amule over freebsd

基本上用ports裡面stable版就可以了。安裝方式

cd /usr/ports/net-p2p/amule
make install clean

啟動時使用/usr/local/rc.d/amuled start 就可以了。

使用rc.conf的開機啟動方式是

amuled_enable="YES"
amuled_user="amule_username"
amuled_home="amule_user_home"

我用adduser方式,新增一個amule的帳號作為amule專用。

再來$HOME/.aMule裡面要設定好amule.conf與遙控用的remote.conf。因為我是從ubuntu將原來舊的amule設定檔搬過來沿用,所以只有密碼要更改,產生MD5密碼的方式是

echo "Your_Password" | md5

amuled的ec使用tcp 4712,然後amuleweb再用tcp 4711連過去amuled。

因此amule.conf設定檔就會像這樣:

.....
[ExternalConnect]
UseSrcSeeds=0
ShowPercent=1
ShowProgressBar=1
AcceptExternalConnections=1
ECAddress=
ECPort=4712
ECPassword=e8c8290466a68dcfca77892de133d661

[WebServer]
Enabled=1
Port=4711
PageRefreshTime=60
UseGzip=1
UseLowRightsUser=0
Password=e8c8290466a68dcfca77892de133d661
PasswordLow=e8c8290466a68dcfca77892de133d661
Template=

而remote.conf用amuleweb -w產生後修改就會像:

Locale=zh_TW.UTF-8
[EC]
Host=
Port=4712
Password=d8ade3c53d42aeecdc5b38f0cb97770a
[Webserver]
Port=-1
Template=php-default
UseGzip=0
AllowGuest=1
AdminPassword=d8ade3c53d42aeecdc5b38f0cb97770a
GuestPassword=29ae15264bcf14cd41a7be377a1a9226

假設你防火牆設定正確,接下來你就可以啟動amuled(連帶啟動amuleweb),然後用瀏覽器連線http://your_ip:4711/ 就會進入web介面騎驢。

本文接下來摘錄我新增的ipfilter / ipnat規則

ipfilter:

pass in quick proto udp from any to any port = 4665
pass in quick proto udp from any to any port = 4672
pass in quick proto tcp from any to any port = 4712 keep state
pass in quick proto tcp from any to any port = 4711 keep state

pass out quick proto tcp from any to any port = 4712 flags S keep state
pass out quick proto tcp from any to any port = 4711 flags S keep state
pass out quick proto tcp from any to any port = 4662 flags S keep state
pass out quick proto udp from any to any port = 4665
pass out quick proto udp from any to any port = 4672

ipnat:

map vr0 172.16.64.0/24 -> 0/32 portmap tcp/udp 10000:60000
rdr vr0 0.0.0.0/0 port 4662 -> 172.16.64.9 port 4662
rdr vr0 0.0.0.0/0 port 4665 -> 172.16.64.9 port 4665
rdr vr0 0.0.0.0/0 port 4672 -> 172.16.64.9 port 4672
rdr vr0 0.0.0.0/0 port 4711 -> 172.16.64.9 port 4711

由此可以看出我是用jail隔離amule的環境。

2009年3月17日 星期二

0317 TODO list

PS(1)

Milktea cannot `mv /usr/bin/flex /usr/bin/flex.old`,
the /usr/bin is under read-only filesystem.

take shell script swich flex if /opt/usr-local/bin/flex exist

I moved the $PATH veriables sequences. Make sure /usr/local/bin is front of /usr/bin ( /etc/login.conf  is under part of  read-write filesystem.)

Add an user amule. Mount the explicated slice to /home/amule with nullfs.(it looks too ugly in fstab)

Install GD:

           cd /usr/ports/graphics/gd
make install clean








Install GeoIP:









           cd /usr/ports/net/GeoIP/
make install clean








Download the aMule 2.2.2 source code here.









           tar -zxvf aMule-2.2.2.tar.bz2
cd aMule-2.2.2/








You need to edit the file src/Scanner.l and after the line:









           #include <wx/string.h>








Add the line:









           #include "Scanner.h.in"








Then start the compilation:









           export CPPFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
./configure --prefix=/home/user/aMule-2.2.2/ \
--with-wx-config=/usr/local/bin/wxgtk2u-2.8-config --with-crypto-prefix=/usr/local/ \
--disable-debug --with-curl-config=/usr/local/bin/curl-config --enable-webserver \
--enable-optimize --with-included-gettext --enable-amule-daemon --enable-amulecmd \
--enable-cas --enable-alcc --enable-geoip








NOTE: Check configure. Also, change user for your user name.









           gmake
gmake install








And start it:









          ./amule-2.2.2/bin/amule &

一些簡單的備份檔 2

/etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad1s1b             none            swap    sw              0       0
/dev/ad1s1a             /               ufs     rw              1       1
/dev/ad1s2d             /home           ufs     rw              2       2
/dev/ad1s2e             /opt            ufs     rw              2       2
/dev/ad1s1e             /usr            ufs     rw              2       2
/dev/ad1s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
/dev/ad1s3c             /media/alita    ufs     rw              2       2
proc                    /proc           procfs  rw              0       0
/home/mroot             /srv/blacktea   nullfs  ro              0       0
/home/mroot             /srv/milktea    nullfs  ro              0       0
/opt/blacktea           /srv/blacktea/opt       nullfs  rw      0       0
/opt/milktea            /srv/milktea/opt        nullfs  rw      0       0
#/home/skel             /opt/blacktea/opt       nullfs  rw      0       0
#proc           /srv/blacktea/proc      procfs  rw              0       0
#proc           /srv/milktea/proc       procfs  rw              0       0
dev             /srv/blacktea/dev       devfs   rw              0       0
dev             /srv/milktea/dev        devfs   rw              0       0

一些簡單的備份檔 1

/etc/ipnat.rules

map vr0 172.16.64.0/24 -> 0/32 portmap tcp/udp 10000:60000
rdr vr0 0.0.0.0/0 port 80 -> 172.16.64.10 port 80
rdr vr0 0.0.0.0/0 port 22 -> 172.16.64.10 port 22
rdr vr0 0.0.0.0/0 port 21 -> 172.16.64.10 port 21
rdr vr0 0.0.0.0/0 port 333 -> 172.16.64.9 port 22
rdr vr0 0.0.0.0/0 port 4662 -> 172.16.64.9 port 4662
rdr vr0 0.0.0.0/0 port 4665 -> 172.16.64.9 port 4665
rdr vr0 0.0.0.0/0 port 4672 -> 172.16.64.9 port 4672

 

/etc/rc.conf

hostname="alita"
ifconfig_vr0="DHCP"
ifconfig_vr0_alias0="inet 172.16.64.10 netmask 0xfffffff0"
ifconfig_vr0_alias1="inet 172.16.64.9 netmask 0xfffffff0"
sshd_enable="YES"
syslogd_flags="-ss"
ntpdate_enable="NO"                             #Not working now
ntpdate_flags="tick.stdtime.gov.tw"             #Reset the URL
portmap_enable="NO"             # Run the portmapper service (or NO).
sendmail_enable="NO"    # Run the sendmail daemon (or NO).
sendmail_flags="-bd"
sendmail_profile="/var/spool/postfix/pid/master.pid"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
enable_quotas="NO"      # turn on quotas on startup (or NO).
check_quotas="NO"       # Check quotas on startup (or NO).
clear_tmp_enable="NO"   # Clear /tmp at startup.
apache2_enable="NO"
mysql_enable="NO"
tcp_extensions="YES"            # Set to YES to turn on RFC1323 extensions.

log_in_vain="NO"                # YES to log connects to ports w/o listeners.
tcp_keepalive="YES"             # Enable stale TCP connection timeout (or NO).
tcp_drop_synfin="YES"           # Set to YES to drop TCP packets with SYN+FIN
                                # NOTE: this violates the TCP specification
icmp_drop_redirect="YES"        # Set to YES to ignore ICMP REDIRECT packets
icmp_log_redirect="YES"         # Set to YES to log ICMP REDIRECT packets

##############################################################
### IP Filter NAT Configuration ##############################
##############################################################
ipfilter_enable="YES"             # Start ipf firewall
ipfilter_rules="/etc/ipf.rules"   # loads rules definition text file
ipmon_enable="YES"                # Start IP monitor log
ipmon_flags="-Ds"                 # D = start as daemon
                                  # s = log to syslog
                                  # v = log tcp window, ack, seq
                                  # n = map IP & port to names
gateway_enable="YES"              # Enable as LAN gateway
ipnat_enable="YES"                # Start ipnat function
ipnat_rules="/etc/ipnat.rules"    # rules definition file for ipnat

##############################################################
### Jail Configuration #######################################
##############################################################

jail_enable="YES"       # Set to NO to disable starting of any jails
jail_list="blacktea milktea"
        # Space separated list of names of jails
jail_set_hostname_allow="NO"
        # Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES"
        # Route only TCP/IP within a jail
jail_sysvipc_allow="NO" # Allow SystemV IPC use from within a jail
        #
        # To use rc's built-in jail infrastructure create entries for
        # each jail, specified in jail_list, with the following variables.
        # NOTES:
        # global jail variables if you don't specify a jail name
        # (ie. jail_interface).

# First Jail Blacktea ====================  #####
jail_blacktea_rootdir="/srv/blacktea"   # Jail's root directory

jail_blacktea_hostname="blacktea"       # Jail's hostname
jail_blacktea_ip="172.16.64.10"         # Jail's IP number
jail_blacktea_interface="vr0"           # Interface to create the IP alias on
jail_blacktea_exec_start="/bin/sh /etc/rc"
        # command to execute in jail for starting
jail_blacktea_exec_stop="/bin/sh /etc/rc.shutdown"
        # command to execute in jail for stopping
jail_blacktea_devfs_enable="YES"        # mount devfs in the jail
        #jail_blacktea_fdescfs_enable="NO"      # mount fdescfs in the jail
jail_blacktea_procfs_enable="YES"       # mount procfs in jail
        #jail_blacktea_mount_enable="NO"        #mount/umount jail's fs
#jail_blacktea_devfs_ruleset="ruleset_name"     # devfs ruleset to apply to jail
        #jail_blacktea_fstab="" # fstab(5) for mount/umount
jail_blacktea_flags="-l -U root"        # flags for jail(8)

# First Jail Milktea ====================  #####
jail_milktea_rootdir="/srv/milktea"     # Jail's root directory
jail_milktea_hostname="milktea" # Jail's hostname
jail_milktea_ip="172.16.64.9"           # Jail's IP number
jail_milktea_interface="vr0"            # Interface to create the IP alias on

jail_milktea_exec_start="/bin/sh /etc/rc"
        # command to execute in jail for starting
jail_milktea_exec_stop="/bin/sh /etc/rc.shutdown"
        # command to execute in jail for stopping
jail_milktea_devfs_enable="YES" # mount devfs in the jail
        #jail_blacktea_fdescfs_enable="NO"      # mount fdescfs in the jail
jail_milktea_procfs_enable="YES"        # mount procfs in jail
        #jail_milktea_mount_enable="NO"         #mount/umount jail's fs
#jail_milktea_devfs_ruleset="ruleset_name"      # devfs ruleset to apply to jail
        #jail_milktea_fstab="" # fstab(5) for mount/umount
jail_milktea_flags="-l -U root" # flags for jail(8)

2009年3月6日 星期五

FreeBSD的watch

先提一下玩linux時watch的用法,watch指令會將後面跟著的指令每隔一段時間就重新執行,因此比如說你先前丟個下載工作在背景,可是又沒看到進度,於是就叫watch ls -l $Filename,這樣就等於有個緊張兮兮的小跟班一直盯著下載進度。但是FreeBSD沒有這種用法,因為Watch是用來監視的。(原文FreeBSD無linux watch

首先核心會自動載入snp.ko,然後你可以用watch ttyv0指令來監看ttyv0登入的使用者的動作。嗯,然後我們來黑暗界看看,當使用者aaa登入bbs,使用的終端機是ttyp7,此時使用watch ttyp7,嗯哼~aaa正在看信件,你也是....

不過這還不夠進階,我們可以使用-W參數,開始寫入該終端機,然後你按鍵的動作就開始進入該終端機的輸入(......),好吧,我們回到正常的光明世界,因為平常使用連線的方式到主機下指令,常常會擔心因為timeout斷線而停止動作,一般有前輩建議使用screen程式,不過在FreeBSD,你撿到了。你只要用watch -W ttyv{0~7}就有好幾個螢幕可以控制,而要退出watch,只需要按Ctrl + G 。