利用iptables实现局域网内多台机器共享上网

服务器A为内网机器,服务器B和A在同一局域网环境,服务器B可以访问外部网络,现在希望服务器A可以通过服务器B访问外部网络

服务器B上的操作(可访问外网)

  1. 启用IP转发:

    临时处理:

    sudo sysctl -w net.ipv4.ip_forward=1
    

    永久启用IP转发:

    # 打开文件
    vi /etc/sysctl.conf
    # 加入如下信息
    net.ipv4.ip_forward = 1
    # 应用更改
    sudo sysctl -p
    
  2. 配置NAT规则,将所有来自服务器A的流量转发到外网:
    先查看网口信息: ifconfig ip addr 等,找到外网IP对应网口。例如"eno1np0"

    # 备份信息
    sudo iptables-save >  iptables-backup.rules
    # 添加命令 “eno1np0” 为 网口信息 自己视实际修改
    sudo iptables -t nat -A POSTROUTING -o eno1np0 -j MASQUERADE
    # 以下是备用命令
    # 删除命令
    sudo iptables -t nat -D POSTROUTING -o eno1np0 -j MASQUERADE
    # 查看命令
    sudo iptables -t nat -L -n -v
    # 恢复备份
    sudo iptables-restore < iptables-backup.rules
    

服务器A上的操作(内网服务器)

  1. 配置服务器A的默认网关
    sudo route add default gw <serverB_IP>
    # 例如服务器B IP为 10.0.0.12
    # route 命令操作
    sudo route add default gw 10.0.0.12
    # ip 命令操作
    sudo ip route add default via 10.0.0.75
    # 查看
    root@root:~$ ip route show
    default via 10.0.0.12 dev 网口
    ......
    
  2. 如果无法上网可能是DNS问题
    root@root:~$ sudo vi /etc/resolv.conf
    # 加入如下信息
    # 阿里 
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    # google
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  3. 验证
    root@root:~$ ping baidu.com
    PING baidu.com (110.242.68.66) 56(84) bytes of data.
    64 bytes from 110.242.68.66: icmp_seq=1 ttl=49 time=59.6 ms
    64 bytes from 110.242.68.66: icmp_seq=2 ttl=49 time=59.2 ms
    ^C
    --- baidu.com ping statistics ---
    3 packets transmitted, 2 received, 33.3333% packet loss, time 2003ms
    rtt min/avg/max/mdev = 59.193/59.373/59.553/0.180 ms
    
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值