iptables之网络地址转换SNAT

科长
2023-07-04 / 0 评论 / 57 阅读 / 正在检测是否收录...

网络环境

地址转换内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

模拟环境

可以访问互联网

master:192.168.2.100/10.0.10.4

不可以访问互联网

node1:10.0.10.2

node2:10.0.10.3

需求:现在想要node1node2能够访问需联网

根据上图中的网络环境可以得知:

  • 内网不能上网的IP段为10.0.10.0/24
  • 能够上网的机器拥有双网卡,它的出口IP为192.168.2.100
  • 能够上网额机器可以与10.0.10.2/10.0.10.3互相访问

实现上网:

现在需要10.0.10.0/24这个IP段的所有机器能够使用的特定的IP192.168.2.100实现访问互联网

master机器上安装iptables防火墙

# 关闭自带的firewalld
systemctl stop firewalld
systemctl disable firewalld

# 安装iptables
yum -y install iptables iptables-services
systemctl start iptables
systemctl enable iptables

master机器上开启路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1   # 将此行写入配置文件   
sysctl -p                                  # 验证一下

清除iptables的所有规则

iptables -F
iptables -F -t nat

iptables -nL -t nat

添加新的snat规则

iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to 192.168.2.100

这个规则表示:当流量来自10.0.10.*的IP时,则需在出口路由设备上需要配置源地址转换,转换成192.168.2.100

如果我们的出口IP192.168.2.100是动态的,我们可以将转发绑定到网卡上

iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o ens33 -j MASQUERADE

ens33master能够访问互联网的网卡,需要改成自己实际的网卡

配置node节点上网

我们需要分别设置node1:10.0.10.2/node2:10.0.10.3这台机器的网络配置

[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="90f3297d-0600-4d78-8c98-b7823d4b8e22"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=10.0.10.2   # node1的IP地址
GATEWAY=10.0.10.4 # master的内网IP
NETMASK=255.255.255.0
DNS1=114.114.114.114
[root@node2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="90f3397d-0600-6d97-8c18-b7323d4b8e19"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=10.0.10.3   # node1的IP地址
GATEWAY=10.0.10.4 # master的内网IP
NETMASK=255.255.255.0
DNS1=114.114.114.114

可以通过ping baidu.com 进行网络验证

网速优化

# vi /etc/sysctl.conf
net.ipv4.ip_conntrack_max = 1048576

# vi /etc/modprobe.conf
options ip_conntrack hashsize=131072

iptables -I INPUT -p udp --sport 53 -j ACCEPT
iptables -I INPUT -p tcp --sport 53 -j ACCEPT

导入导出规则

#将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables

# 停止iptables服务会清空掉所有表的规则
systemctl stop iptables
# 启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
systemctl start iptables
0

评论 (0)

取消