Стиль Debian (ленивый способ):

Стиль Debian (ленивый способ):

У меня есть два сервера Ubuntu:

  • Сервер 1 (IP: 192.168.10.11) находится в сети и подключен к двум сетевым интерфейсам (внутреннему, публичному)

  • Сервер 2 (IP: 192.168.10.10) без публичного доступа (внутренний)

Я пытаюсь использовать server1 в качестве шлюза по умолчанию для server2, и вот что я сделал:

# on online server (Jumpbox)
iptables -t nat -A POSTROUTING -s 192.168.10.10 ! -d 192.168.30.1/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# On offline server
route add default gw 192.168.10.11

Docker установлен на обоих (172.17.0.0)

Они могут отправлять PING-запросы друг другу, но с сервера server2 невозможно отправить PING-запрос Google.

решение1

Стиль Debian (ленивый способ):

редактировать/etc/network/interfaces

iface eth0 inet static
address  10.0.0.1
netmask  255.0.0.0
post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
post-up   iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE

Ленивый способ Crontab:

редактировать/etc/crontab

@reboot root "echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE; iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE"

Стиль Баша:

nano /root/allow_lan_nat.sh
Вам необходимо настроить правильную локальную сеть, которая вам подходит, например:
192.168.0.0/24 (одна подсеть локальной сети, класс C по умолчанию),
192.168.0.0/16 (все подсети 192.168),
172.16.0.0/16 (класс B по умолчанию),
10.0.0.0/8 (класс A по умолчанию).

#!/bin/bash
#Ajust the LAN, as above shown
MYLANIP=10.0.0.0/8

#The IFACE that has Internet.
MYINETIFACE=eth0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE
iptables -t nat -D POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE 

бегатьbash /root/allow_lan_nat.sh

Прямой ответ на ваш вопрос

Напоминаю, что на момент написания ответа я не знаю интерфейса, поэтому предполагаю, что ens3 — это ваш интерфейс, который подключен к Интернету, в противном случае обновите его, как указано выше.

echo 1 > /proc/sys/net/ipv4/ip_forward  
iptables -t nat -A POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE  
iptables -t nat -D POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE  

НАПОМИНАНИЕ, ens3должен быть интерфейс с выходом в Интернетпоэтому обновите его в соответствии со своими потребностями.

Связанный контент