【无标题】

本文转自1:
http://www.liusuping.com/ubuntu-linux/iptables-firewall-setting.html

iptables做TCP/UDP端口转发
https://www.cnblogs.com/paul8339/p/14688156.html

原文链接:https://blog.youkuaiyun.com/zhouguoqionghai/article/details/81947603

如何利用iptables让端口映射快速实现?好用的方法推荐-oray贝锐科技花生壳官网
https://hsk.oray.com/news/6446.html

利用iptables做端口转发 - 0xdd - 博客园
https://www.cnblogs.com/0xdd/p/13178149.html

iptables端口转发命令 – 运维生存时间
http://www.ttlsa.com/linux/iptables-port-redirect/

Linux开启路由转发功能_服务器应用_Linux公社-Linux系统门户网站
https://www.linuxidc.com/Linux/2016-12/138661.htm

删除iptables nat 规则:
https://www.cnblogs.com/hixiaowei/p/8954161.html




删除FORWARD 规则:

iptables -nL FORWARD --line-number
iptables -D FORWARD 1

删除一条nat 规则 删除SNAT规则

iptables -t nat -D POSTROUTING 1

iptables -t nat -D POSTROUTING 7

让openstack 虚拟机上网的规则

iptables -t nat -A POSTROUTING -s 172.28.101.111/255.255.255.0 -o ens33 -j MASQUERADE

开启路由转发

echo “1” > /proc/sys/net/ipv4/ip_forward

排除网络问题,一层一层排除,能ping通71.146.165.120 ,说明vr是没问题的。那最有可能是120及120后面的问题




iptables 简介

iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。

filter负责过滤数据包,包括的规则链有,input,output和forward;

nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;

mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;

input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT,postrouting用来修改源地址用来做SNAT。

iptables主要参数

-A 向规则链中添加一条规则,默认被添加到末尾

-T指定要操作的表,默认是filter

-D从规则链中删除规则,可以指定序号或者匹配的规则来删除

-R进行规则替换

-I插入一条规则,默认被插入到首部

-F清空所选的链,重启后恢复

-N新建用户自定义的规则链

-X删除用户自定义的规则链

-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,

-s指定源地址

-d指定目的地址

-i进入接口

-o流出接口

-j采取的动作,accept,drop,snat,dnat,masquerade

–sport源端口

–dport目的端口,端口必须和协议一起来配合使用

注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写

iptable配置实例

iptable基本操作

iptables -L 列出iptables规则
iptables -F 清除iptables内置规则
iptables -X 清除iptables自定义规则

设定默认规则

在iptables规则中没有匹配到规则则使用默认规则进行处理

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

配置SSH规则

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。

只允许192.168.0.3的机器进行SSH连接

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

允许loopback回环通信

IPTABLES -A INPUT -i lo -p all -j ACCEPT
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT

目的地址转换,映射内部地址

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10

源地址转换,隐藏内部地址

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

地址伪装,动态ip的NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

masquerade和snat的主要区别在于,snat是把源地址转换为固定的IP地址或者是地址池,而masquerade在adsl等方式拨号上网时候非常有用,因为是拨号上网所以网卡的外网IP经常变化,这样在进行地址转换的时候就要在每次都要修改转换策略里面的ip,使用masquerade就很好的解决了这个问题,他会自己去探测外网卡获得的ip地址然后自动进行地址转换,这样就算外网获得的ip经常变化也不用人工干预了。

开启转发功能

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允许已建连接及相关链接对内转发
ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 允许对外转发

过滤某个MAC

iptables -A FORWARD -m mac --mac -source MAC地址 -j DROP

报文经过路由后,数据包中原有的MAC信息会被替换,所以在路由后的iptables中使用mac匹配没有意义。

数据包整流

iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP

多端口匹配

用以一次匹配多个端口

iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT

丢弃非法连接

iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables-A FORWARD -m state --state INVALID -j DROP

存储于恢复iptables规则

iptables-save > somefile
iptables-restore < somefile




开启路由转发功能
[root@test3domian]# echo 1 > /proc/sys/net/ipv4/ip_forward

1、打开包转发功能:

echo “1” > /proc/sys/net/ipv4/ip_forward

2、修改/etc/sysctl.conf文件,让包转发功能在系统启动时自动生效:

#. Controls IP packet forwarding

net.ipv4.ip_forward = 1

3、打开iptables的NAT功能:

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

说明:上面的语句中eth0是连接外网或者连接Internet的网卡. 执行下面的命令,保存iptables的规则: service iptables save

4、查看路由表:

netstat -rn 或 route -n

5、查看iptables规则:

iptables -L

1 将本地的端口转发到本机端口

将本机的 7777 端口转发到 6666 端口。

iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666

1.242 机器上将 7777 端口转发到 6666,并侦听 6666 端口。

2、将本机的端口转发到其他机器

通过 1.168 的 6666 端口访问 1.8 的 7777 端口,在 1.168 上设置:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 192.168.1.8:7777
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.8 --dport 7777 -j SNAT --to-source 192.168.1.168

将一台公网 ip 主机的端口转发到另一台公网 ip 主机

iptables -t nat -A PREROUTING -p tcp --dport 8016 -j DNAT --to-destination 18.222.236.211:8017
iptables -t nat -A POSTROUTING -p tcp -d 18.222.236.211 --dport 8017 -j SNAT --to-source 10.53.1.49

iptables转发UDP

代码如下(10.10.10.1 代表本机IP, 192.168.1.1 代表目的地IP):

iptables -t nat -A PREROUTING -d 10.10.10.1 -p udp --dport 100 -j DNAT --to-destination 192.168.1.1:80

iptables -t nat -A POSTROUTING -s 192.168.1.1 -p udp --dport 80 -j SNAT --to-source 10.10.10.1:100

iptables -A FORWARD -o eth0 -d 192.168.1.1 -p udp --dport 80 -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.1 -p udp --sport 80 -j ACCEPT

iptables -t nat -A PREROUTING -d 10.10.10.1 -p tcp --dport 100 -j DNAT --to-destination 192.168.1.1:80

iptables -t nat -A POSTROUTING -s 192.168.1.1 -p tcp --dport 80 -j SNAT --to-source 10.10.10.1:100

iptables -A FORWARD -o eth0 -d 192.168.1.1 -p tcp --dport 80 -j ACCEPT

iptables -A FORWARD -i eth0 -s 192.168.1.1 -p tcp --sport 80 -j ACCEPT

删除规则也很简单只需要执行以下代码:

iptables -t nat -D PREROUTING -d 10.10.10.1 -p udp --dport 100 -j DNAT --to-destination 192.168.1.1:80

iptables -t nat -D POSTROUTING -s 192.168.1.1 -p udp --dport 80 -j SNAT --to-source 10.10.10.1:100

iptables -D FORWARD -o eth0 -d 192.168.1.1 -p udp --dport 80 -j ACCEPT

iptables -D FORWARD -i eth0 -s 192.168.1.1 -p udp --sport 80 -j ACCEPT

iptables -t nat -D PREROUTING -d 10.10.10.1 -p tcp --dport 100 -j DNAT --to-destination 192.168.1.1:80

iptables -t nat -D POSTROUTING -s 192.168.1.1 -p tcp --dport 80 -j SNAT --to-source 10.10.10.1:100

iptables -D FORWARD -o eth0 -d 192.168.1.1 -p tcp --dport 80 -j ACCEPT

iptables -D FORWARD -i eth0 -s 192.168.1.1 -p tcp --sport 80 -j ACCEPT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值