配置SNAT实现局域网主机上网(亲测)

一、环境说明

如下图所示,局域网1中的服务器是可以访问外网的,由于种种原因局域网1内无法再新增主机了,只好新增局域网2。于是就出现这样一种需求,局域网2中的服务器器也要访问外网。怎么实现无外网的服务器借助有外网的服务器上网呢?看了很多博客,有的提到使用PPTP软件,试了下不行。经过一番尝试,发现其实最简单方法就是通过iptables一条命令就可以实现了。这是一个典型的SNAT场景,具体实现看下文

服务器连线示意图

以上所有服务器安装的操作系统是Ubuntu22.04,如下图所示

二、iptabes配置

# 把ens29f0网卡的源ip是 192.168.2.0/24网段的数据包通过nat转发到ens29f1,并修改IP数据包的表头来源IP为10.49.1.81
sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens29f1 -j SNAT --to 10.49.1.81

这里局域网1中的那台服务器使用dnsmasq部署了dhcp服务,dnsmasq的安装和配置可以参考:https://blog.csdn.net/u010438035/article/details/128396790

局域网1中的那台服务器也可以不部署dhcp,这样局域网2中的服务器手动配置ip地址和网关及dns即可,类似如下:

sudo vi /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens17f0:
      dhcp4: false
      addresses:
        - 192.168.2.141/24
      optional: true
      routes:
        - to: default
          via: 192.168.2.49
      nameservers:
        addresses:
          - 114.114.114.114
        - 8.8.8.8
  version: 2

三、测试

从局域网2中的任意一台服务器ping baidu.com能够ping 通说明配置成功。

参考如下链接:

https://www.jianshu.com/p/957388fa5531

https://zhuanlan.zhihu.com/p/340149470

四、优化

以上iptables配置会在重启后丢失,通过下面的方法实现重启后也能上网

sudo chmod a+w -R /opt
sudo iptables-save > /opt/iptables.rules
sudo vi /root/.bashrc
# 在文件最后增加下面一行,实现开机就添加iptables规则
/sbin/iptables-restore < /opt/iptables.rules
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值