iptables、共享上网SNAT、端口转发DNAT

这篇具有很好参考价值的文章主要介绍了iptables、共享上网SNAT、端口转发DNAT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

iptables、共享上网SNAT、端口转发DNAT

1.防火墙概述

封端⼝,封ip
实现NAT功能
共享上⽹
端⼝映射(端⼝转发),ip映射

2.防火墙

2.1防火墙种类以及使用说明

硬件:整个企业入口

软件:开源软件 网站内部 封ip
iptables

云防火墙
安全组
NAT网关
waf应用防火墙

2.2专有名词

容器、表、链、规则

2.3iptables执行过程

1.防⽕墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进⾏过滤的。
2.如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT)数据包就不再向下匹配新的规则
3.如果规则中没有明确表明是阻⽌还是通过的,也就是没有匹配规则,向下进⾏匹配,直到匹配默认规则得到明确的阻⽌还是通过。
4.防⽕墙的默认规则所有规则都匹配完才会匹配的

2.4表与链

iptables 是 4表伍链
4表: filter 表 nat表 raw表 mangle表
伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING

1.filter表
实现防火墙功能:屏蔽或准许端口ip

iptables、共享上网SNAT、端口转发DNAT

2.nat表
实现nat功能:实现共享上网 端口映射和ip映射

iptables、共享上网SNAT、端口转发DNAT

2.5环境准备及命令

先关闭防火墙

systmectl stop firewalld
systemctl disable firewalld

1.安装并启动

yum install iptables-services
   
systemctl enable iptables
systemctl start iptables

2.设置开机自启防火墙相关模块

cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state 
EOF

lsmod | egrep 'filter|nat|ipt'

3.查看规则

iptables -nL 默认filter -n不要把端⼝ 或ip反向解析为名字 -L 列出规则

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  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
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

查看指定表的规则 iptables -t nat -nL

[root@localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination 

配置filter表规则

-A 添加防火墙规则(尾部追加)
-D 删除防火墙规则
-I 插入防火墙规则(首部插入)
-F 清空防火墙规则
-X 删除用户自定义的链
-L 列出添加防火墙规则
-R 替换防火墙规则
-Z 清空防火墙数据表统计信息
-P 设置链默认规则
-p 协议 protocal tcp/udp/icmp/all 指定端口的时候需要用到指定协议
--dport 目标端口
-j 满足条件后的动作 DROP/ACCEPT/REJECT drop 把数据丢掉不会返回给用户 reject 返回拒绝信息
-s --source 源ip
-d --destination ⽬标ip

1.先清空规则

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables -Z
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

2.添加规则

iptables -t filter -I INPUT -p tcp --dport 22122 -j drop

3.删除规则

iptables -t filter -D INPUT 1  //1是行号 上述添加的规则的行号

1:封ip

1.192.168.70.133机器 ping 192.168.70.136机器

[root@web2 ~]# ping 192.168.70.136
PING 192.168.70.136 (192.168.70.136) 56(84) bytes of data.
64 bytes from 192.168.70.136: icmp_seq=1 ttl=64 time=0.937 ms

2.136机器添加规则

iptables -t filter -I INPUT -s 192.168.70.134 -j DROP

3.删除规则

iptables -D INPUT 1  //删除后可以发现又继续ping了

2:禁止网段访问指定端口

iptables -t filter -I INPUT -s 192.168.70.0/24 -p tcp --dport 8888 -j DROP

3:只允许指定网段连入

iptables -I INPUT ! -S 192.168.70.0/24 -j DROP

4:指定多端口

iptables  -I INPUT -m multiport -p tcp --dport 80,433 -j DROP  //禁止80和433端口
iptables  -I INPUT -p tcp --dport 1:10 -j DROP  //禁止1-10端口

5:控制是否能ping

iptables -I INPUT -p icmp -j DROP

另一种方法

vim /etc/sysctl.conf  //添加如下一条指令
net.ipv4.icmp_echo_ignore_all = 1

sysctl -p  //生效

6:匹配⽹络状态(TCP/IP连接状态)

NEW:已经或将启动新的连接
ESTABLISHED:已建⽴的连接
RELATED:正在启动的新连接INVALID:⾮法或⽆法识别的

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

7:限制并发及速率

-m limit --limit 10/minute #每分钟只能有10个数据包 每6秒⽣成

8:防⽕墙规则的保存与恢复

iptables-save 默认输出到屏幕
iptables-restore 加上⽂件
写⼊到/etc/sysconfig/iptables

iptables-save > /etc/sysconfig/iptables

iptables-restore < /etc/sysconfig/iptables

3.实际⽣产⽤法

iptables -F
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s 允许的IP地址 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables-save

4.共享上网SNAT

实现:内部网络的服务器通过可访问外网的机器访问到外网

环境准备

server01设置为VMnet2 192.168.100.18
server02设置为NAT 192.168.70.134 网络再添加一个网卡VMnet2 192.168.100.16

1.设置好server01的ip

[root@server01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="none"
IPADDR=192.168.100.18
NETMASK=255.255.255.0
NAME="ens33"
DEVICE="ens33"
DNS1=114.114.114.114

2.设置好server02的ip

[root@server02 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:13:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.70.134/24 brd 192.168.70.255 scope global noprefixroute dynamic ens33
       valid_lft 5270229sec preferred_lft 5270229sec
    inet6 fe80::725c:49ee:6f78:42a0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 00:0c:29:eb:13:92 brd ff:ff:ff:ff:ff:ff
    
[root@server02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO="none"
IPADDR=192.168.100.16
NETMASK=255.255.255.0
NAME="ens37"
DEVICE="ens37"
DNS1=114.114.114.114

[root@server02 ~]# systemctl restart network
[root@server02 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:13:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.70.134/24 brd 192.168.70.255 scope global noprefixroute dynamic ens33
       valid_lft 5269237sec preferred_lft 5269237sec
    inet6 fe80::725c:49ee:6f78:42a0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:13:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.16/24 brd 192.168.100.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feeb:1392/64 scope link 
       valid_lft forever preferred_lft forever

3.测试ping相互下一

[root@server01 ~]# ping 192.168.100.16

4.server02开启转发功能

[root@serve02 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@serve02 ~]# sysctl -p

5.server02设置iptables

[root@serve02 ~]# iptables  -t  nat  -A POSTROUTING  -s  192.168.100.0/24 -j SNAT --to-source 192.168.70.134

6.测试

[root@server01 ~]# ping baidu.com  //能通则成功了

[root@server02 ~]# iptables  -t  nat  -D POSTROUTING 1  //再试着关闭规则 再试试ping

5.端口转发DNAT

在上述snat基础上增加一台机器server03

1.server02添加prerouting规则

iptables -t nat -A PREROUTING -d 192.168.70.134 -p tcp --dport 9000 -j DNAT --to-destination 192.168.100.18:22

2.server03测试文章来源地址https://www.toymoban.com/news/detail-692561.html

[root@localhost ~]# ssh 192.168.70.134 -p 9000
root@192.168.70.134's password: 
Last login: Fri Sep  1 20:37:06 2023

[root@localhost ~]# ip a  //查看端口可以发现连上的是server01
1: lo: <LOOPBACK,UP,LOWER_UP> 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:18:39:18 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.18/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::725c:49ee:6f78:42a0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

到了这里,关于iptables、共享上网SNAT、端口转发DNAT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Proxmox VE 网络配置 NAT共享IP 端口映射iptables、brook

    配置桥接网卡,使Proxmox VE(PVE)可以同时创建NAT虚拟机和独立IP虚拟机,同时可以使用脚本映射NAT虚拟机的端口到外网。 文件最后加入如下配置 新增一个vmbr172网桥,并设置流量转发 重启 此处使用的是ubuntu做dhcp服务器 参考地址 IPv4是经过内网转发的,所以现在只可以访问外网

    2024年02月20日
    浏览(30)
  • iptables 防火墙(二)SNAT/DNAT

    目录 一:SNAT原理与应用 1.SNAT介绍 2.SNAT 应用环境 3.SNAT原理 二:SNAT配置 第一步:设置各个端口的网卡   1.先准备客户机、web服务器、网关服务器   2.网关服务器设置 (1)添加网卡 (2)修改ens32 为网关服务器的内网网卡 ​(3)修改新加网卡ens33为外网网卡  3.客户机设置

    2024年02月06日
    浏览(27)
  • Linux iptables实现(SNAT)源地址转换以及http访问控制

    一、实现拓扑 二、实验要求                 1、实验要求SNAT:内网主机访问外网主机,通过iptables进行原地址转换,允许访问外网的httpd和ping         2、外网主机访问内网主机的http服务通过iptables进行目的地址(DNAT)转换         3、仅允许内网主机使用ssh远程管

    2024年02月06日
    浏览(35)
  • Android11.0 系统限制上网系统之iptables用IOemNetd实现app上网黑名单的实现

    在11.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置屏蔽某个app上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app上网黑名单的的相关功能,就是在 系统中只能不允许某个app上网,就是除了这

    2024年02月15日
    浏览(37)
  • Android 11.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现

    在11.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app某个时间段禁止上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app某个时间段禁止上网的的相关功能,就是在 系统中只能允许某个app某个

    2024年02月14日
    浏览(39)
  • iptables封禁端口

    需求:之前运维的服务器,爆出漏洞,我要做的就是把5000接口封禁。 然后找了一些iptables的教程。最终解决方案如下: 执行完,立即生效 配套资料 1. 禁止指定 IP 2. 禁止指定 IP段 3. 禁止指定 IP和端口 4. iptables 解封禁止 IP 参数-I是表示 Insert (添加),-D表示 Delete (删除)。

    2024年02月15日
    浏览(29)
  • iptables规则链封端口

    禁止所有IP访问k8s的10250端口 允许192.14.10.0/24网段访问10250端口 查看INPUT策略 删除INPUT策略 限制docker指定端口访问策略 禁止所有IP访问docker的389端口 允许172.27.30.92地址访问docker的389端口 查询DOCKER-USER策略 删除DOCKER-USER策略 保存DOCKER-USER策略,默认临时生效 限制IP访问 首先需添

    2023年04月22日
    浏览(31)
  • Linux iptables配置开启80端口

    在Linux服务器上,我们可以使用iptables工具来配置和管理网络防火墙规则。如果你想要开启80端口,以便在服务器上运行Web服务(如HTTP),你可以按照以下步骤进行配置。 首先,你需要通过终端以root权限登录到服务器。然后,执行以下命令以开启80端口: 这个命令将在INPUT链

    2024年02月04日
    浏览(28)
  • iptables指定ip访问指定端口

    2024年02月08日
    浏览(40)
  • iptables修改目的IP和端口

    iptables NAT表的OUTPUT链用于对由本机发起的数据包进行目标IP地址和端口号的修改。DNAT指令可以用于将数据包的目标IP地址和端口号替换为指定的IP地址和端口号。在OUTPUT链中使用DNAT指令可以实现对本机发送的数据包进行目标地址的转换,将数据包发送至指定的目标地址。用法

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包