利用iptables的SNAT功能实现局域网共享上网

今天,碰到一个问题:局域网内有5台机器,只有一个公网IP。现在的需求是5台机器都要能够访问外网。这可怎么办呢?当然是使用SNAT了。话虽这么说,可是,在配置的时候,竟然折腾了半天!下面好好总结一下:


  1. 情景介绍:局域网内的5台机器的IP地址分别是
    192.168.180.121-node1
    192.168.180.122-node2
    192.168.180.123-node3
    192.168.180.124-node4
    192.168.180.125-node5

    每台机器都有2块网卡(eth0和eth1),我们上面给出的5个内网IP都是配置在每一台机器的eth0这块网卡上面。

    另外,我们将node1这个机器上的eth1网卡配置一个外网IP(119.75.218.76)。

  2. 开启node1这台机器的ipv4转发功能:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    (就是因为这个忘记了,折腾了好久!)
    还有,这个修改在机器重启的时候仍然会失效。要想永久有效,还要把/etc/sysctl.conf文件里边的net.ipv4.ip_forward的值改为1。

  3. 修改其他机器的默认网关:
    因为要让 node1 这台机器帮我们转发流量,所以,将其他机器的默认网关设置成 node1 的内网IP(也就是192.168.180.121)

  4. 在node1 机器上使用iptables 命令进行设置,将其他机器的流量通过这个可以访问外网的机器转发出去:
    iptables -F
    iptables -X
    iptables -Z
    这三条命令将防火墙规则清空。
    之后,使用下面的命令进行流量转发:
    iptables -t nat -A POSTROUTING -s 192.168.180.0/24 -o eth1 -j SNAT –to-source 119.75.218.76
    (因为这条规则没有保存,所以重启后失效;怎样保存防火墙规则,请参考其他教程)

本文只是简单介绍了大致的操作,原理性的知识以及详细介绍请参考其他教程。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值