1. 把linux配置成路由器

准备一台机器:
改主机名 hostnamectl set-hostname network01 #bash生效
重启网络服务systemctl restart network

新增网卡如何操作:

  1. cd /etc/sysconfig/network-scripts/
  2. cp ifcfg-eth0 ifcfg-eth1
  3. vim ifcfg-eth1
  4. TYPE=Ethernet
  5. BOOTPROTO=none
  6. NAME=eth1
  7. DEVICE=eth1
  8. ONBOOT=yes
  9. IPADDR=172.16.1.11
  10. NETMASK=255.255.255.0
  11. systemct1 restart network
  12. ip addr 查看

由于配置的静态路由就是相当于网关的一种,所以在配置网卡时,要记得删除网关,DNS。 数据在传输的过程中随着数据的传送 物理地址一直改变,但是源IP和目标Ip不变 26.  静态路由和iptables - 图1

2. iptables防火墙


参数; -I 插入一条规则,(默认是从自上而下应用规则,所以咋插入规则时,要考虑先后顺序,尤其是在配置白名单的时候,注意不要先设置白名规则,要不然你可能自己都登陆不上了)
-A 追加新的规则
-D 删除规则
-F 清空所有规则
-P 修改某个链默认规则
iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置。

2.1 iptables中的四表五链

  1. 四表
  2.     filter 过滤数据包
  3.     nat nat地址转换上网【内网转外网的功能】
  4.     mangle 修改数据包
  5.     raw 追踪数据包
  6. 五链:
  7.     PREROUING 在进入路由之前 (地址转换,改写等操作)
  8.     INPUT 要对数据跑过滤
  9.     FORWARD 转发功能
  10.     OUTPUT
  11.     POST 地址转换

image.png

2.2iptables练习

黑名单规则
网站服务器:默认模式是黑名单所有人都可以访问80端口,只允许指定的ip可以访问22端口
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
iptables -A INPUT --protocol tcp --dport 22 -j DROP

白名单规则
白名单模式: 默认规则是拒绝所有人都可以访问80端口,只允许指定的ip可以访问22端口
iptables -F
iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
iptables -I INPUT --source 10.0.0.1 --protocol icmp -j ACCEPT
iptables -P INPUT DROP

拦截数据包发送到指定IP:
26.  静态路由和iptables - 图3
—destination 指定目的IP :
26.  静态路由和iptables - 图4

2.3 iptables实现共享上网

端口映射 (作用:在外网可以访问内网)

  1. network2 添加网网关,使其可以上外网。

route add -net 0.0.0.0/0 gw 10.0.0.2(0.0.0.0/0代表任意网段)

  1. 恢复默认规则 FORWARD链设为允许,清空链规则

iptables -P FORWARD ACCCEPT
查看:
iptables -L -n
iptables -F

  1. netwark03通过net共享上网

vim配置网卡 nwtwark02 172.16.1.12作为网关。
DNS为223.5.5.5—-> 重启网络服务

  1. netwark02已经可以接受到network03的数据了,但是netwaok03不能上网需要network2打开地址转换功能

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUARADE(动作:模拟地址转换)

  1. network01 开启内核转发参数 (sysctl -a| grep ipv4.ip_forward 查看 )

echo 'net.ipv4,ip_forward=1'>>/etc/sysctl.conf #永久生效
sysctl -p

ps:通过对network02进行抓包 tcpdump -i eth1 icmp nn tcpdump -i eth0 icmp nn IP地址转换: 172.1.13—-> 0.0.0.12

2.4 端口映射

  1. -t nat
  2. -APREROUTING链―数据包进来的时候做处理-d 目的ip10.0.0.12
  3. -p tcp协议
  4. -dport目的端口-j 指定动作―DNATDNAT―做目的ip地址转换
  5. --to-destination 192.168.0.222
  6. 规则内容1: 在外网访问公司内网主机上的服务
  7. iptables -t nat -A PREROUTING -d 10.0.0.12 -p tcp --dport 3022 -j DNAT --to-destination 172.16.1.26:22
  8. 规则内容2:只有指定的IP访问指定的端口才能进入
  9. iptables -t nat -A PREROUTING -d 10.0.0.12 -p tcp --dport 1080 -j DNAT --to-destination 192.168.0.50:80

效果:
image.png
image.png