Назад | Перейти на главную страницу

Невозможно подключиться к внешней сети через NAT

Сеть

Я настраиваю следующую сеть, есть три системы, и предполагается, что VPN занимает промежуточное положение между брандмауэром и Kali. Предположим, что все системы используют Ubuntu 16.04 (в конечном итоге я установлю инструменты Kali на Ubuntu):

Вопрос

Маршруты

Iptables

Iptables для VPN-сервера:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i enp0s3 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE # Enmascarmiento IP

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp0s3 -o tap0 -j ACCEPT

Iptables для двух других систем имеют политику ПРИНЯТЬ ВСЕ.

Пересылка и маскарад

Для VPN-сервера включена пересылка. У меня уже есть настройки в / proc / sys / net / ipv4 / ip_forward.

Также в системе есть модуль для использования masquerada (lsmod):

ipt_MASQUERADE         16384  1
nf_nat_masquerade_ipv4    16384  1 ipt_MASQUERADE
nf_nat                 24576  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack          106496  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
x_tables               36864  5 ip_tables,ipt_MASQUERADE,xt_conntrack,iptable_filter,iptable_mangle

Ifconfig

Исправлена

Нашел ошибку:

12.5.0.0 * 255.255.255.0 U 0 0 0 tap0

Проблема заключалась в том, что я устанавливал шлюз по умолчанию для этого маршрута в системе Kali. Мне пришлось указать вывод всего трафика через 10.8.0.1, что, на мой взгляд, является избыточным, поскольку это был единственно возможный путь.

Вы не разрешаете перенаправлять или принимать новые соединения на вашем VPN-сервере. + Изменить

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT

к

iptables -A FORWARD -i tap0 -o enp0s3 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

и попробуйте, если он работает. Если это так, удалите оператор NEW для общего правила и создайте новое правило только для пересылки и принятия тех протоколов / портов, которые вам нужно пересылать, e. грамм.:

iptables -A FORWARD -i tap0 -o enp0s3 -p tcp --dport 22 -m state --state NEW -j ACCEPT

Также вам необходимо использовать NAT назначения, если вы хотите перенаправить внешний запрос во внутреннюю локальную сеть:

Пример: перенаправить SSH на порт 10022 на внутренний порт 22 компьютера:

iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.100:22
iptables -t nat -A POSTROUTING -p tcp --dport 10022 -j MASQUERADE 

Кроме того, вы установили правило пересылки навсегда в /etc/sysctl.conf? Если ты просто сделаешь echo 1 > /proc/sys/net/ipv4/ip_forward он активен только до следующей перезагрузки.

РЕДАКТИРОВАТЬ: Я только что узнал, что я слепой. Конечно, ваш брандмауэр не отвечает на ваш ARP-запрос, он находится в другой сети. ARP-запросы не пересылаются по определению. Если ваш ноутбук хочет связываться с брандмауэром, он общается не напрямую, а через шлюз (ваш VPN). В этой таблице маршрутизации VPN присутствует как шлюз для связи с межсетевым экраном, поэтому он вообще не должен отправлять ARP-запрос на межсетевой экран. ARP - это не IP, он не пересылается.

Вы должны проверить, работает ли NAT с SSH, попробуйте то, что я опубликовал ранее, и подключитесь к вашему маршрутизатору через порт 10022, вы должны быть перенаправлены на ваш брандмауэр.