Linux下使用 Rinetd 来实现端口转发(转)

Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上。但是如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一个应用层端口转发程序Rinetd。Rinetd短小、高效,配置起来比iptables也简单很多。

Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd中指定的地址/端口对。尽管rinetd使用非闭锁I/O运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。

安装

  • 通过包安装

CentOS

官方源中不具有Rinetd,所以需要先安装三方源。

配置三方源

32位系统

$ vim /etc/yum.repos.d/nux-misc.repo

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/i386/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

64位系统

$ vim  /etc/yum.repos.d/nux-misc.repo:

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

安装Rinetd

$ yum –enablerepo=nux-misc install rinetd

配置

配置端口转发的配置文件在/etc/rinetd.conf

配置文件格式

[bindaddress] [bindport] [connectaddress] [connectport]
绑定的地址    绑定的端口  连接的地址      连接的端口

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址            源端口         目的地址               目的端口

在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或IP地址,IP 地址0.0.0.0将rinetd绑定到任何可用的本地IP地址上。例如:0.0.0.0 8080 www.hi-linux.com 80

配置规则

$ vim /etc/rinetd.conf

0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 192.168.0.103 3389
1.2.3.4 80 192.168.0.10 80
allow *.*.*.*
logfile /var/log/rinetd.log

说明

0.0.0.0表示本机绑定所有可用地址
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机2222端口的请求转发到192.168.0.103的3389端口
将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口
allow设置允许访问的ip地址信息,*.*.*.*表示所有IP地址
logfil设置打印的log的位置

运行

  • 启动Rinetd

脚本启动

$ /etc/init.d/rinetd start

手动启动

编译安装不自带脚本

$ /usr/sbin/rinetd -c /etc/rinetd.conf

  • 关闭rinetd

脚本关闭

$ /etc/init.d/rinetd stop

手动关闭

编译安装不自带脚本

$ pkill rinetd

  • 注意事项

1.rinetd.conf中绑定的本机端口必须没有被其它程序占用
2.运行rinetd的系统防火墙应该打开绑定的本机端口
3.不支持FTP的跳转


使用Robo3T连接Mongodb Atlas

1.创建Mongodb Atlas账号,并开启第一个免费集群。

2.创建具有读写数据库权限的账号,这在连接数据库时作为登录凭证。

3.创建IP地址白名单,只有在白名单中的IP才能连接数据库,如果要开放所有IP,可以填入0.0.0.0/0。

4.到此,准备工作就完成了,现在开始用Robo3T客户端来连接云数据库。首先先找到库地址:

5.一个集群由三台机器组成,因此有三个地址,可以任意连接其中一台,但只有主库可以写入,两台从库只能用来读取数据用。

6.主库地址类似:cluster0-shard-00-00-9jpsk.mongodb.net:27017,两个从库分别为: cluster0-shard-00-01-9jpsk.mongodb.net:27017 , cluster0-shard-00-02-9jpsk.mongodb.net:27017 。

7.现在把设置填入Robo3T界面中:

8.点击Test按钮看是否已连接成功。这里注意一点:Mongodb Atlas的连接必需开启SSL,否则是不会成功的。

招行的信用卡双币卡和全币卡的区别

双币卡可以在银联和国际组织渠道消费,全币卡只能在VISA消费,在国内使用不方便。全币卡永久无条件免年费,双币卡有刷卡次数限制,达标后才能免年费,但在国内使用更加方便。

双币卡和全币卡的区别:

一、合作的信用卡组织不同,双币卡是银联和一个国际信用卡组织,全币卡是单一的国际信用卡组织;

二、货币兑换费率,双币卡按照1.5%收取,全币卡免费。

三、双币卡是指同时具有人民币账户和外币账户的信用卡。一般是卡正面右上方贴有“银联” 标识,右下方贴有VISA 、JCB或万事达的标识。现在,VISA或万事达双币信用卡能够在200多个国家使用,这样的话,寻找消费商户及较为方便。

四、双币信用卡在国内刷卡消费时,采用的是人民币结算,在国外刷卡的话,会自动进入外币结算系统,根据卡片种类不同,先转换成美元或欧元,在非美元或欧元地消费,会再转换成当地货币结账,还款时还要再转换一次,转来转去,因为发生了货币转换,所以就要收取1%到2%的费用。回来还款时,还需要先进行汇兑,又会产生一次货币转换费。

五、全币种卡,出国刷卡无障碍

六、全币种的主要功能是可以免除货币转换费,并能处理所有币种的交易需求。无论是在何国何地消费,回国后均可以直接用人民币还款,免除购汇手续,此外,银行的全币种国际卡一般都会赠送高额的旅行意外险。

七、多币种卡不仅综合了单币卡和双币卡的优点,还避免了它们的缺点。而且,目前各行发行的多币种卡,都是免年费的。唯一美中不足的是,全币种卡暂时都不支持刷银联通道。

八、两者仅仅在结算的币种数量上有所差异。举个例子,双币种卡是银联+VISA 人民币+美元,那么在美国亚马逊购物,双币和全币没有任何区别

Android faceBook KeyHash生成(生成发布密钥散列)(转,有改动)

第一种方法 直接代码输出 不用修改

try {  
    int i = 0;  
    PackageInfo info = getPackageManager().getPackageInfo( getPackageName(),  PackageManager.GET_SIGNATURES);  
    for (Signature signature : info.signatures) {  
        i++;  
        MessageDigest md = MessageDigest.getInstance(“SHA”);  
        md.update(signature.toByteArray());  
        String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);  
          //KeyHash 就是你要的,不用改任何代码  复制粘贴 ;
    }  
}  
catch (PackageManager.NameNotFoundException e) {    
      
}  
catch (NoSuchAlgorithmException e) {    
      

}  

第二种方法手动操作生成;

1、去https://code.google.com/p/openssl-for-windows/downloads/list下载OpenSSL工具

2、在c盘根目录下新建一个openssl的文件夹(C:\openssl),并将OpenSSL压缩包解压到此文件夹中

3、cmd 路径设置到jdk的bin路径下执行:

keytool -exportcert -alias aliasName -keystore path_to_name.keystore -file out_put_path.txt

其中path_to_name.keystore是你.keystore文件的路径,out_put_path.txt是生成文件的路径。

4、 打开CMD,路径设置到openssl文件夹下的bin目录(C:\openssl\bin)执行以下代码:

openssl sha1 -binary debug.txt >debug_sha.txt

执行完后在 C盘的openssl文件夹下生成了debug_sha.txt文件

5、继续执行以下代码:

openssl base64 -in debug_sha.txt >debug_base64.txt

执行完后在C盘的openssl文件夹下生成了debug_base64.txt文件

6、打开debug_base64.txt可得到KeyHash

原文件地址

什么是OAuth

所谓OAuth就是说,第三方的应用可以通过你的授权而不用知道你的帐号密码能够访问你在某网站的你自己的数据或功能。像Google, Facebook, Twitter等网站都提供了OAuth服务,提供OAuth服务的网站一般都有很多开放的API,第三方应用会调用这些API来开发他们的应用以让用户拥有更多的功能,但是,当用户在使用这些第三方应用的时候,这些第三方的应用会来访问用户的帐户内的功能和数据,所以,当第三应用要干这些事的时候,我们不能让第三方应用弹出一个对话框来问用户要他的帐号密码,不然第三方的应用就把用户的密码给获取了,所以,OAuth协议会跳转到一个页面,让用户授权给这个第三方应用以某些权限,然后,这个权限授权的记录保存在Google/Facebook/Twitter上,并向第三方应用返回一个授权token,于是第三方的应用通过这个token来操作某用户帐号的功能和数据时,就畅通无阻了。下图简单地说明了Twitter的OAuth的授权过程。

还需要注意的是,因为OAuth是需要跳到主站的网页上去让用户授权,当用户授权完后,需要跳转回原网页,所以,一般来说,OAuth授权页都会带一个 redirect_url的参数,用于指定跳转回原来的网页。Github使用的这个跳转参数是redirect_uri参数。一般来说,redirect_uri这个参数需要在服务器端进行验证。

你想一下,如果有人可以控制这个redirect_uri这个参数,那么,你就可以让其跳转到别的网页上(可能会是个有恶意的网页)。如果你觉得跳转到别的网页上也无所谓,那么你就错了。别忘了,当你对这个第三方的应用授权通过后,服务方会给第三方应用返回一个授权token,这个token会被加到那个redirect_uri参数后面然后跳转回去,如果这个redirect_uri被别有用心的人改一个恶意的网址后,这个token也就被转过去了,于是授权token也就被泄漏过去了。