14.1、环境说明:

1、架构图:

2、架构图说明:

局域网中的两台计算机只能有一台能够访问外网,而这两台计算机之间能相互通信,那么可以配置能访问外网的

那台服务器实现路由器的功能,即实现其他机器的NAT转换,从而使所有机器都能访问外网。

3、说明:

Centos 7 默认的防火墙是 firewalld,安装iptables之前需关闭Firewalld。

(1)停止firewalld 防火墙:

systemctl stop firewalld

(2)禁用firewalld防火墙开机自启动:

systemctl disable firewalld

(3)安装iptables:

yum install -y iptables-services

(4)将原有的 iptables 文件保存一份,避免之前设置的策略丢失:

cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

14.2、外网服务器A(controller-node1)配置:

1、虚拟机网卡:

2、开启路由转发功能:

(1)临时生效,服务器重启后失效的命令:

[root@controller-node1 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward

(2)长久生效的命令如下。

1)编辑/etc/sysctl.conf 将 net.ipv4.ip_forward = 0 修改为 net.ipv4.ip_forward = 1:

[root@controller-node1 ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

2)执行sysctl -p命令使配置生效:

[root@controller-node1 ~]# sysctl -p

3、防火墙配置:

(1)启动防火墙,并设置为开机自启:

[root@controller-node1 ~]# systemctl start iptables.service

[root@controller-node1 ~]# systemctl enable iptables.service

(2)清空防火墙规则并添加允许ssh远程进站规则:

[root@controller-node1 ~]# iptables -F

[root@controller-node1 ~]# iptables -X

[root@controller-node1 ~]# iptables -Z

[root@controller-node1 ~]# iptables -A INPUT -p tcp -d 172.16.1.90 --dport 22 -j ACCEPT

(3)链表访问设置:

[root@controller-node1 ~]# iptables -P INPUT DROP

[root@controller-node1 ~]# iptables -P OUTPUT ACCEPT

[root@controller-node1 ~]# iptables -P FORWARD DROP

(4)添加进站规则:

[root@controller-node1 ~]# iptables -A INPUT -p icmp -j ACCEPT

#允许ping

[root@controller-node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 该规则表示允许进入的数据包只能是刚刚我发出去的数据包的回应

(5)添加 nat 规则(源地址转换):

[root@controller-node1 ~]# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.90

# -o eth0:指定在共享上网哪个网卡接口上做NAT地址转换,外网网卡。

# -s 172.16.1.0/24:指定将哪些内网网段进行映射转换。

# -j SNAT:将源地址进行转换变更。

# --to-source 10.0.0.90:将源地址映射为什么IP地址,代表外网ip。

# 如果上网的IP是动态IP,则使用以下规则:

# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j MASQUERADE

# 如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:

# iptables -t nat -A POSTROUTING -o ppp0 -s 172.16.1.0/24 -j MASQUERADE

(6)添加转发规则:

[root@controller-node1 ~]# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

[root@controller-node1 ~]# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

(7)保存防火墙规则并重启:

[root@controller-node1 ~]# service iptables save

[root@controller-node1 ~]# systemctl restart iptables.service

(8)查看防火墙规则:

1)查看默认表规则:

2)查看nat表规则:

14.3、内网服务器B(slave-node1)配置:

1、虚拟机网卡:

2、防火墙配置:

(1)启动防火墙,并设置为开机自启:

[root@slave-node1 ~]# systemctl start iptables.service

[root@slave-node1 ~]# systemctl enable iptables.service

(2)清空防火墙规则并添加允许ssh远程进站规则:

[root@slave-node1 ~]# iptables -F

[root@slave-node1 ~]# iptables -X

[root@slave-node1 ~]# iptables -Z

[root@slave-node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

(3)链表访问设置:

[root@slave-node1 ~]# iptables -P INPUT DROP

[root@slave-node1 ~]# iptables -P OUTPUT ACCEPT

[root@slave-node1 ~]# iptables -P FORWARD DROP

(4)添加进站规则:

[root@slave-node1 ~]# iptables -A INPUT -p icmp -j ACCEPT

# 允许ping

[root@slave-node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 该规则表示允许进入的数据包只能是刚刚我发出去的数据包的回应

(5)保存防火墙规则并重启:

[root@slave-node1 ~]# service iptables save

[root@slave-node1 ~]# systemctl restart iptables.service

(6)查看防火墙默认表规则:

3、在需要上外网的服务器B(slave-node1)上,修改内网网卡eth0的默认网关为172.16.1.90:

[root@slave-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

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=eth0

DEVICE=eth0

ONBOOT=yes

IPADDR=172.16.1.91

PREFIX=24

GATEWAY=172.16.1.90

IPV6_PRIVACY=no

DNS1=114.114.114.114

4、重启网卡:

[root@slave-node1 ~]# systemctl restart network.service

5、查看路由:

14.4、测试:

1、B(slave-node1)服务器ping 百度,能ping 同,说明测试成功:

2、B(slave-node1)服务器安装httpd服务成功,说明测试成功:

[root@slave-node1 ~]# systemctl start httpd

#启动httpd

[root@slave-node1 ~]# netstat -tunlp|grep 80

tcp6 0 0 :::80 :::* LISTEN 1574/httpd

14、iptables_nat源地址转换(内网共享上网)的更多相关文章

  1. iptables 实现内网转发上网

    介绍 通过iptables做nat转发实现所有内网服务器上网. 操作 首先开启可以上网的服务器上的内核路由转发功能.这里我们更改/etc/sysctl.conf 配置文件. [root@web1 /] ...

  2. 通过nat让内网机器上网

    让内网机器访问不通机房的机器,架构如下 (172.16.10.5)  ----- (172.17.9.109 可以出外网,开启路由转发)  -------  (内网 192.168.36.19 能pi ...

  3. CentOS squid代理内网主机上网 openVpn配置

  4. 突破内网限制上网(ssh+polipo)

    最近到客户这里来做项目,发现客户对网络的把控实在严格,很多网站都不能访问到,搜索到的技术文档也屏蔽了.突然想到了FQ工具的原理,刚好自己也有台服务器在外头,部署个Polipo代理然后用ssh隧道连接. ...

  5. iptables 端口转发--内网实现上网

    iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 118.x.x.xiptables -A FORWARD -s ...

  6. 【NetWork】外网和内网

    外网和内网 2019-11-16  11:22:37  by冲冲 1.内网 ① 内网的电脑们,需要经过交换机.路由器,才能访问Internet(外网). ② 因为外网IP比较紧张,现在的电脑普及使得外 ...

  7. 定位内网中毒主机IP经历小记

    一.事件起因 客户向公司反映使用IDS设备捕获到木马上线域名需要处理,虽然是逆向岗但还是有预感未来应急响应的工作只会越来越多.所以作为新人的我选择了跟带头BOSS去现场学习,并且将自己参与应急响应中的 ...

  8. [原创]内网渗透JSP webSehll连接工具

    工具: JspShellExec编译: VS2012  C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...

  9. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

    自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...

随机推荐

  1. [bug] C++:[Error] name lookup of 'i' changed for ISO '

    错误原因:变量i只在for循环中可见,若在循环外使用需要单独定义 1 #include <iostream> 2 using namespace std; 3 4 int main(){ ...

  2. 联想INTEL X86台式机 用光驱启动 usb光驱启动

    联想INTEL X86台式机  用光驱启动 usb光驱启动 启动项顺序 都要调整 主要顺序 自动顺序 出错顺序 按下f10 f12

  3. Linux 部署 iSCSI 客户端配置(Linux)

    Linux 部署 iSCSI 客户端配置(Linux) 客户端环境 Client :RHEL8 IP : 192.168.121.11 一.测试与服务端的连通性 [root@Client-linux ...

  4. k8s管理机密信息(12)

    一.启动应用安全信息的保护 1.Secret介绍 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  5. 012.Python的字典和集合的相关函数

    一 字典的相关函数 1.1 增函数 dictvar = {"a":1,"b":2} dictvar["c"] = 3 print(dictv ...

  6. LTC3780 工作原理分析

    流程分析 当 CV调节 调节顺时针调节CV的时候 接入电路部分的电阻变大 Vosense变小 LTC内部的误差放大器 输出的变大 LTC内部逻辑调节 增大电压 我估计最终电压还是大约800mv左右 可 ...

  7. uboot通过NFS挂载ubuntu根文件系统

    由于工作需要,在做app开发或系统移植时,经常需要编辑系统后重新烧写异常麻烦.通过NFS挂载根文件系统就不需要每次更改系统后再进行编译和烧写,等开发完成后一次烧写即可完成. 一.准备材料 可以根据自己 ...

  8. rabbit_消费者

    import pika import json import time import os import ast import uuid import time import json import ...

  9. MCU,硅片,BOM

    MCU,硅片,BOM BOM(Bill of Material,物料清单),就是指一个东西的各个材料的的成本价格 BOM成本要控制,有三点要注意的. 一,是否有芯片替代料,在性能不降低的情况下,替代料 ...

  10. 多视觉任务的全能: HRNet

    多视觉任务的全能: HRNet HRNet是微软亚洲研究院的王井东老师领导的团队完成的,打通图像分类.图像分割.目标检测.人脸对齐.姿态识别.风格迁移.Image Inpainting.超分.opti ...