9. 网络基础
9.1 网络配置查看
bash
# 查看网络接口信息(推荐)
ip addr show
ip a # 缩写
# 查看路由表
ip route show
ip r # 缩写
# 老式命令(已逐渐淘汰,但仍在使用)
ifconfig
route -nbash
$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:a1:b2:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86300sec preferred_lft 86300sec
$ ip r
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 1009.2 网络诊断工具
bash
# ping — 测试连通性
ping -c 4 google.com
# ss — 查看套接字信息(替代 netstat)
ss -tulnp # t=TCP, u=UDP, l=监听, n=数字, p=进程
# netstat — 老式套接字查看
netstat -tulnp
# curl — HTTP 请求工具
curl https://httpbin.org/ip
curl -I https://example.com # 只获取响应头
curl -o file.tar.gz https://example.com/file.tar.gz # 下载文件
# wget — 下载工具
wget https://example.com/file.tar.gz
wget -c https://example.com/large.iso # 断点续传
# dig / nslookup — DNS 查询
dig example.com
nslookup example.com
# traceroute — 追踪路由
traceroute google.com
# mtr — 实时路由追踪
mtr google.combash
$ ping -c 4 google.com
PING google.com (142.250.80.46) 56(84) bytes of data.
64 bytes from 142.250.80.46: icmp_seq=1 ttl=116 time=5.23 ms
64 bytes from 142.250.80.46: icmp_seq=2 ttl=116 time=5.45 ms
64 bytes from 142.250.80.46: icmp_seq=3 ttl=116 time=5.12 ms
64 bytes from 142.250.80.46: icmp_seq=4 ttl=116 time=5.34 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 5.120/5.285/5.450/0.123 ms
$ ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1234,fd=4))
$ curl -s https://httpbin.org/ip
{
"origin": "203.0.113.45"
}
$ dig example.com +short
93.184.216.349.3 防火墙基础(ufw / firewalld)
bash
# Ubuntu — ufw (Uncomplicated Firewall)
sudo ufw status
sudo ufw enable
sudo ufw allow 22/tcp # 允许 SSH
sudo ufw allow 80,443/tcp # 允许 HTTP/HTTPS
sudo ufw allow from 192.168.1.0/24 # 允许内网访问
sudo ufw deny 3306 # 禁止 MySQL 端口
sudo ufw delete allow 80/tcp # 删除规则
# CentOS/RHEL — firewalld
sudo firewall-cmd --state
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
# iptables(底层工具,所有防火墙的底层)
sudo iptables -L -n -v # 查看规则
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -s 10.0.0.0/8 -j DROPbash
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
192.168.1.0/24 ALLOW IN Anywhere⚠️ 注意: ⚠️ 重要:远程服务器配置防火墙时,务必先允许 SSH 端口,否则你会被锁在门外!