0%

linux | 网络相关

这是网络相关的技术贴。


ping


用来检查网络是否通畅或者网络连接速度的命令

ping www.baidu.com

telnet


Linux telnet命令用于远端登入。

执行telnet指令开启终端机阶段作业,并登入远端主机。「一般用 ssh 来完成上面的作用」。

但是,通常用来探测指定ip是否开放指定端口

通过

telnet ip port

可以判断某一 IP 的 端口是否对外开放。

# telnet 47.75** 8090
Trying 47.75.**...
Connected to 47.75.**. 「表示连接成功,该端口已经开启」
Escape character is '^]'.
Connection closed by foreign host.

如果没有开启,可能会停留在

Trying 47.75.***...

退出连接

如果连接不成功可以

control + c 「MacBook」

如果连接成功,可以使用

quit
如果quit不能退出,可以先执行
control + ] 然后 quit 退出

ssh


关于 ssh 你可以点击下面的链接。

ssh 和 telnet 的区别

telnetssh 都是连接远程计算机的连接协议,可以完成对完成计算机的控制,方便维护。

他们都是基于TCP/IP协议下的,所以连接时都需要知道目标机的网址或者域名.

他们都是与远程主机连接的通道,完成的目的是一样的,只不过手段不一样而已。

由于 ssh 经过加密算法加密,收报文需要解密,发报文需要加密,导致其传输速度、效率较telnet低很多,然而,它却有telnet不具有的安全性「明文链接」。


ifconfig


查看和修改网络配置

eth0是指具体的网络设备,如果有多个网络设备,0依次累加

这个可以设置网卡之类的,可以单独的 google 一下。


netstat


netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。

  • a--all 显示所有连线中的Socket。
  • A <网络类型> 或 –<网络类型> 列出该网络类型连线中的相关地址。
  • c--continuous 持续列出网络状态。
  • C--cache 显示路由器配置的快取信息。
  • e--extend 显示网络其他相关信息。
  • F--fib 显示FIB。
  • g--groups 显示多重广播功能群组组员名单。
  • h--help 在线帮助。
  • i--interfaces 显示网络界面信息表单。
  • l--listening 显示监控中的服务器的Socket。
  • M--masquerade 显示伪装的网络连线。
  • n--numeric 直接使用IP地址,而不通过域名服务器。
  • N--netlink--symbolic 显示网络硬件外围设备的符号连接名称。
  • o--timers 显示计时器。
  • p--programs 显示正在使用Socket的程序识别码和程序名称。
  • r--route 显示Routing Table。
  • s--statistice 显示网络工作信息统计表。
  • t--tcp 显示TCP传输协议的连线状况。
  • u--udp 显示UDP传输协议的连线状况。
  • v--verbose 显示指令执行过程。
  • V--version 显示版本信息。
  • w--raw 显示RAW传输协议的连线状况。
  • x--unix 此参数的效果和指定”-A unix”参数相同。
  • -ip--inet 此参数的效果和指定”-A inet”参数相同。

netstat -an | grep LISTEN

0.0.0.0的就是每个IP都有的服务,写明哪个IP的就是绑定那个IP的服务。

netstat -tln

用来查看linux的端口使用情况,我一般用这个。

netstat -a

查看所有的服务端口(LISTEN,ESTABLISHED)


ufw


Ubuntu 系统进行安装的时候默认安装了 ufw防火墙.

ufw status

状态:不活动

不活动意味着没开启,不意味着没安装

开启防火墙: ufw enable
    开启的过程中,会提示你 ssh 可能中断,选择 yes 即可
    此时再执行 ufw status 就会出现暴漏的端口了
开启端口: ufw allow 22
    开启完成,需要重启防火墙生效
重启防火墙: ufw reload
关掉某一个端口: ufw delete allow 22

外部访问


我们开启了一个网络服务端口,怎么才能让外部的浏览器访问它呢?

首先本地监听的地址必须是 0.0.0.0 而不能是 localhost 或者 127.0.0.1.

tcp        0      0 127.0.0.1:8091          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:18183           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:12138           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:83              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:84              0.0.0.0:*               LISTEN     
tcp6       0      0 :::8086                 :::*                    LISTEN     
tcp6       0      0 :::8088                 :::*                    LISTEN     
tcp6       0      0 :::2375                 :::*                    LISTEN     
tcp6       0      0 :::12138                :::*                    LISTEN     
tcp6       0      0 :::3306                 :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN

在上面这个例子里, 0.0.0.0::: 都是可以被外部访问的,也就是端口 18183 是可以被外部访问的。

但有时候,我们开启了某一个端口的 0.0.0.0 的监听,但是,还是不能被外部访问,这个时候可能是由于我们开启了防火墙。

防火墙

查看端口开启状态

ufw status

开启某个端口,比如我开启的是 8381

ufw allow 8381

开启防火墙

ufw enable

关闭防火墙

ufw disable

重启防火墙

ufw reload

禁止外部某个端口比如 80

ufw delete allow 80

假设,我们查询 0.0.0.0:5010 不能被外部访问,可以使用下面的命令试一试

ufw allow 5010
ufw reload

我就是通过这个修好了我外部不能连接的问题。

ps: 如果你是阿里云服务器,你要开启两个防火墙,一个是部署机器,一个是阿里云页面。

请我喝杯咖啡吧~