linux网络教程?linux基础知识点

如何学习linux

第一阶段:初级入门

初级阶段需要把linux运维学习路线搞清楚,任何学习都是循序渐进的,所以学linux运维也是需要有一定的路线。

1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)

2、Linux用户及权限基础

3、Linux系统进程管理进阶

4、linux高效文本、文件处理命令(vim、grep、sed、awk、find等命令)

5、shell脚本入门(可边练习边学习)

第二阶段:中级进阶

中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。

1、TCP/IP网络基础(差不多CCNA、NP的知识就够用)

2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)

3、Linux企业级安全原理和防范技巧(系统性能/安全、安全威胁模型和保护方法

4、加密/解密原理及数据安全、系统服务访问控制及服务安全基础

5、iptables安全策略构建

6、shell脚本进阶(主要是结合一些应用,写一些案例)

7、MySQL应用原理及管理入门(能管理和搭建一个个人博客站点)

第三阶段:高级提升

1、http服务代理缓存加速(其中主要学习varnish、nginx缓存系统,要对CDN的知识有所了解。)

2、企业级负载集群(其中主要学习nginx、haproxy、lvs要对主要知识熟练掌握,对负载均衡算法有清晰认识)

3、企业级高可用集群(其中需要对keepalived,heartbeat等进行深入讲解)

4、运维监控zabbix详解(主要是zabbix、cacti、nagios等监控系统,现在用的比较多的是zabbix)

5、运维自动化学习(需要学一些开源运维自动化工具的使用如ansible、puppet、cobbler等运维自动化工具)

第四阶段:资深方向进阶

1、大数据方向(需要对hadoop、storm等常见开源大数据系统需要深入了解)

2、云计算方向(主要是openstack这套东西,当然像一些kvm等虚拟化技术,也是需要掌握的,现在docker也比较流行)

3、运维开发(主要是python运维开发)

4、自动化运维(在之前自动化基础上做深入)

5、运维架构师(主要需要广度,差不多5年左右以上经验,可以担当此职位)

Linux中Wi-Fi无线网络和AP无线热点的配置教程

0.Linux下的Wi-Fi配置

无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能。

那么Linux下的wifi到底该怎么配置、连接呢??

开始配置之前,我们要说说iw家族。iw是linux下常用的wifi配置工具,网上有相应的库和源码。全名为wirelessTools。

配置wifi模块,并连接相应的无线网络过程:主要使用iwpriv命令

(1)扫描可用的无线网络:

代码如下:

iwlist wifi-name scanning 

其中wifi-name为无线网卡的名字,比如网卡eth0就是系统默认的网卡名字, wifi-name可以用ifconfig查看,一般为ra0。

(2)看扫描到的网络信息,按要连接的网络类型进行配置。以下为扫描到的网络:

代码如下:

iwlist ra0 scanning 

===rt_ioctl_giwscan. 11(11) BSS returned, data-length= 1427 

ra0      Scan completed: 

 Cell 01- Address: C4:CA:D9:1D:9E:A0 

   Protocol:802.11b/g/n 

   ESSID:"" 

   Mode:Managed 

   Frequency:2.412 GHz(Channel 1) 

   Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm 

   Encryption key:off 

   Bit Rates:54 Mb/s 

 Cell 02- Address: FC:75:16:A1:A9:16 

   Protocol:802.11b/g/n 

   ESSID:"jxj_rd" 

   Mode:Managed 

   Frequency:2.452 GHz(Channel 9) 

   Quality=94/100 Signal level=-53 dBm Noise level=-92 dBm 

   Encryption key:on 

   Bit Rates:54 Mb/s 

   IE: WPA Version 1 

Group Cipher: TKIP 

Pairwise Ciphers(2): TKIP CCMP 

Authentication Suites(1): PSK 

   IE: IEEE 802.11i/WPA2 Version 1 

Group Cipher: TKIP 

Pairwise Ciphers(2): TKIP CCMP 

Authentication Suites(1): PSK 

 Cell 03- Address: C4:CA:D9:02:2A:70 

   Protocol:802.11b/g/n 

   ESSID:"" 

   Mode:Managed 

   Frequency:2.462 GHz(Channel 11) 

   Quality=83/100 Signal level=-57 dBm Noise level=-92 dBm 

   Encryption key:off 

   Bit Rates:54 Mb/s 

 Cell 04- Address: 14:D6:4D:75:CA:9C 

   Protocol:802.11b/g/n 

   ESSID:"liangym" 

   Mode:Managed 

   Frequency:2.472 GHz(Channel 13) 

   Quality=100/100 Signal level=-27 dBm Noise level=-92 dBm 

   Encryption key:on 

   Bit Rates:54 Mb/s 

   IE: WPA Version 1 

Group Cipher: CCMP 

Pairwise Ciphers(1): CCMP 

Authentication Suites(1): PSK 

   IE: IEEE 802.11i/WPA2 Version 1 

Group Cipher: CCMP 

Pairwise Ciphers(1): CCMP 

Authentication Suites(1): PSK 

如上:ESSID项的值即为无线网络的名字,如上的jxj_rd等。如果值为空,说明在无线路由勾选了隐藏ESSID的选项。

ESSID是很关键的,如果被隐藏了,也不是不能连接,而是需要破解,用到其他的工具,非常麻烦。至于如何破解,不是本文叙述的内容,有兴趣的朋友可以网上搜索。

得到了网络的信息,接下来就是配置连接选项了。以连接jxj_rd为例,我们看看具体的过程:

(1)设置要连接的网络类型:

代码如下:

iwpriv ra0 set NetworkType=Infra 

(2)设置要连接的无线网络的安全模式:

代码如下:

iwpriv ra0 set AuthMode=WPA2PSK 

(3)设置网络加密方式:(CCMP即为AES)

代码如下:

iwpriv ra0 set EncrypType=TKIP 

(4)设置连接时的密码:********为加密网络的密码

代码如下:

iwpriv ra0 set WPAPSK=******* 

(5)连接该网络:有两种方式:

A、用iwpriv命令

代码如下:

iwpriv ra0 set SSID=jxj_rd 

B、用iwconfig命令

代码如下:

iwconfig ra0 essid jxj_rd 

至此,如果密码正确,就可以连接上网络jxj_rd了。如果你不放心,可以用命令查看状态:

代码如下:

iwpriv ra0 connStatus

当然,你也可以用iwconfig命令查看状态,这里不再赘述。

执行 iwlist如果 Supported interface modes的下有 AP的话表示该网卡支持AP模式,可以创建无线热点。

比如我的无线网卡是Qualcomm Atheros AR9485 Wireless Network Adapter,Linux内核自带了驱动ath9k,支持创建AP无线热点。

下面我们就着重来讲无线热点的创建步骤:

1.安装hostapd和dhcpd

代码如下:

sudo apt-get install hostapd isc-dhcp-server

开机不需要启动这两个服务,建议把它们关掉:

代码如下:

sudo update-rc.d-f hostapd remove

注释掉下面两个文件start on那一行:

代码如下:

sudo nano/etc/init/isc-dhcp-server.conf

sudo nano/etc/init/isc-dhcp-server6.conf

2.配置hostapd和dhcpd

代码如下:

sudo nano/etc/hostapd/hostapd.conf 

注意自己设置其中的无线热点名称ssid和认证密码wpa_passphrase.

代码如下:

interface=wlan0

driver=nl80211

ssid=YOUR_AP_NAME

hw_mode=g

channel=10

macaddr_acl=0

auth_algs=3

wpa=2

wpa_passphrase=YOUR_AP_PASSWORD

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP CCMP

rsn_pairwise=TKIP CCMP

sudo nano/etc/dhcp/dhcpd.conf

在末尾加入以下内容:

代码如下:

subnet 192.168.0.0 netmask 255.255.255.0

{

range 192.168.0.2 192.168.0.10;

option routers 192.168.0.1;

option domain-name-servers 192.168.0.1,180.76.76.76,8.8.8.8;

}

其中180.76.76.76是百度公共DNS服务器,8.8.8.8则是Google的DNS服务器.

在自己的家目录下创建一个hostapd目录,里面新建启动和关闭脚本,比如我这样写(注意把里面eechen换成你的用户名):

代码如下:

nano /home/eechen/hostapd/ap-start.sh

代码如下:

#!/bin/bash

#开启内核IP转发

bash-c"echo 1/proc/sys/net/ipv4/ip_forward"

#开启防火墙NAT转发(如果本机使用eth0上网,则把ppp0改为eth0)

iptables-t nat-A POSTROUTING-o ppp0-j MASQUERADE

#关闭NetworkManager对无线网卡的控制

nmcli nm wifi off

#设置并启动无线网卡

ifconfig wlan0 192.168.0.1 netmask 255.255.255.0

#解锁无线设备,可以用rfkill list查看解锁结果.

rfkill unblock wlan

#睡眠6秒,待rfkill解锁生效

sleep 6s

#启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps-ef|egrep"dhcpd|hostapd"

nohup hostapd/etc/hostapd/hostapd.conf/home/eechen/hostapd/hostapd.log 21

dhcpd wlan0-pf/var/run/dhcpd.pid

ps-ef|head-n1 ps-ef|egrep"dhcpd|hostapd"

nano /home/eechen/hostapd/ap-stop.sh

代码如下:

#!/bin/bash

killall hostapd dhcpd

bash-c"echo 0/proc/sys/net/ipv4/ip_forward"

ifconfig wlan0 down

3.启动hostapd和dhcpd

在桌面新建两个启动器(快捷方式),里面分别填入:

代码如下:

gksu/home/eechen/hostapd/ap-start.sh

gksu/home/eechen/hostapd/ap-stop.sh

因为脚本需要root用户身份执行,所以需要用gksu运行。

注意:如果你开启了ufw防火墙,ufw默认是禁止转发的,这会导致防火墙NAT转发失效,这时应该设置允许转发:

代码如下:

sudo nano/etc/default/ufw将 DEFAULT_FORWARD_POLICY设为 ACCEPT

然后重启ufw即可:

代码如下:

sudo service ufw restart

之后运行启动器即可启动和关闭AP无线热点。

4.用wireshark监控经过wlan0的通信

安装wireshark(其中 eechen改为你的用户名):

代码如下:

sudo apt-get install wireshark

sudo chgrp eechen/usr/bin/dumpcap

sudo chmod 750/usr/bin/dumpcap

sudo setcap cap_net_raw,cap_net_admin+eip/usr/bin/dumpcap

Alt+F2运行wireshark,选择网络接口wlan0,Filter里输入http.cookie contains mail.qq.com

然后手机端登录网页QQ邮箱,在WireShark即可查看和获取QQ邮箱登录的Cookie,如图所示:

右键点击Cookie项把Value复制出来,然后用Firefox访问站点,Alt+C激活 Original Cookie Injector( GreaseMonkey),弹出输入框Wireshark Cookie Dump,把Cookie项的Value粘贴到里面,然后点OK确定并刷新页面即可登录QQ邮箱。或者你使用Tamper Data这个Firefox扩展在提交时修改Cookie值也是可以的。

附:

查看连接wlan0网络的客户端:

代码如下:

sudo arp

返回IP地址和MAC硬件地址和无线接口名.

代码如下:

iw dev wlan0 station dump

能显示收发包和字节数等.

查看网络接口速度:

代码如下:

sar-n DEV 1

再Linux系统中限制网络带宽使用的教程

假如你经常在 Linux桌面上运行多个网络应用,或在家中让多台电脑共享带宽;那么你可能想更好地控制带宽的使用。否则,当你使用下载器下载一个大文件时,交互式 SSH会话可能会变得缓慢以至不可用;或者当你通过 Dropbox来同步一个大文件夹时,你的室友可能会抱怨在她的电脑上,视频流变得断断续续。

在本教程中,我将为你描述两种在 Linux中限制网络流量速率的不同方法。

在 Linux中限制一个应用的速率

限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速率限制 socket库的方法,trickle命令允许你改变任意一个特定程序的流量。 trickle命令有一个很好的特性是它仅在用户空间中运行,这意味着,你不必需要 root权限就可以限制一个程序的带宽使用。要能使用 trickle程序控制程序的带宽,这个程序就必须使用非静态链接库的套接字接口。当你想对一个不具有内置带宽控制功能的程序进行速率限制时,trickle可以帮得上忙。

在 Ubuntu,Debian及其衍生发行版中安装 trickle:

代码如下:

$ sudo apt-get install trickle

在 Fdora或 CentOS/RHEL(带有 EPEL软件仓库):

代码如下:

$ sudo yum install trickle

trickle的基本使用方法如下。仅需简单地把 trickle命令(及速率参数)放在你想运行的命令之前。

代码如下:

$ trickle-d-u

这就可以将的下载和上传速率限定为特定值(单位 KBytes/s)。

例如,将你的 scp会话的最大上传带宽设定为 100 KB/s:

代码如下:

$ trickle-u 100 scp backup.tgz alice@remote_host.com:

如若你想,你可以通过创建一个自定义启动器的方式,使用下面的命令为你的 Firefox浏览器设定最大下载速率(例如, 300 KB/s)。

代码如下:

trickle-d 300 firefox%u

最后, trickle也可以以守护进程模式运行,在该模式下,它将会限制所有通过 trickle启动且正在运行的程序的总带宽之和。启动 trickle使其作为一个守护进程(例如, trickled):

代码如下:

$ sudo trickled-d 1000

一旦 trickled守护进程在后台运行,你便可以通过 trickle命令来启动其他程序。假如你通过 trickle启动一个程序,那么这个程序的最大下载速率将是 1000 KB/s,假如你再通过 trickle启动了另一个程序,则每个程序的(下载)速率极限将会被限制为 500 KB/s,等等。

在 Linux中限制一个网络接口的速率

另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux有一个工具来为你做这件事。wondershaper就是干这个的。

wondershaper实际上是一个 shell脚本,它使用 tc来定义流量调整命令,使用 QoS来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。

事实上, wondershaper的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper还试图去保持互动性会话如 SSH的低延迟。同样的,它还会控制批量上传(例如, Dropbox的同步)不会使得下载“窒息”,反之亦然。

在 Ubuntu Debian及其衍生发行版中安装 wondershaper:

代码如下:

$ sudo apt-get install wondershaper

在 Fdora或 CentOS/RHEL(带有 EPEL软件仓库)中安装 wondershaper:

复制代码

代码如下:

$ sudo yum install wondershaper

wondershaper的基本使用如下:

代码如下:

$ sudo wondershaper

举个例子,将 eth0的最大下载/上传带宽分别设定为 1000Kbit/s和 500Kbit/s:

代码如下:

$ sudo wondershaper eth0 1000 500

你也可以通过运行下面的命令将速率限制进行消除:

代码如下:

$ sudo wondershaper clear eth0

假如你对 wondershaper的运行原理感兴趣,你可以阅读其 shell脚本源文件(/sbin/wondershaper)。

总结

在本教程中,我介绍了两种不同的方法,来达到如何在 Linux桌面环境中,控制每个应用或每个接口的带宽使用的目的。这些工具的使用都很简单,都为用户提供了一个快速且容易的方式来调整或限制流量。对于那些想更多地了解如何在 Linux中进行速率控制的读者,请参考 the Linux bible.

阅读剩余
THE END