LINUX.ORG.RU

NAT нет выхода в инетернет из локальной сети

 , , ,


0

1

Добрый день. Не получается предоставить доступ в интернет из локальной сети. Ситуация такова: есть две ВМ host1 and host2, host1 имеет только один интерфейс eth0 и два адреса публичный (34.240.13.199) и приватный (10.151.30.57), а host2 имеет интерфейс eht0 и только приватный адрес (10.151.30.19). К вм host2 можно получиь доступ только через host1. Нужно реализовать следующие действия:

  1. на вм host1 настроить NAT и выпустить host2 в интернет;
  2. настроить проброс портов таким образом чтобы при подключении по ssh на host1 по порту 2222 подключался к host2.

Для реализации выполнил следующее:

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1 // снял комментарий 
sudo sysctl -p

После начал добавлять правила iptables:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -s 10.151.30.19 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.151.30.19 -o eth0 -j SNAT --to-source 34.240.13.199
sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.151.30.19:22
sudo iptables -t nat -A POSTROUTING -d 10.151.30.19 -p tcp -m tcp --dport 22 -j SNAT --to-source 10.151.30.57
sudo iptables -A INPUT -p tcp -m multiport --dports 22, 9060 -j ACCEPT

После ssh подключения через putty к 34.240.13.199 порт 2222, доступ к машине был получен и смог на нее войти. После чего выполнил команду ping 8.8.8.8 и тут оказалсь что NAT не работает и у меня нет доступа в инет из локальной сети.

Попробовал это испарвить выполнив команду
sudo ip route add default via 10.151.30.57 dev eth0

после чего получил ошибку RTNETLINK answers: File exists

Также добавил dns сервера 8.8.8.8 и 8.8.4.4 в файл 
sudo nano /etc/systemd/resolved.conf

после выполнил команду
sudo systemctl restart systemd-resolved

Можете сказать как исправить ситуацию чтобы из локальной сети был доступ в интернет. Может быть нужно добавить еще какие-то правила в iptables.

Перемещено Dimez из linux-org-ru



Последнее исправление: NARUTO (всего исправлений: 2)

К вм host2 можно получиь доступ только через host1

Ровно до тех пор, пока кто-то за eth0 додумается использовать ту-же подсеть, что и у host2

iptables

А политики по умолчанию какие?

А к чему столько правил? Почему не сделать просто Masquerade и dnat на host1?

Flotsky ★★
()

host1 имеет только один интерфейс eth0 и два адреса публичный (34.240.13.199) и приватный (10.151.30.57)

Это значит на одном интерфейсе в одном VLAN?

Кто вам такую схему придумал?

kostik87 ★★★★★
()

Вот это

iptables -t nat -A POSTROUTING -s 10.151.30.19 -o eth0 -j SNAT –to-source 34.240.13.199

мусор. Должно быть примерно так

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ! 10.0.0.0/8 -o eth0 -j SNAT 34.240.13.199

no-dashi-v2 ★★
()