Linux网络相关知识(含iptables基础)

本文详细介绍Linux下的网络配置方法,包括查看与设置网卡信息、创建虚拟网卡及网络故障排查技巧。同时深入探讨iptables防火墙规则设置,涵盖基本语法、常用命令及实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文索引

  • Linux网络相关命令
    • 查看网卡信息:ifconfig
    • 手动启动/关闭特定网卡:ifup/ifdown
    • 设置虚拟网卡
    • 查看网卡是否连接:mii-tool/ethtool
    • 更改主机名
  • netfilter(6.x) / firewalld(7.x)
    • selinux的关闭
    • 启动iptables服务
  • netfilter 5表5链
    • 5表:filter/nat/mangle/raw/security
    • 5链:INPUT/OUTPUT/PREROUTING/FORWARD/POSTROUTING
  • iptables语法

Linux网络相关命令

查看网卡信息:ifconfig

安装:yum install -y net-tools

[root@centos7 ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.65.130  netmask 255.255.255.0  broadcast 192.168.65.255
        ...

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        ...
手动启动/关闭特定网卡

ifup/ifdown ens33

设置虚拟网卡
  1. 拷贝网卡文件为新文件
# 这里在命令行模式下要转义:即\:
[root@centos7 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1
  1. 修改新的网卡文件
[root@centos7 network-scripts]# vim ifcfg-ens33:1 
# 其中只要修改IPADDR、DEVICE和NAME三列即可
# 这里要删除UUID(唯一性),可以将DNS,GATEWAY行也删掉(可选)
  1. 重新启动ens33网卡,附带的新建的虚拟网卡也会重启生效
[root@centos7 network-scripts]# ifdown ens33 && ifup ens33
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
  1. 使用ifconfig验证
[root@centos7 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.65.133  netmask 255.255.255.0  broadcast 192.168.65.255
        ...

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.65.143  netmask 255.255.255.0  broadcast 192.168.65.255
        ether 00:0c:29:94:84:1f  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        ...

在物理机测试ping可通,证明配置成功

C:\Users\18367>ping 192.168.65.143

正在 Ping 192.168.65.143 具有 32 字节的数据:
来自 192.168.65.143 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.65.143 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.65.143 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.65.143 的回复: 字节=32 时间<1ms TTL=64

192.168.65.143 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
查看网卡是否连接

mii-tool | ethtool

1. 可以使用mii-tool命令查看
[root@centos7 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

2. 也可以使用ethtool命令查看
[root@centos7 network-scripts]# ethtool ens33 | tail -n 1
	Link detected: yes
更改主机名

下列命令只支持centos7.x

hostnamectl set-hostname HOST

上列的命令在当前终端下并不会立即生效,需要重启!

在/etc/hostname文件中可以查看系统主机的hostname。

主机host的配置文件为/etc/hosts,修改其内容只在本机生效!

若存在多个ip指向同一个域名,只有最后一行的ip生效!即后面设置的同域名的ip将覆盖前面的ip!

此外同一个ip可以指向多个域名,在hosts文件内可以写在一行内即

192.168.1.110 www.123.com www.qq.com www.baidu.com

修改hosts文件,指定2个ip指向同一个域名
[root@centos7 network-scripts]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.25 www.baidu.com
192.168.1.35 www.baidu.com
~ 

上述配置之后只有后一个ip192.168.1.35生效;同样的指向同一个域名的多个ip,只有最后一个ip生效

[root@centos7 network-scripts]# ping www.baidu.com
PING www.a.shifen.com (192.168.1.35) 56(84) bytes of data.
64 bytes from 192.168.1.35 (192.168.1.35): icmp_seq=1 ttl=128 time=29.6 ms
....

/etc/resolv.conf文件存放系统的DNS,该DNS由网卡的配置文件中的DNS列定义产生。

netfilter(6.x) / firewalld(7.x)

selinux的关闭

配置时必须关闭selinux,否则防火墙无法正常运行

  • 临时关闭: setenforce 0
  • 永久关闭: 修改/etc/selinux/config文件 -> SELINUX=disabled
  • 查看:getenforce
启动iptables服务
  1. 关闭7.x版本默认的firewalld服务
disable禁止开机启动,stop关闭服务
[root@centos7 network-scripts]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

[root@centos7 network-scripts]# systemctl stop firewalld
  1. 安装iptables服务
[root@centos7 network-scripts]# yum install -y iptables-services
  1. 设置开机启动iptables,并立即启动iptables
[root@centos7 network-scripts]# systemctl enable iptables
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[root@centos7 network-scripts]# systemctl start iptables
  1. 查看当前规则
[root@centos7 network-scripts]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   28  1848 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    ...        

netfilter 5表5链

!centos6中只有4个表(没有security);7.x版本有5个表(及其使用的链),如下:

  • filter(多用于过滤包)
    • INPUT
    • FORWARD
    • OUTPUT
  • nat(用于网络地址转换)
    • PREROUTING
    • OUTPUT
    • POSTROUTING
  • mangle(标记数据包)
  • raw(不追踪某些数据包)
  • security(用于MAC的网络规则)

相关的有5个链

  • PREROUTING
  • INPUT
  • OUTPUT
  • FORWARD
  • POSTROUTING

数据经过本机 PREROUTING -> FORWARD -> POSTROUTING

数据不经过本机 PREROUTING -> INPUT -> OUTPUT -> POSTROUTING

工作中主要使用的是filter和nat表,后3个表使用不多

iptables详解 http://www.cnblogs.com/metoy/p/4320813.html

iptables语法

iptables默认规则配置文件 /etc/sysconfig/iptables

  • 查看规则: iptables -nvL
  • 清空规则: iptables -F
    • 执行后默认的规则表并不会清空,需要执行service iptables save存操作
  • 指定表(默认为filter):iptables -t nat
  • 清空计数器(清空规则记录的数据量):iptables -Z
命令参数
  • -A 在所选链的最后添加一或多条规则
  • -I 在所选链的第一个规则前插入规则;加规则序号,在指定规则前插入
  • -D 删除所选链中的规则(也可以是规则序号)
  • -R 替换所选链中的规则
  • -L 列出所选链中的所有规则
  • -S 打印所选链的所有规则,默认打印所有链的规则
  • -F 清空所选链的规则
  • -p 指定规则的协议tcp/udp...
  • -s 指定源地址
  • -d 指定目标地址
  • -j 指定规则的目标 DROP/REJECT/ACCEPT
  • -i 指定网卡
  • --sport/dport 指定源/目的端口
在INPUT链的最后追加一条规则
[root@localhost network-scripts]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
不指定目标ip,默认代表所有
# 在首行插入规则
[root@localhost network-scripts]# iptables -I INPUT -s 1.1.1.1 -j DROP
# 在末行添加规则
[root@localhost network-scripts]# iptables -A INPUT -s 1.1.1.1 -j DROP
# 删除某条规则(对应添加时的规则)
[root@localhost network-scripts]# iptables -D INPUT -s 1.1.1.1 -j DROP
设置关于特定的网卡的规则
# -i指定网卡
[root@localhost network-scripts]# iptables -I INPUT -s 192.168.1.0/24 -i ens33 -j ACCEPT
根据规则编号删除规则
[root@localhost network-scripts]# iptables -nvL --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      184 13824 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
5        6   468 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 141 packets, 10976 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

# 删除第一条
[root@localhost network-scripts]# iptables -D INPUT 1
设置指定链的默认策略
# 默认INPUT的策略为ACCEPT
[root@localhost network-scripts]# iptables -P INPUT DROP
# 这里需要注意的是,一旦修改默认策略为DROP,你的ssh通信的数据包将被丢弃,无法远程连接,只能连物理机修改!所以最好不要乱修改,保持默认即可!

转载于:https://my.oschina.net/LuCastiel/blog/1581807

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值