通过 PPPOE 将 linux 服务器作为本地局域网 IPv4 外网网关

将 linux 服务器作为本地外网网关,方便利用 Linux 生态中的各种网络工具,对流量进行自定义、精细化管理...

环境说明

bash 复制代码
拨号主机:CentOS 7.9, Linux Kernel 5.4.257
拨号软件: rp-pppoe-3.11-7.el7.x86_64

初始化

1、升级系统到新的稳定内核, lt 长期支持版本、ml 当前主线版本

bash 复制代码
# CentOS 7.9 默认 Kernel 为 3.10
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 载入 elrepo-kernel 元数据
yum --enablerepo=elrepo-kernel repolist
# 安装长期支持的内核版本
yum --enablerepo=elrepo-kernel install kernel-lt.x86_64  -y
# 查看内核启动顺序
awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 设置默认开机从新内核启动
grub2-set-default 0

2、install 拨号软件

bash 复制代码
yum install rp-pppoe-3.11-7.el7.x86_64 -y

拨号设置

1、执行 pppoe-setup 初始化拨号设置,如下图所示


## PPPOE 拨号

1、开始拨号 ifup ppp0 ,断开拨号 ifdown ppp0

bash 复制代码
pppoe-start  /etc/sysconfig/network-scripts/ifcfg-ppp0

pppoe-stop      # 停止拨号
pppoe-status    # 查看状态

2、查看拨号后的路由表信息、及接口 ppp0 状态

bash 复制代码
# 拨号后会自动更新本机路由,默认将所有流量通过本地接口 ppp0 发出,且该出口的下一跳 ip 地址为 100.78.128.1
route -n
#> Kernel IP routing table
#> Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
#> 0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
#> 100.78.128.1    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
#> 192.168.21.0    0.0.0.0         255.255.255.0   U     101    0        0 ens9
#> 192.168.31.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

ifconfig ppp0
#> ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492
#>         inet 100.78.185.33  netmask 255.255.255.255  destination 100.78.128.1
#>         ppp  txqueuelen 3  (Point-to-Point Protocol)
#>         RX packets 13973  bytes 16487388 (15.7 MiB)
#>         RX errors 0  dropped 0  overruns 0  frame 0
#>         TX packets 7520  bytes 1150614 (1.0 MiB)
#>         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置 SNAT

1、配置拨号主机作为外网网关

bash 复制代码
# 启用转发
sysctl -w net.ipv4.conf.all.forwarding=1

# 允许网段 192.168.31.0/24 的终端通过拨号主机转发
iptables -I FORWARD -t filter -s 192.168.31.0/24 -j ACCEPT

# 将数据包源地址转换为接口 ppp0 的 ip 地址(SNAT, 共享 ip 上网)
iptables -A POSTROUTING -t nat -s 192.168.31.0/24 -o ppp0 -j MASQUERADE

# 查看 snat 规则
iptables -nvL POSTROUTING -t nat |grep ppp0
#> pkts bytes target     prot opt in     out     source               destination
#> 800 78869 MASQUERADE  all  --  *      ppp0    192.168.31.0/24      0.0.0.0/0

2、查看连接信息,测试主机 31.218 通过本机访问外网

bash 复制代码
yum install conntrack-tools -y

conntrack -L |grep -i 31.218 |grep -i estab
conntrack v1.4.4 (conntrack-tools): 53 flow entries have been shown.
tcp      6 431988 ESTABLISHED src=192.168.31.218 dst=58.63.233.98 sport=50104 dport=443 src=58.63.233.98 dst=100.78.185.33 sport=443 dport=50104 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 use=1

码字不易,若觉得本文对你有用,欢迎 点赞 👍、分享 🚀 ,相关技术热点时时看🔥🔥🔥​​​...

相关推荐
jiayong232 小时前
DevOps体系详解01-核心概念与价值
运维·devops
jiayong233 小时前
DevOps体系详解02-技术架构与工具链
运维·架构·devops
pride.li3 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__3 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD4 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
云泽8085 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_5 小时前
Linux:基础IO
linux·运维·服务器
以太浮标5 小时前
华为eNSP模拟器综合实验之- VLAN终结实践案例分析
网络·计算机网络·华为·智能路由器
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
angushine6 小时前
银河麒麟V10创建用户
运维