使用iptables进行NAT转发

SNAT转发(代理内网机器上网)

案例1

内网机器B 通过网关A访问百度,设置如下:

网关A配置两个IP

​ 公网ip IP:192.168.1.189/24 内网IP:1.1.1.1/24

开启路由

写入配置文件永久生效

echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf

强制刷新配置文件,使其生效

sysctl -p

防火墙设置(主要在POSTROUTING链上设置)

将流经网关的数据包的源地址改为192.168.1.189

iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189

保存防火墙规则到配置文件,不然下次重启就失效了。

iptables-save > /etc/sysconfig/iptables

内网机器配置 IP1.1.1.2/24

测试


补充:

1,指定数据包流出的网卡,执行。(流出的网卡必需是配有公网IP的网卡)

iptables -t nat -A POSTROUTING -o ens33 -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189

2,如果网关的IP是一个动态IP, 执行

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

3,若果要从指定的端口转发出去,执行

iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --to-ports 80-1000


iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -p udp -j MASQUERADE --to-ports 80-1000

这是不明智的选择,指定端口前必需指定使用的协议,所以最好别这样做。

但是使用随机端口是可以的,这也是默认的。

iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --random

DNAT转发(将流入网关的数据包发给内网主机处理)

网关A配置两个IP

​ 公网ip IP:192.168.1.189/24 内网IP:1.1.1.1/24

网关A开启路由

写入配置文件永久生效

echo \'net.ipv4.ip_forward=1\' > /etc/sysctl.conf

强制刷新配置文件,使其生效

sysctl -p

网关防火墙设置(主要在PREROUTING链上设置)

利用iptables将目的地址为192.168.1.189的80端口的数据包更改目的地址为内网机器的IP1.1.1.2,目的端口为80.

iptables -t nat -A PREROUTING -d 192.168.1.189 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:80

也可以将网关的所有流量转发到内网主机(并不推荐这样做,除非特殊情况)

iptables -t nat -A PREROUTING -d 192.168.1.189 -j DNAT --to-destination 1.1.1.2

保存防火墙规则到配置文件,不然下次重启就失效了。

iptables-save > /etc/sysconfig/iptables

内网机器配置 IP1.1.1.2/24,并安装httpd服务

在客户端测试


总结:

1,NAT功能主要是玩的iptables的NAT表。

2,代理内网机器上网,需要设置的是POSTROUTING链

3,转发外网端口流量则是设置PREROUTING链

  • 1
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值