centos7笔记本使用iptables服务,将笔记本模拟成为出口路由器 PPPOE拨号+NAT+端口映射
郑州洪水,闲置在家,捣鼓捣鼓
centos7笔记本使用iptables服务,将笔记本模拟成为出口路由器 PPPOE拨号+NAT+端口映射
环境:
1.笔记本单网口,无法做路由网关,手里有个闲置的USBA转网口的网卡,也想知道能不能被centos7系统识别。
2.外网是PPPOE拨号
3.内部有设备需要映射到外网
过程:
1.重装系统
正常最小安装安装系统
配置外网口进行PPPOE拨号
这里参考https://www.cnblogs.com/gotodsp/p/5513945.html
有个注意事项,拨号之后会生成ppp0虚拟网卡,运营商分配的地址在这个网卡上,后面NAT实际也是利用这个虚拟网卡上的IP访问的外网。所以要删除真实网卡上的地址,例如用eth0拨号,你需要把eth0上的IP、掩码、网关、DNS删除。
2.安装iptables服务
yum -y install iptables-services
3.将相关模块加载到内核中(永久添加)
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF
4.检查是否启动完成
lsmod |egrep 'filter|nat|ipt'
必须有:iptable_nat 和 iptable_filter
5.关闭firewalld防火墙 --- cenos6好像默认没有这个服务,这一步就可以省略
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld --- 检查一下
6.开启iptables服务
systemctl start iptables.service
systemctl enable iptables.service
systemctl status iptables.service --- 检查一下
7.添加NAT地址转换进行共享上网
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s --- 前面这些内容不用动,固定格式
192.168.100.0/24 --- 这个写上你想要转换的内网地址
-o ppp0 --- 因为我家外网是PPPOE拨号,地址不固定,没办法配置地址,只能自动转换成ppp0这个虚拟网口上动态获取的IP。如果是固定公网IP可以直接写连接ISP的真实接口地址,下面我会给出固定地址的配置方法,其实固定地址也可以用此方法。
固定IP也可用下面的配置方法
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 100.0.0.201
8.添加端口映射
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5000 -j DNAT --to-destination 192.168.100.201:5000
将外网的5000端口映射到内网的5000端口,可以对应,也可以不对应,例如可以把外网的80端口映射到内网服务器的8080端口,改变一下端口就行,像windows的3389可以使用udp进行加速,只需要将-p后面的tcp改成udp,然后内外网端口改成3389即可。
固定公网IP映射
iptables -t nat -A PREROUTING -d 100.0.0.201 -p tcp --dport 9000 -j DNAT --to-destination 192.168.31.202:22
100.0.0.201改成你自己的公网IP就行
9.配置允许服务器进行报文转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p --- 激活上面写入的配置
10.总结
到这就可以测试了,我自己有两个地方出错导致无法连上
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ppp0 -j MASQUERADE
这条命令配置的时候出接口写成了eth0(内网接口),导致内部设备无法上网,后来又改成eth1(外网接口),结果还是不行,懵逼了一晚上,突然想到我配置华三和华为那些路由器的时候,客户环境如果是拨号,都是在虚拟接口上配置的nat outbound,然后改成ppp0果然成功,第二个问题也是这个原因导致映射不成功,映射也需要用虚接口
遗留问题:
1.有时候会需要接进家里的网络,我之前在内部部署的docker然后安装ipsec之后能够正常访问内部地址,但是直接部署在此网关上,电脑和手机能够成功拨进来,但无法正常连接内部IP。
2.我内部基本都是固定IP,唯一需要自动分配地址的就是无线网络,因为有胖AP分地址,就没有学习DHCP部署,后续应该会补上
3.我的wol自动唤醒服务好像默认eth0进行广播,因为出现现象:测试时电脑和eth0在一个网段,可以正常唤醒主机,实际部署时用eth1连接内部设备,无法唤醒主机
2021/07/26
水平有限,希望大佬提 携感激不尽
若有小伙伴有问题也可以评论或联系我
QQ:1060042877
邮箱:15238522806@139.com
centos7笔记本使用iptables服务,将笔记本模拟成为出口路由器 PPPOE拨号+NAT+端口映射的更多相关文章
- iptables、防火墙配置、NAT端口映射
一,配置一个filter表放火墙 (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) targ ...
- centos7 没有iptables服务 file or directory? 用secureCRT登录centos?
cenetos7 采用systemd来管理服务 centos7 没有采用传统的iptables服务, 而是采用的firewalld 服务, 以及firewall-cmd 命令; 也可以采用传统的 ip ...
- CentOS 7安装iptables服务,以及常用命令
之前使用的是CentOS6.5,并且学艺不精,用啥查啥,用完就忘.并且网上大部分资料是基于CentOS7之前的版本. 在CentOS7中,默认的防火墙不是iptables,而是firewalld.而且 ...
- CentOS7下安装SVN服务端
CentOS7下安装SVN服务 1. yum命令即可方便的完成安装# sudo yum install subversion 测试安装是否成功:# svnserve --version 更改svn的默 ...
- CentOS7安装配置iptables防火墙
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/50779761 CentOS7默认的防火墙不是iptables,而是firewall ...
- centos7上安装iptables
centos7上安装iptables的步骤 注意:CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #安装iptables ...
- CentOS7防火墙设置--iptables
CentOS7默认使用的是firewalld而不是之前的iptables.需要先停用firewalld. systemctl stop firewalld 安装 iptables 服务 yum -y ...
- CentOS7安装部署squid服务(透明代理+反向代理)
一.squid服务介绍 Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的 ...
- Linux操作系统-CentOS7启动流程和服务管理
Linux操作系统-CentOS7启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.systemd POST --> Boot Sequence --&g ...
随机推荐
- springboot整合mybatis步骤以及错误集合
1.首先在springboot项目中的pomx文件引入官方的依赖 <groupId>org.mybatis.spring.boot</groupId> <artifact ...
- miniconda使用
基本指令 conda create -n xxx python=3.7 // 创建Python3.7的名为xxx虚拟环境 conda env list // 显示所有的虚拟环境 conda activ ...
- DHorse系列文章之maven打包
插件打包 这种方式是平时最常用的,首先要下载并安装maven环境,然后在被打包的项目中引入插件,有各种各样的打包插件,比如springboot自带插件: <plugin> <grou ...
- 13.django-admin组件
Django内置了一个强大的组件叫Admin,提供给网站管理员快速开发运营后台的管理站点,下面通过案例进行操作 1.创建模型类 模型类如下: from django.db import models ...
- openstack单机部署 未完成
注:centos8单机版 注:本次实验手动配置密码均为admin 环境准备:配置hosts文件 192.168.116.85为本机IP echo '192.168.116.85 controller ...
- Golang反射修改变量值
1. 前言 前面的随笔Golang反射获取变量类型和值分享了如何通过反射获取变量的类型和值, 也就是Golang反射三大定律中的前两个,即从interface{}到反射对象和从反射对象到interfa ...
- jjava基础语法
java基础语法1 注释 注意: SDK要选择JDK1.8,且下面的语言要选择8,配置完这个环境后,JAVA才能正常运行. 单行注释 //+text 快捷键:ctrl+/ 多行注释 /*+text+ ...
- .NET性能优化-ArrayPool同时复用数组和对象
前两天在微信后台收到了读者的私信,问了一个这样的问题,由于私信回复有字数和篇幅限制,我在这里统一回复一下.读者的问题是这样的: 大佬您好,之前读了您的文章受益匪浅,我们有一个项目经常占用 7-8GB ...
- JavaScript:变量的作用域,window对象,关键字var/let与function
为什么要将这些内容放在一起,因为他们都跟初始化有关系,我们慢慢说吧. 我们在代码中,都会声明变量.函数和对象,然后由浏览器解释器(下面简称浏览器)执行: 我们还说过,变量和对象的内存结构: 那么,是什 ...
- 英华学堂网课助手Linux版本
首先我们下去GitHub把文件下载下来记得 脚本地址: https://github.com/aoaostar/mooc/releases/latest 这几个版本随便下哪个都可以,下载完之后我们通过 ...