Linux 通过 traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备 traceroute 要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

在大多数情况下,我们会在linux主机系统下,直接执行命令行:

traceroute hostname

一、命令格式

traceroute [参数] [主机]

二、 命令功能

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

三、 命令参数

-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。

例子:

[root@myvps ~]# traceroute 67.229.29.200
traceroute to 67.229.29.200 (67.229.29.200), 30 hops max, 60 byte packets
 1  172.22.62.200 (172.22.62.200)  14.671 ms  14.597 ms  14.567 ms
 2  172.22.61.48 (172.22.61.48)  12.515 ms  12.500 ms  12.473 ms
 3  lax-dc6-1-1.it7.net (66.165.226.121)  13.803 ms  13.803 ms  13.782 ms
 4  10.253.1.1 (10.253.1.1)  0.241 ms  0.239 ms  0.213 ms
 5  10.254.0.101 (10.254.0.101)  0.319 ms  0.449 ms  0.546 ms
 6  vpls.as35908.any2ix.coresite.com (206.72.210.19)  0.300 ms  0.362 ms  0.234 ms
 7  vlan54.br08.lax10.vpls.net (184.164.193.61)  0.867 ms  0.851 ms vlan11.br7.lax10.vpls.net (184.164.193.237)  0.998 ms
 8  vlan4.hr9.lax10.vpls.net (184.164.197.141)  2.336 ms  2.351 ms  8.832 ms
 9  67.229.29.200 (67.229.29.200)  0.879 ms  0.933 ms  0.893 ms

Best Trace 是 IPIP 推出的一款路由追踪器,目前有 windows,linux,mac,android,ios 共五个版本,其中 Linux 版本最为简洁,既没有网络表格化更没有地图连线,只有简单的排版打印。 此次介绍的 Best Trace 是在 linux 命令行界面下使用的工具。

在这里介绍 BestTrace 的 Linux 版本使用方式

1、下载并解压

wget https://down.24kplus.com/linux/besttrace4linux.zip
unzip besttrace4linux.zip -d besttrace4
cd besttrace4

因为官网 CDN 经常抽风,所以改为从我个人服务器下载,如果担心不安全,可以从官网下载: https://cdn.ipip.net/17mon/besttrace4linux.zip

如果出现 -bash: unzip: command not found 错误,执行:

#CentOS
yum install unzip zip -y
#Ubuntu
apt-get install unzip zip -y

更多 CentOS 错误解决方法:点击查看

2、赋予执行权

chmod +x besttrace

3、进行路由追踪

./besttrace -q1 -g cn IP

例如:

$ ./besttrace -q1 -g cn 183.56.167.125
traceroute to 183.56.167.125 (183.56.167.125), 30 hops max, 60 byte packets
  1  103.102.5.1  0.40 ms  AS131477  美国 加利福尼亚州 洛杉矶 rixcloud.com
  2  *
  3  59.43.182.78  155.69 ms  AS4809  中国 广东 广州 电信
  4  59.43.187.141  186.04 ms  AS4809  中国 广东 广州 电信
  5  59.43.130.113  191.66 ms  AS4809  中国 广东 广州 电信
  6  202.97.70.14  186.64 ms  *  中国 广东 广州 电信
  7  *
  8  121.14.112.234  159.83 ms  AS4816  中国 广东 深圳 电信
  9  183.60.20.134  191.64 ms  AS4816  中国 广东 深圳 电信
 10  183.56.167.125  160.32 ms  AS4816  中国 广东 深圳 电信

电信:其中 AS4809 就是电信CN2网络,CN2一般59开头IP段,而 AS4134 则是我们说的163网络(也有小营运商称为CN1),全称没有 AS4134 节点称为CN2 GIA,如果中间经过 AS4134 则为CN2 GT。

联通:联通出口网络一般为 AS4837,好于电信的AS4134,比 AS4809 要差一些,高峰期存在丢包现象,联通的出口带宽并不是完全没有亮点,不管是香港还是美国,联通 AS4837 几乎都能直连,很少绕路。也有部分商家为了优化联通的进出口网络,增强用户体验,在国内中转CN2网络后再出口连接到其他国家,这种也可以貌美电信CN2 GIA。

参数说明

-6, - ipv6
使用ipv6。
-J, - json
使用JSON格式打印traceroute结果。
-g, - lang string
语言现在仅支持cn和en。
-m, - maxhop int
指定traceroute将探测的最大跳数(最大生存时间值)。默认值为30.(默认为30)
-a, - noas
显示时,请勿尝试将IP地址映射到AS。
-n, - nodomain
显示时,请勿尝试将IP地址映射到主机名。
-l, - location
显示时,请勿尝试将IP地址映射到位置。
-q, - query int
设置每跳的探测包数。默认值为3.(默认值为3)
-z, - sendtime int
探针之间的最小时间间隔(默认为0)。
如果该值大于10,则它指定一个以毫秒为单位的数字,否则它是一个秒数(也允许浮点值)。
当某些路由器对ICMP消息使用速率限制时很有用。
-f, - stopop int
指定要启动的TTL。默认为1.(默认值为1)
- 同步
通过同步发送icmp包。
-T, - tcp
使用TCP SYN进行探测。
-V, - 版本
打印版本并退出。
-w, - waittime int
设置等待探测响应的时间(以秒为单位)。 (默认3)

其他平台

支持 windows,linux,mac,android,ios 共5个平台。

官方下载: https://www.ipip.net/product/client.html

linux 系统没有自带 wget 工具。当用到 wget 如果没有安装就会出现 --bash: wget: command not found,需要我们自己安装。

CentOS 安装

yum install wget -y

Ubuntu 安装

apt install wget -y

CentOS / Ubuntu 安装 pip。 解决 -bash: pip: command not found 错误

执行:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

Successfully installed pip-19.3.1 setuptools-41.4.0 wheel-0.33.6

linux 系统没有自带 zip 的压缩解压工具。当用到 zip 或者 unzip 如果没有安装就会出现 -bash: unzip: Command Not Found-bash: zip: Command Not Found,需要我们自己安装。

CentOS 安装

yum install -y unzip zip

Ubuntu 安装

sudo apt-get install zip

Nginx 利用 IP2Locaion 模块实现地区负载均衡和IP定位。

由于GeoIP2的效率实在是“惊人”,和那“高到爆”的识别精度,真是让人想爆粗口。经过权衡,将IP定位模块更换为 IP2Locaion。

如果还没安装 IP2Location C Library,请先移步到 https://www.24kplus.com/linux/871.html 安装 IP2Location C Library

下载 Nginx IP2Locaion 模块

git clone https://github.com/ip2location/ip2location-nginx.git

查看当前 Nginx 版本信息

nginx -V

可以看到 Nginx 的版本为1.16.0 和 configure 参数,把 configure 参数拷贝保存下来,后面需要用到

到官网 https://nginx.org/en/download.html 找到对应的版本源码下载并解压。本站以1.16.0为例:

下载并解压

wget https://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxf nginx-1.16.0.tar.gz
cd nginx-1.16.0

备用下载地址: https://down.24kplus.com/linux/nginx-1.16.0.tar.gz

生成新的 nginx

把刚刚复制的 configure 参数粘贴到 ./configure 后面, 在结尾处加入 -–add-module=../ip2location-nginx

./configure \
--prefix=/etc/nginx \
.....
# 在结尾处加入一行
-–add-module=../ip2location-nginx
# 如果想编译为动态模块,则添加
--add-dynamic-module=../ip2location-nginx
make

编译好之后不要安装, 停止 nginx 服务

systemctl stop nginx

复制编译好的新 nginx 文件拷贝到sbin下

cp /usr/sbin/nginx /usr/sbin/nginx.bak
cp objs/nginx /usr/sbin

编辑 nginx.conf 文件,在 http {} 中加入以下代码:

http {
……
#doc https://github.com/ip2location/ip2location-nginx
# on 为启用,off 为禁用
ip2location on;
#/usr/share/IP2Location/IP2LOCATION-LITE-DB3.BIN 替换成你的 IP2Locaion 数据路径。
ip2location_database /usr/share/IP2Location/IP2LOCATION-LITE-DB3.BIN;
# 可选参数 ip2location_access_type file_io|shared_memory|cache_memory
# 默认为 shared_memory
# 建议不要选择 file_io, 否则可能会严重拖慢响应速度。
ip2location_access_type shared_memory
……
}

官方提供免费版BIN文件下载: https://lite.ip2location.com/ip2location-lite ,根据自己的需要下载对应版本。

编辑 fastcgi_params 文件,在结尾加入以下几行代码(可选):

#IP2Location, with ip2location on;
fastcgi_param  IP_COUNTRY_CODE		$ip2location_country_short;
fastcgi_param  IP_COUNTRY_NAME		$ip2location_country_long;
fastcgi_param  IP_REGION_NAME		$ip2location_region;
fastcgi_param  IP_CITY_NAME  		$ip2location_city;

更多参数查考官方文档:https://github.com/ip2location/ip2location-nginx

启动 nginx 服务

systemctl start nginx

在 phpinfo 信息中可以看到:

当然,也可以在 nginx 中直接使用 $ip2location_country_short,$ip2location_region等变量来实现地区负载均衡。

1、准备安装环境

sudo apt-get install python python-twisted python-openssl python-setuptools intltool python-xdg python-chardet geoip-database python-libtorrent python-notify python-pygame python-glade2 librsvg2-common xdg-utils python-mako python-dev

2、获取源码并安装

(1)获取源码

git clone git://deluge-torrent.org/deluge.git
cd deluge
git checkout -b master remotes/origin/master

(2)安装

python setup.py build
sudo python setup.py install --install-layout=deb

如果出现 error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 错误,执行:

sudo apt-get install python-dev  \
     build-essential libssl-dev libffi-dev \
     libxml2-dev libxslt1-dev zlib1g-dev \
     python-pip

3、配置 deluge 和 deluge-web 服务

sudo cp packaging/systemd/deluged.service /etc/systemd/system/deluged.service
sudo cp packaging/systemd/deluge-web.service /etc/systemd/system/deluge-web.service

4、启动 deluged 和 deluge-web 服务,并设置自启动

sudo systemctl start deluged
sudo systemctl enable deluged

sudo systemctl start deluge-web
sudo systemctl enable deluge-web

5、开启远程访问(可选)

deluge-web默认只允许本地访问。默认端口:8112,默认密码:deluge

#启用远程访问
deluge-console "config -s allow_remote True"

#禁用远程访问
deluge-console "config allow_remote"

访问地址:http://你的IP:8112

deluge web

卸载 Deluge

sudo systemctl stop deluge-web
sudo systemctl disable deluge-web
sudo systemctl stop deluged
sudo systemctl disable deluged
sudo rm -rf /etc/systemd/system/deluge*

sudo rm -rf /usr/bin/deluge*

sudo rm -rf /usr/lib/python2.7/dist-packages/deluge*