У меня есть два сервера 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
должен быть интерфейс с выходом в Интернетпоэтому обновите его в соответствии со своими потребностями.