彻底抛弃 ubuntu 10.04 中的 pulse(解决Skype中麦克风不工作问题)

Apr 07 2011 Published by feicun under Study

好像是从 ubuntu 9.10 开始,pulse 就取代了 alsa 成为系统默认的声音驱动。虽说 pulse 看上去比 alsa 有这样那样的优势,但是它现在还是不如 alsa 稳定,比如在我的现在电脑上,pulse 就导致我现在没法在 Skype 里面用麦克风,很让人头疼。

要让麦克风正常工作,有两个办法,首先是简单一点的办法:

1. 用新立德安装一个叫 pavucontrol (Pulse Audio Volume Controller) 的程序。
2. 打开 Pulse Audio Volume Controller ,在里面找到输入设备的标签页。
3. 点掉这个标签页里的那个小锁标志,然后把左右声道中的其中一个调整为10%,另一个80%。

这个办法是最简单的,但是在我的电脑上效果不好。虽然麦克风可以用了,但是背景噪音很大,导致我跟别人语音的时候别人根本听不清我说的话。

如果上一个方法你用着也不舒服,那就用第二招吧,直接卸载掉 pulse Audio 。但是在 ubuntu 10.04 版本里,系统内置的音量控制功能已经成了 pulse Audio 的一部分,如果你直接remove掉 pulse Audio ,那么 ubuntu 中用来控制音量的 indicator-sound 也就被一起卸掉了,系统音量也就无法进行调节。

好在俄国高手做了一个叫 audiohacks 的PPA,里面提供了一些修改过的 gnome-media/applets/settings-daemon 组件,让我们可以在 remove 掉 pulseAudio 之后可以找到替代 indicator-sound 的工具。

下面就是 ubuntu 10.04 彻底卸载 pulseAduio 的全过程:

首先卸载掉 PulseAudio:

1
2
3

sudo apt-get remove pulseaudio

sudo killall pulseaudio

然后安装 audiohacks :

1
2
3
4
5
6
7

sudo add-apt-repository ppa:dtl131/ppa

sudo apt-get update

sudo apt-get remove gstreamer0.10-pulseaudio

sudo apt-get install gstreamer0.10-alsa gnome-alsamixer alsa-oss python-alsaaudio gnome-applets gnome-media gnome-settings-daemon libcanberra0 libcanberra-gtk-module libcanberra-gtk0 libgnome-media0 gnome-applets-data libcanberra-gstreamer alsa-tools

在终端里运行 gstreamer-properties ,把输出输入改为 ALSA 。

如果是在图形界面系统里,登出用户,重新登录。之后在 GNOME panel 上点右键,选择 Add to panel–>Volume Control–>Add。

这样调整之后,pulse 已经被卸载掉了,但是有可能你的麦克风依然有背景噪音。这是因为 Alsa 默认给输入设备设置的音量太大造成的。只要用 Alsa Mixer 调整一下就好:

终端里输入:

1

alsamixer

用方向键控制光标,把 Mic Boos 一列的音量调小。一般调到红色部分全部消失为好。

现在我的系统中已经可以在 Skype 里使用 Alsa 了,麦克风也可以正常工作,而且系统音量也可以调整,折磨了我好久的 Skype 无法语音问题完美解决。最后提醒一下,如果你发现一些播放器无法正常播放,请把它们的输出系统从 pulse 改为 alsa。

发表在 Uncategorized | 留下评论

AUO友达屏幕Nvidia驱动显示6屏的解决方法

修改xorg.conf 加入
Section “Monitor”
Identifier “DFP-0”
VendorName “AUO”
ModelName “AUO”
DisplaySize 340 190
HorizSync 48.4 – 48.4
VertRefresh 60.0 – 60.0
Option “DPMS”
Modeline “1366x768_60.00” 69.5 1366 1414 1446 1447 768 771 775 806 -HSync +Vsync
EndSection

Section “Device”
Identifier “GT 240M”
VendorName “nvidia”
Driver “nvidia”
BusID “PCI:1:0:0”
Option “ModeValidation” “NoDFPNativeResolutionCheck”
Option “ExactModeTimingsDVI” “true”
EndSection

Section “Screen”
Identifier “Screen0”
Device “GT 240M”
Monitor “DFP-0”
DefaultDepth 24
SubSection “Display”
Depth 24
Modes “1366x768_60”
EndSubSection
EndSection

发表在 Uncategorized | 留下评论

ubuntu下Skype不能输入中文解决(ibus输入法)

情况想必大部分人都遇到过,上一次遇到的时候,马马虎虎不知道怎么着给搞好了, 也没记录, 这次重装系统, 又出现了,记之。

$sudo apt-get install ibus ibus-qt4 ibus-gtk

$sudo vim /etc/X11/xinit/xinput.d/default

#/etc/X11/xinit/xinput.d/default file:

#
# This configuration provides default IM setting (user edittable)
# See im-switch(8) and /usr/share/doc/im-switch/README.Debian .

#
# Define IM for traditional X application with XIM
#
# XIM server name used for XMODIFIERS=”@im=$XIM”
# XIM program /path/filename
# XIM program command line arguments
#
# These were traditional setting before uim and scim for CJK languages
# Language LC_CTYPE XIM server XMODIFIERS Start key
# Japanese ja_JP* kinput2 “@im=kinput2” Shift-Space
# Korean ko_KR* ami “@im=Ami” Shift-Space
# Chinese(T) zh_TW.Big5 xcin “@im=xcin-zh_TW.big5” Ctrl-Space
# Chinese(S) zh_CN.GB2312 xcin “@im=xcin-zh_CN.GB2312″ Ctrl-Space
#
XIM=ibus
XIM_PROGRAM=/usr/bin/ibus-daemon
XIM_ARGS=”–xim”
XIM_PROGRAM_XTRA=
# Set following variable to non-zero string if program set itself as deamon
XIM_PROGRAM_SETS_ITSELF_AS_DAEMON=
#
# Define GTK and QT IM module
# They may or may not be using xim as the IM.
#
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus

#
# Define lists of packages neded for above IM to function
#
DEPENDS=”ibus, ibus-gtk, ibus-qt4″

#
# Define X start up hook script to update IM environment
#

感谢: http://forum.ubuntu.org.cn/viewtopic.php?t=343717

发表在 linux | 留下评论

ubuntu 11.10输入法图标消失

Ubuntu11.10下ibus输入法的图标经常消失,输入中文时很不方便,只能盲打一下,看是否切换到中文,很不爽。怎么办?重启一下ibus!

按Ctrl+ALT+T 快捷键打开终端,

输入:

killall ibus-daemon (结束进程)

ibus-daemon -d (重启ibus)

发表在 linux | 留下评论

转载:DNS tunnel的原理及实战

什么是DNS tunnel?

DNS tunnel 即 DNS隧道。从名字上来看就是利用DNS查询过程建立起隧道,传输数据。

为什么使用DNS tunnel?

当你在酒店、机场等公共场所,通常有Wifi信号,但是当你访问一个网站时,如http://hi.baidu.com/, 可能会弹出个窗口,让你输入用户名、密码,登陆之后才可以继续上网(该技术一般为透明http代理,不在本文讨论范围之内,以后再讲)。这时,你没有账 号,就无法上网。但是有时你会发现,你获取到得DNS地址是有效的,并且可以用以进行DNS查询,这时你便可以用DNS tunnel技术来实现免费上网了!

DNS tunnel的原理

首先,要知道DNS系统的工作原理,见:[DNS系统(服务器)的工作原理及攻击防护方法论] 。你在做 DNS 查询的时候,如果查的域名在 DNS 服务器本机的 cache 中没有,它就会去互联网上查询,最终把结果返回给你。如果你在互联网上有台定制的服务器。只要依靠 DNS 的这层约定,就可以交换数据包了。从 DNS 协议上看,你是在一次次的查询某个特定域名,并得到解析结果。但实际上,你在和外部通讯。你没有直接连到局域网外的机器,因为网关不会转发你的 IP 包出去。但局域网上的 DNS 服务器帮你做了中转。这就是 DNS Tunnel 了。

上 图简单介绍了DNS tunnel的原理。当你连接上wifi后,你可以使用DNS服务器,向这个服务器的53端口发送数据,请求一个域名,比如b.xxx.org 。这台DNS服务器上没有b.xxx.org,那么它将向root,也就是根域名服务器请求,看看根知道不。root一看是.org的域名,就交 给.org域名服务器进行解析。.org的域名服务器一看是.xxx.org那么就会去找.xxxi.org的域名服务器 (f1g1ns1.dnspod.net),看看它有没有这条记录。.xxx.org的域名服务器上一看是b.xxx.org,如果它有这 条A记录,那么就会返回b.xxx.org的地址。

但是,如果没有,你可以再在guanwei.org的域名服务器上设定一个NS 类型的记录人,如:xxx.org NS 111.222.333.444(通常这里不让设置为地址,那么也好办,你可以先在DNS服务器上添加一条A记录,如ns.xxx.org 111.222.333.444,再添加NS记录:guanwei.org NS ns.xxx.org),这里指定一个公网服务器,也就是上图绿色的服务器,这台服务器中跑着DNS tunnel的server端,是一台假的DNS服务器,他不会返回b.xxx.org的地址,但是它会将你的请求转发到已经设定的端口中,比如 SSH的22端口,22端口返回的数据它将转发到53端口返回给客户端(也就是你的电脑)。这时,你就可以用这台公网服务器的资源了,如果是一台http 或者sock代理,那么你就可以用这个代理免费上网了。

DNS tunnel实现的工具

DNS tunnel实现的工具有很多,比如:OzymanDNS、tcp-over-dns、heyoka、iodine、dns2tcp。由于BT4、5系统自带了dns2tcp工具。这里仅介绍dns2tcp的使用方法。

DNS2TCP的DNS tunnel实验

环境准备

一个已经申请好的公网域名,在这里我就用本blog的域名了xxx.org。给该域名指定一个DNS服务器(在域名管理的控制面板即可看到),本 环境为DNSpod的服务器:f1g1ns1.dnspod.net。一个公网服务器server(运行着BT4系统,主要使用里面的dns2tcpd V4程序)。这里使用局域网中的一台PC,在防火墙上做端口映射,将UDP的53端口映射出去。公网IP为111.222.333.444一 个客户端client(运行着BT4系统,主要使用里面的dns2tcpc V4程序)。这里模拟在机场的环境,能连接局域网(与上面的服务器不在一个局域网内,是另一个连接公网的局域网),能够获取到DNS服务器,如辽宁网通的202.96.64.68,并可以通过它进行DNS查询(测试方法:nslookup www.xxx.org 202.96.64.68,后面的域名服务器请根据实际情况替换)。

前期配置

客户端client可以使用域名服务器查询域名,这里设定该域名为dnstunnel.xxx.org(该域名不能在dnspod的域名服务器上有任何记录,因为这个记录是由server进行应答的)

在xxx.org的域名服务器上建立两条DNS记录

ns.xxx.org A 111.222.333.444(这里的目的就是给DNS服务器设定一个域名,按原理来说是可以舍去的,但是DNSpod上不可以将NS记录配置为IP,只能配置为域名,所以需要加上这条记录)

xxx.org NS ns.xxx.org(这里建立一条NS记录,意思是如果本台DNS服务器上没有客户端查询的域名(dnstunnel.xxx.org),请去ns.xxx.org(也就是111.222.333.444)上去查询)

在server上开启SSH服务。用以进行测试,如果DNS tunnel建立,client可以使用SSH连接到服务器上。

详细配置方法

server端:

编辑/etc/dns2tcpd.conf文件,内容如下:

listen = 192.168.10.88(Linux服务器的IP)
port = 53
user = nobody
chroot = /var/empty/dns2tcp/
domain = dnstunnel.xxx.org(对该域名的请求进行转发,将返回数据包进行封装)
resources = ssh:127.0.0.1:22(可以为客户端提供的服务,也可以为http:127.0.0.1:3128,如果该服务器开启了http代理服务)

然后,运行dns2tcpd服务器程序: #./dns2tcpd-F -d 1 -f /etc/dns2tcpd.conf

================================================

client端:#./dns2tcpc-z dnstunnel.xxx.org ns.xxx.org

如果ns.xxx.org生效了,便可以连接服务器,提示:

Available connection(s):
ssh

但是如果ns.xxx.org还没有生效,会提示:no response from dnsserver 。这时可以先使用: #./dns2tcpc -zdnstunnel.xxx.org 202.96.64.68

如 果成功连接服务器,则说明dnstunnel可以成功建立了,如果没有,请测试你获取到得dns服务器地址是否可用,并且xxx.org的ns记 录是否生效。测试方法:将111.222.333.444映射到另外一个真正的dns服务器上,加一条A记录,如:test.xxx.org A 192.168.10.254 。然后使用nslookup test.xxx.org 202.96.64.68,观察能否成功解析。如果不能解析,请检查dnspod的配置及dns记录生效情况。

测试可以成功连接服务器后, 使用#./dns2tcpc -r ssh -l 4430 -z dnstunnel.xxx.org 202.96.64.68 这时会在本地监听一个端口,类似一个反弹木马。使用ssh 127.0.0.1 -p 4430 便可以成功连接server的22端口。如果server提供http代理服务,那么你就可以设置http代理服务器免费上网了!

发表在 Uncategorized | 留下评论

快速搭建一个VPN(pptp)

1. 如何快速搭建一个VPN(pptp)

# 安装服务器端软件

apt-get install pptpd

# 配置IP地址范围,编辑/etc/pptpd.conf,在最后添加如下地址:

localip 192.168.254.1
remoteip 192.168.254.200-238,192.168.254.245

# 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。

# 增加一个用户,编辑/etc/ppp/chap-secrets,在下面增加类似的条目:

username pptpd password *

# 重启pptpd服务

/etc/init.d/pptpd restart

# 编辑:/etc/ppp/options,在里面找一下”ms-dns”项目:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

#允许转发,编辑/etc/sysctl.conf,看一下net.ipv4.ip_forward参数是不是1,或直接执行以下命令来查看

sysctl net.ipv4.ip_forward

# 如果输出为 0 的话就要修改 /etc/sysctl.conf 中的 net.ipv4.ip_forward ,把 0 改为1,然后执行以下命令。

sysctl -p

# 最后,运行一下这条命令来打开iptables的转发支持:

iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.254.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.254.0/24 -j ACCEPT

# 并把这两条加入到 /etc/rc.local 中的 exit 0 行前面,这样重启后就无需再执行了。

# 好了,PPTP VPN 到此就架设好了,你现在可以用 Windows 自带的 VPN 连接工具来连接了,这个应该非常简单

发表在 linux | 留下评论

BT5-GNOME下SSH服务的开启

首先生成公私钥
#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

然后启动SSH
#/etc/init.d/ssh start

发表在 linux | 留下评论

netsec服务器崩溃修复手记

故障原因:硬盘损坏。
系统修复:使用U盘启动vmware esx,系统报告UUID重复无法启动;
删除原硬盘上的前4个分区,保证vmware启动顺利;
顺利挂载原硬盘,使用VCenter将硬盘上3个虚拟机克隆至其他服务器。
网站修复:直连netsec.ccert.edu.cn报Error establishing a database connection错误。
在wp-config.php中加入define(‘WP_ALLOW_REPAIR’,’true’);
wordpress自动修复报wp-options表崩溃无法自动修复;
运行myisamchk -r /var/lib/mysql/MyWordPress_db/wp_options
网站恢复正常。

发表在 linux | 留下评论

看欺骗的艺术

从文字中明显感觉到中美两国的文化差异。美国默认的是信任关系,即黑名单制。所以欺骗的艺术在美国很容易得到成功的案例。在中国默认的是不信任关系,即白名单制。只有是熟人才能从关系中获得帮助。如果是一个陌生人打电话或者用其他方法求助的话,估计得不到官僚体系中的任何帮助。更别说获得可以利用的信息了。不知道外企进入以后进行的培训会把中国员工变成哪种。没有资料来源。至少我知道的国家机关,事业单位等官僚体制的作风不能满足欺骗的艺术一书里那些欺诈的技巧。

发表在 read | 留下评论

转贴:IP tables设置port map

用iptables可以很方面地实现NAT,而且定制性很强,最近需要map几个机器,发现即使官方站点的资料也有一点不全,搞定之后,贴点心得给大家,好让兄弟们不走歪路。

偶介绍的是网关端口映射到其他机器的用途,关于本机端口转换,有现成的REDIRECT target,即-j 参数后加REDIRECT即可。

REDIRECT例子

iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128

先看一下iptables的处理线路

代码:

                                                             _____
Incoming                                     /                    \                         Outgoing
                   –>[Routing ]—>|FORWARD|      ——->
                         [Decision]          \   _____   /                     ^
                                   |                                                                 |
                                  v                                                                 ____
                              ___                                                           /                \
                          /               \                                                    |OUTPUT|
                           |INPUT|                                                       \ ____ /
                           \  ___  /                                                               ^
                                  |                                                                        |
                                                 —-> Local Process —-

代码:

       _____                                                                             _____
/                          \                                                             /                            \
PREROUTING –>[Routing ]—————–>POSTROUTING—–>
\     D-NAT       /        [Decision]                                 \        S-NAT     /
                                                |                                                          ^
                                                |                                                     __|__
                                                |                                                  /                \
                                                |                                                 | OUTPUT|
                                                |                                                  \ D-NAT /
                                                |                                                           ^
                                                |                                                            |
                                                    ——–> Local Process ——

可以看到一个封包进来后,如果没有做任何改动,则根据目的地址的不同,而分发到forward链(网内其他机器)或input链处理(本机)。port map的原理就是实现DNAT
(Destination NAT),修改封包的目的地址,把发往网关外网IP修改为内网的某个IP。

DNAT在nat表的PREROUTING链中实现,例子如下:

iptables -t nat -I PREROUTING -p tcp -m tcp -i ppp0 –dport 3344 -j DNAT –to 192.168.0.111:22

把网关处的3344端口映射到192.168.0.111处的22端口

经过这样处理后,这个封包会继续进入forward链,所以,你要保证你的forward链有相应的通过规则,或者是原则开放的。

原则开放forward链

iptables -P FORWARD ACCEPT

也可以建立相应规则,而封锁forward原则。

iptables -P FORWARD ACCEPT
iptables -A FORWARD 192.168.1.0/24 -j ACCEPT

官方站点的资料到这里就完了,你会发现根本不能实现port map,链接在syn sent后,就time out了。其实是没有做相应的SNAT的关系,虽然封包能被转发到内网,而反馈的目的地是外网的IP,而不是先发往网关处,由网关转发,内网的机器无法发回反馈,导致失败。

NAT即Source NAT

继续添加如下规则

iptables -t nat -A POSTROUTING -d 192.168.0.111 -s 0.0.0.0/0 -p tcp -m tcp –dport 80 -j SNAT –to 192.168.0.5

SNAT在nat表的postrouting链中进行,上面的把从网关处发往192.168.0.111 22端口发来的包来源地修改为网关的内网IP。

这样修改后,内网的机器的反馈就会发回给网关,而网关自己会转发给请求的机器。再次确定,你已经打开的forward功能,并且forward是开放的或者有相应的规则让转发包通过。

打开系统forward功能

echo 1>/proc/sys/net/ip_forward

forward链的精确规则

iptables -I FORWARD -p tcp -m tcp -d 192.168.0.111 –dport 22 -j ACCEPT

自此一个端口转发完毕,其他的依次类推即可。

发表在 Uncategorized | 留下评论