Я задал связанный вопрос здесь - Не удается выполнить обратный маршрут по туннелю IPsec с VPS - но я ответил на это и немного двинулся дальше.
Конечная цель того, чего я пытаюсь достичь, такова:
У нас есть несколько маршрутизаторов 4G, которые, как это принято в Великобритании, находятся за парой уровней NAT операторского уровня и, следовательно, не являются общедоступными. Нам необходимо иметь возможность разговаривать с этими маршрутизаторами с сервера на AWS. Моя идея для достижения этой цели заключалась в том, чтобы настроить VPS со статическим IP-адресом и установить VPN от маршрутизатора 4G к VPS. Затем мы можем связаться с маршрутизатором 4G через общедоступный IP-адрес на VPS, который будет настроен на пересылку трафика обратно по туннелю VPN.
Где я нахожусь:
Я установил VPS в Digital Ocean и настроил libreSwan IPSec VPN, используя этот скрипт - https://github.com/philplckthun/setup-simple-ipsec-l2tp-vpn - и успешно установил VPN от маршрутизатора до VPS. Я могу пинговать с VPS на маршрутизатор и на другие устройства, подключенные к маршрутизатору (это была моя первоначальная проблема). Маршрутизатор настроен на использование VPN-туннеля в качестве маршрута по умолчанию, и когда я пингую VPS с маршрутизатора, я вижу пакеты, поступающие с локального адреса маршрутизатора (как и для устройств, подключенных к маршрутизатору), но теперь у меня есть проблема, где, если Я проверяю интернет-адрес (например, 8.8.8.8) с маршрутизатора, я вижу, что пакеты попадают на VPS, но они не пересылаются в Интернет (что доказано проверкой связи с другой машиной в Интернете и просмотром TCPdump). Я настроил пересылку в /etc/sysctl.conf (net.ipv4.ip_forward = 1
) и включил MASQUERADE в iptables (-A POSTROUTING -o eth0 -j MASQUERADE
). Я также пробовал несколько других правил iptables, которые нашел в Интернете, но ничего не помогло.
Диаграмма сети:
laptop (used for testing) --- 4G router --- Internet/VPN tunnel --- DO VPS
192.168.0.159 192.168.0.1 public IP
Если я пингую 8.8.8.8 с ноутбука, TCPdump на VPS видит вот что:
14:24:58.713759 IP 192.168.0.159 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 714, length 40
но ноутбук не получает ответа, и, как я уже сказал, я подтвердил, что пакеты больше не идут.
Таблица маршрутизации VPS:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 178.62.64.1 0.0.0.0 UG 0 0 0 eth0
178.62.64.0 * 255.255.192.0 U 0 0 0 eth0
Что я делаю не так (кроме того, что встаю и иду на работу)?
Спасибо.
Чтобы ответить на мой собственный вопрос; в ipsec.conf на сервере у нас было left=<server's subnet>
. Изменив это на left=0.0.0.0/0
получил пересылку, работающую как ожидалось.