利用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
    # 允许转发指定号段 IP
    sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 192.168.1.0/24 -j MASQUERADE
    
  3. 配置持久化

    sudo apt-get install iptables-persistent
    sudo netfilter-persistent save
    sudo systemctl enable netfilter-persistent
    #这样重启就会自动重新配置
    

服务器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.12
    # 查看
    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. 配置持久化
    # Ubuntu 24.04 LTS
    cd /etc/netplan
    vi 50-cloud-init.yaml # 或者其他,以自己实际情况
    # 以下是配置内容,加#####号部分是新增内容	
    network:
      version: 2
      ethernets:
        eno1:
          dhcp4: true
        eno2:
          dhcp4: true
        enp94s0f0np0:
          dhcp4: false
          addresses: [10.0.0.74/24]
          routes: #####
            - to: default #####
              via: 10.0.0.12 #####
          nameservers: #####
            addresses: [223.5.5.5, 223.6.6.6, 8.8.8.8, 8.8.4.4] #####
        enp94s0f1np1:
          dhcp4: true		
       ----------------------
       
    #CentOS
    sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
    #  在文件中添加或修改以下行:
    GATEWAY=10.0.0.12
    
    sudo systemctl restart network
    
  4. 验证
    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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值