日常运维(Ⅱ)
十二、防火墙 firewalld和netfilter
12.1 SELinux
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。 SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。 SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
- SElinux临时关闭防火墙 : setenforce 0
[root@damozhiying ~]# setenforce 0
- SElinux临时打开防火墙 : getenforce
[root@damozhiying ~]# getenforce Permissive
- SElinux永久关闭防火墙:vi /etc/selinux/config----把SELINUX=disabled
[root@damozhiying ~]# vi /etc/selinux/config
打开配置文件后,给SElinux赋值为:SELINUX=disabled
# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection.SELINUXTYPE=targeted
12.2 netfilter
netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。
netfilter是之前CentOS 7之前的防火墙,CentOS 7的防火墙是firewalld。目前大多企业还是用CentOS6,防火墙还是用的是netfilter。iptables是设置防火墙的一种工具;因为有必要学习netfilter相关知识;
- 关闭firewalld
[root@damozhiying ~]# systemctl disable firewalld //开机停止启动Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@damozhiying ~]# systemctl stop firewalld //停止服务
- 开启netfilter;此时需要先安装yum install -y iptables-services(实际就是netfilter)
[root@damozhiying ~]# systemctl enable iptables //设置开机启动Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.[root@damozhiying ~]# systemctl start iptables //开启服务
- 查看CentOS上默认的iptables规则: iptables -nvL
[root@damozhiying ~]# iptables -nvLChain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 63 4184 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 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT 34 packets, 3216 bytes) pkts bytes target prot opt in out source destination
- 清除CentOS上默认的iptables规则
[root@damozhiying ~]# iptables -F; service iptables save //清除iptables规则,并保存iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]
- 清除后,再次查看iptables规则
[root@damozhiying ~]# iptables -nvLChain INPUT (policy ACCEPT 34 packets, 2468 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 20 packets, 2608 bytes) pkts bytes target prot opt in out source destination
- 查看iptables规则配置文件
[root@damozhiying ~]# cat /etc/sysconfig/iptables# Generated by iptables-save v1.4.21 on Tue Jun 12 16:35:17 2018*filter:INPUT ACCEPT [1:40]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [1:156]COMMIT# Completed on Tue Jun 12 16:35:17 2018
netfilter的5个表;一般常用(filter和nat表)
-
filter表主要用于过滤包,是系统预设的表,该表有3个链:
- INPUT:进入本机的包
- OUTPUT:本机送出的包
- FORWARD:那些跟本机无关的包
-
nat表主要用于网络地址转换,他也有3个链
- PREROUTING:包刚刚到达防火墙时该表他的目的地址
- OUTPUT:改变本地产生的包的目的地址
- POSTROUTING:包即将离开防火墙时该表其源地址
-
mangle表主要用于给数据包做标记;
-
raw表可以实现不追踪某些数据包,默认系统的数据包都会被追踪;
-
security表用于强制访问MAC的网络规则; (在centos6中并没有)
netfiler的5个链:
链名 | 释义 |
---|---|
PREROUTING | 数据包进入路由之前 |
INPUT | 通过路由表后,目的地为本机 |
FORWARDING | 通过路由表后,目的地不为本机 |
OUTPUT | 由本机产生,向外转变 |
POSTROUTING | 发送到网卡接口之前 |
表链的关系和作用可以理解为三个机器A\B\C之间,A和B有公网实现通讯传输,B和C通过私网进行传输,为了能让A和C之间通信,把B作为网络映射的过程.
iptables传输数据包的过程
- 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
- 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
- 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
十三、iptables语法
iptables是一个非常复杂和功能丰富的工具,所以它的语法也是很有特点的。
13.1 iptables的查看及清除规制:
查看规则:iptables -t 表名 -nvL ; 清除规则是:iptables -t 表名 -F(或z)
选项释义:
- -nvL 表示查看该表的规则;
- -n 表示不针对IP反解析主机名;
- -L 表示列出;
- -v 表示列出的信息更加详细;
- -t 后面跟表名;没有此选项,默认为filter;
- -F 表示把所有规则删除;
- -Z 把包以及流量计数器重置为零;
iptables -nvL (默认表示filter表)
[root@damozhiying ~]# iptables -nvL //查看filter表常规用法Chain INPUT (policy ACCEPT 194 packets, 17327 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 165 packets, 16343 bytes) pkts bytes target prot opt in out source destination [root@damozhiying ~]# iptables -t filter -nvL //习惯上用上面的用法查看Chain INPUT (policy ACCEPT 225 packets, 19531 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 185 packets, 18603 bytes) pkts bytes target prot opt in out source destination
比如查看nat表的规则:iptables -t nat -nvL 此时需要用-t选项
[root@damozhiying ~]# iptables -t nat -nvLChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) //PREROUTING链 pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets, 0 bytes) //INPUT链 pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 30 packets, 2872 bytes) //OUTPUT链 pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 30 packets, 2872 bytes) pkts bytes target prot opt in out source destination
-F 清空所有规则
[root@damozhiying ~]# iptables -t nat -F //清空nat表的所有规则[root@damozhiying ~]# iptables -F //清空filter表
-Z 把包以及流量计数器重置为零
[root@damozhiying ~]# iptables -t nat -Z //重置nat表计数器[root@damozhiying ~]# iptables -Z //重置filter表的计数器
13.2 实战规则
此规则在实际经验比较常用,规则为:
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
里面的选项释义:(注意无-t选项,这个针对filter表)
- -A 表示增加一条规则,排队,只能在最后面
- -I 表示插入一条规则,效果和-A一样,插队
- -D 删除一条规则;
- -s 后跟源地址;
- -p 协议(tcp, udp, icmp);
- --sport/--dport 和-p一起使用,后跟源端口/目标端口;
- -d 后跟目的IP(主要针对内网或者外网);
- -j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。
- -i 表示指定网卡(不常用,但是偶尔能用到)
插入一条规则,把来自1.1.1.1的数据包丢掉, 如下:
[root@damozhiying ~]# iptables -I INPUT -s 1.1.1.1 -j DROP
删除刚刚插入的规则, 如下:(注意:插入I,删除D )
[root@damozhiying ~]# iptables -D INPUT -s 1.1.1.1 -j DROP
把来自2.2.2.2并且是TCP协议到本机80端口的数据包丢掉,如下:
[root@damozhiying ~]# iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP
注意上面,--dport/--sport必须和-p选项一起使用,否则会出错.
把发送到10.0.1.14的22端口的数据包丢掉,如下:
[root@damozhiying ~]# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP
iptables -nvL --line-numbers有时候服务器上的iptables规则过多了,想删除某一条规则,但又不容易掌握创建时的规则,其实有一种比较简单的方法;
先查看iptables规则,示例命令如下:
[root@damozhiying ~]# iptables -nvL --line-numbersChain INPUT (policy ACCEPT 113 packets, 10732 bytes)num pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 96 packets, 8904 bytes)num pkts bytes target prot opt in out source destination
然后删除某一条规则,使用如下: iptables -D 链名 num (num就是num下的值)
[root@damozhiying ~]# iptables -D INPUT 1iptables: Index of deletion too big.
- -P选项,它表示预设策略;
iptables -P OUTPUT DROP //扔掉发出的所有数据包
-P后面跟链名,策略内容或为DROP,或为ACCEPT,默认后者。需要注意的是:如果在连接远程服务器的时候,千万不要随便执行这个命令,执行后,远程连接会断开; 假如要恢复:需要执行命令:iptables -P OUTPUT ACCEPT
十四、iptables filter表小案例
- 案例一:
针对filter表,预设策略INPUT链DROP,其他2个链ACCEPT,然后针对192.168.112.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口
针对这个需求,我们需要些一个脚本:
#!/bin/bash //定义解释器IPT="/usr/sbin/iptables" //定义变量名$IPT -F //清空所有规则$IPT -P INPUT DROP //把INPUT链收到的数据包扔掉$IPT -P FORWARD ACCEPT //接受FORWARD的数据包$IPT -P OUTPUT ACCEPT //接受发送出去的所有数据包$IPT -A INPUT -p tcp -s 192.168.112.0/24 --dport 22 -j ACCEPT //针对192.168.112.0/24开通22端口,$IPT -A INPUT -p tcp --dport 80 -j ACCEPT //开放80端口$IPT -A INPUT -p tcp --dport 21 -j ACCEPT //开放21端口
打开 vim /usr/local/sbin/iptables.sh 把上面的脚本写入这个shell
[root@damozhiying ~]# vim /usr/local/sbin/iptables.sh[root@damozhiying ~]# cat !$cat /usr/local/sbin/iptables.sh#!/bin/bash IPT="/usr/sbin/iptables" $IPT -F $IPT -P INPUT DROP $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -A INPUT -p tcp -s 192.168.112.0/24 --dport 22 -j ACCEPT $IPT -A INPUT -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -p tcp --dport 21 -j ACCEP
查看其iptables规则:iptables -nvL
[root@damozhiying ~]# iptables -nvLChain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 119 11853 ACCEPT tcp -- * * 192.168.112.0/24 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 98 packets, 17741 bytes) pkts bytes target prot opt in out source destination
- 案例二:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP //不允许接受icmp数据包到本地
这条命令,作用是禁止他人ping你的机器,而你可以ping通其他机器。
十五、iptables nat表应用
15.1 需求1:B机器联网外网
A机器2块网卡分别是外网和内网,B机器只有内网,可以让B机器联网外网
首先我们做个测试:
步骤1:在虚拟机。A机器添加一个内网网卡,B机器也添加内网网卡。 网卡模式并设置为LAN区段,自定义名字一样。
按下图:添加网络适配器
默认,完成
按图,新建LAN区段,名称任意
按下图,选择新建的LAN区段
此时,可以看到机器A的新增网卡设置完成
设置B机器的网卡
同样按之前设置,选择相同LAN区段,目的是保证A、B机器的处于同一网段;
完成后,下图可以看B机器和A处于同一网段
此时查看机器A的网卡
[root@damozhiying ~]# ifconfig ens33: flags=4163mtu 1500 inet 192.168.112.136 netmask 255.255.255.0 broadcast 192.168.112.255 inet6 fe80::16dc:89c:b761:e115 prefixlen 64 scopeid 0x20 ether 00:0c:29:87:3f:91 txqueuelen 1000 (Ethernet) RX packets 88 bytes 9771 (9.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 84 bytes 9697 (9.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163 mtu 1500 inet 192.168.112.158 netmask 255.255.255.0 broadcast 192.168.112.255 ether 00:0c:29:87:3f:91 txqueuelen 1000 (Ethernet)ens37: flags=4163 mtu 1500 inet6 fe80::ad38:a02e:964e:1b93 prefixlen 64 scopeid 0x20 //新增的网卡,无IP ether 00:0c:29:87:3f:9b txqueuelen 1000 (Ethernet) RX packets 7 bytes 2394 (2.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 26 bytes 4668 (4.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
给ens37 设置IP;并查看
[root@damozhiying ~]# ifconfig ens37 192.168.112.1/24[root@damozhiying ~]# ifconfig ens33: flags=4163mtu 1500 inet 192.168.112.136 netmask 255.255.255.0 broadcast 192.168.112.255 inet6 fe80::16dc:89c:b761:e115 prefixlen 64 scopeid 0x20 ether 00:0c:29:87:3f:91 txqueuelen 1000 (Ethernet) RX packets 466 bytes 39486 (38.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 220 bytes 28218 (27.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163 mtu 1500 inet 192.168.112.158 netmask 255.255.255.0 broadcast 192.168.112.255 ether 00:0c:29:87:3f:91 txqueuelen 1000 (Ethernet)ens37: flags=4163 mtu 1500 //设置的IP:192.168.100.1 生效 inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::20c:29ff:fe87:3f9b prefixlen 64 scopeid 0x20 ether 00:0c:29:87:3f:9b txqueuelen 1000 (Ethernet) RX packets 47 bytes 13970 (13.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 69 bytes 10998 (10.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
现在操作机器B;
关闭能联网的ens33网卡;
同样给ens37设置IP:192.168.100.100;
此时机器B,可以与机器A联网;
看机器A,也可以和机器B联网
[root@damozhiying ~]# ping 192.168.100.100PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=0.501 ms64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=1.35 ms64 bytes from 192.168.100.100: icmp_seq=3 ttl=64 time=0.240 ms^C--- 192.168.100.100 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2002msrtt min/avg/max/mdev = 0.240/0.700/1.359/0.478 ms
但是此时只是机器A和机器B相连,却不能连接外网;
在机器A上设置,打开路由转发;
[root@damozhiying ~]# cat /proc/sys/net/ipv4/ip_forward //查看路由转发,O为关闭0[root@damozhiying ~]# echo ' 1'> !$ //定义为1,说明路由转发打开echo ' 1'> /proc/sys/net/ipv4/ip_forward[root@damozhiying ~]# !cat //再查看,确认为打开cat /proc/sys/net/ipv4/ip_forward1
增加规则,并查看 (规则的目的是让100.0的网段能够上网)
[root@damozhiying ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE[root@damozhiying ~]# iptables -t nat -nvL //查看nat表的规则Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * ens33 192.168.100.0/24 0.0.0.0/0
B机器设置网关;
设置DNS,在vi /etc/resolv.conf 添加 nameserver :119.29.29.29
从上图,机器B已经可以联网了;需求1成功;
15.2 需求2:C机器连接B机器
C机器只能和A通信,让C机器可以直接连通B机器的22端口
分析:192.168.112.136的端口22映射到端口映射 1122 连接B机器的192.168.100.100
B机器的192.168.100.100的端口22,映射为1122的端口,用192.168.112.136连接1122端口,也就是 连接192.168.100.100的22端口;
首先设置机器A;清除之前设置的规则
[root@damozhiying ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE[root@damozhiying ~]# iptables -t nat -nvL //查看规则,发现为空Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
增加新的规则,并查看规则
[root@damozhiying ~]# iptables -t nat -A PREROUTING -d 192.168.112.136 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22[root@damozhiying ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.112.136 [root@damozhiying ~]# iptables -t nat -nvLChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.112.136 tcp dpt:1122 to:192.168.100.100:22Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 192.168.100.100 0.0.0.0/0 to:192.168.112.136
此时需要给B机器设置网关;之前已经设置了。若没有设置必须设置,才能联网;
新建一个xshell会话,安装下图操作;
输入机器A的192.168.112.136的登录名和密码;
注意:机器A有两个网卡:192.168.112.136和192.168.112.100.1;192.168.112.136这个一直和主机相连接;因此机器A一直可以用Xshell远程登录;
在nattext100 会话中,查看网卡,
[root@ying02 ~]# ifconfig ens33: flags=4099mtu 1500 //机器B,关闭的网卡 ether 00:0c:29:c6:2c:24 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens37: flags=4163 mtu 1500 //ip为192.100.100.100,说明为机器B inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::20c:29ff:fec6:2c2e prefixlen 64 scopeid 0x20 ether 00:0c:29:c6:2c:2e txqueuelen 1000 (Ethernet) RX packets 337 bytes 40073 (39.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 503 bytes 66978 (65.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 440 bytes 36824 (35.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 440 bytes 36824 (35.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0连接外网[root@ying02 ~]# ping www.baidu.com //连接外网,可以连通PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=127 time=8.83 ms64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=127 time=7.57 ms^C--- www.a.shifen.com ping statistics ---
用W查看系统负载,可以看到源来自192.168.112.1就是C机器
[root@ying02 ~]# w 14:19:11 up 1:17, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 13:11 15:27 0.09s 0.09s -bashroot pts/0 192.168.112.1 14:18 7.00s 0.03s 0.02s w //源为windows机器
这说明了,机器C:192.168.112.1已经和机器B:192.168.100.100相连。机器C和A能够通信,而通过A机器来连接B机器的映射端口1122,达到了C和B通信;而且机器B也通过映射端口1122,能够连接外网。