双网卡 iptables 做网关 实现局域网其它机器上网

A机器和B机器在同一个局域网,

A机器的网卡eno1可以上网,IP为111.111.111.111。A机器的网卡eno2不能上网,IP为:192.168.1.66。

B机器不能上网,B机器的网卡eno1 IP为192.168.2.80,B机器和eno2 IP为192.168.1.80。

A机器的eno2和B机器的eno2在同一网段,可以通信,如何实现B机器通过A机器上网?

 

在A机器上开启转发:

vim /etc/sysctl.conf

# 添加内容
net.ipv4.ip_forward=1

# 保存后执行
sysctl -p

 

在A机器上使用iptables转发:

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
iptables -A FORWARD -i eno1 -o eno2 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno2 -o eno1 -j ACCEPT

 

在B机器上配置A机器eno2为网关,并配置dns:

network:
  ethernets:
    eno1:
      addresses:
      - 192,168,2,80/24
      #gateway4: 10.224.2.1
      #nameservers:
      #  addresses: [202.207.48.3, 202.207.48.4]
      #  search: []
    eno2:
      addresses:
        - 192.168.1.80/24
      dhcp4: no
      gateway4: 192.168.1.66
      nameservers:
        addresses:
        - 114.114.114.114
        search: []
  version: 2

 #########################################################################

20240321附单网卡方案:

A机器和B机器属于同一网段,单网卡,A可上网,B不能上网,A和B互通。
在A机器,start.sh,bond0为可上网IP地址对应的网卡。

#!/bin/bash

PUBLIC_INTERFACE=bond0

iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited

iptables -t nat -A POSTROUTING -o $PUBLIC_INTERFACE -j MASQUERADE
iptables -A FORWARD -i $PUBLIC_INTERFACE -o $PUBLIC_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $PUBLIC_INTERFACE -o $PUBLIC_INTERFACE -j ACCEPT

echo "NAT rules added."

在A机器,stop.sh

#!/bin/bash
service iptables restart

在A机器,check.sh

#!/bin/bash
iptables -t nat -L -v
iptables -L FORWARD -v

 

在B机器,start.sh

#!/bin/bash
ip route del default via 172.24.193.1
ip route add default via 172.24.193.3

echo "Default gateway reset to 172.24.193.3."

在B机器,stop.sh

#!/bin/bash
ip route del default via 172.24.193.1
ip route add default via 172.24.193.3

echo "Default gateway reset to 172.24.193.3."

 

posted @ 2023-10-28 10:18  河在谈  阅读(210)  评论(0编辑  收藏  举报