14、iptables_nat源地址转换(内网共享上网)
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源地址转换(内网共享上网)的更多相关文章
- iptables 实现内网转发上网
介绍 通过iptables做nat转发实现所有内网服务器上网. 操作 首先开启可以上网的服务器上的内核路由转发功能.这里我们更改/etc/sysctl.conf 配置文件. [root@web1 /] ...
- 通过nat让内网机器上网
让内网机器访问不通机房的机器,架构如下 (172.16.10.5) ----- (172.17.9.109 可以出外网,开启路由转发) ------- (内网 192.168.36.19 能pi ...
- CentOS squid代理内网主机上网 openVpn配置
- 突破内网限制上网(ssh+polipo)
最近到客户这里来做项目,发现客户对网络的把控实在严格,很多网站都不能访问到,搜索到的技术文档也屏蔽了.突然想到了FQ工具的原理,刚好自己也有台服务器在外头,部署个Polipo代理然后用ssh隧道连接. ...
- iptables 端口转发--内网实现上网
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 118.x.x.xiptables -A FORWARD -s ...
- 【NetWork】外网和内网
外网和内网 2019-11-16 11:22:37 by冲冲 1.内网 ① 内网的电脑们,需要经过交换机.路由器,才能访问Internet(外网). ② 因为外网IP比较紧张,现在的电脑普及使得外 ...
- 定位内网中毒主机IP经历小记
一.事件起因 客户向公司反映使用IDS设备捕获到木马上线域名需要处理,虽然是逆向岗但还是有预感未来应急响应的工作只会越来越多.所以作为新人的我选择了跟带头BOSS去现场学习,并且将自己参与应急响应中的 ...
- [原创]内网渗透JSP webSehll连接工具
工具: JspShellExec编译: VS2012 C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...
- CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网
自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...
随机推荐
- [bug] Nginx:src/os/unix/ngx_user.c:36:7: 错误:‘struct crypt_data’没有名为‘current_salt’的成员
参考 https://blog.csdn.net/yu_pan_love_cat/article/details/103035513 https://www.cnblogs.com/hxlinux/p ...
- CentOS 7 vs. CentOS 8 版本差异大比拼
CentOS 7 vs. CentOS 8 版本差異大比拼 2020-02-14 CentOS 最近剛好在撰寫課鋼,必須要以最新的 CentOS 8 版本為主,剛好來做一下 CentOS 7 和 Ce ...
- 还可以使用 -c 参数来显示全部内容,并标出不同之处 diff -c test2.txt test1.txt
二.实例 在test目录下存放了两个文本文件,test1.txt test2.txt . 比较这两个文件的异同. diff test1.txt test2.txt "5c5& ...
- Linux Centos7设置UTF-8编码,防止中文乱码
Linux Centos7设置UTF-8编码,防止中文乱码 # localeLANG=zh_CN.gb2312LC_CTYPE="zh_CN.gb2312"LC_NUMERIC=& ...
- linux系统的负载详解
系统的平均负载 如何理解平均负载 单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数. 平均负载多少合理 核心数 平均负载 含义 4 2 有50%的cpu是空闲状态,见 ...
- linux进阶之Tomcat服务篇
一.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomca ...
- linux进阶之子网划分
一.定义 当我们对一个网络进行子网划分时,基本上就是将它分成小的网络.比如,当一组IP地址指定给一个公司时,公司可能将该网络"分割成"小的网络,每个部门一个.这样,技术部门和管理部 ...
- IDEA 怎么统计项目代码行数
引言 IDEA 统计项目代码行数,主要是使用 Statistic 插件来统计 第一步 点击 File->Settings,如下图所示: 第二步 点击 install 安装 Statistic 插 ...
- 9.7 top:实时显示系统中各个进程的资源占用状况
top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...
- Linux系统编程【5】——stty的学习
从文件的角度看设备 之前几篇文章介绍的编程是基于文件的.数据可以保存在文件中,也可以从文件中取出来做处理,再存回去.不仅如此,Linux操作系统还专门为这个东西建立了一套规则,就是前期介绍的" ...