1

Я настраиваю VPN в одной из сетей наших клиентов. В связи с требованием об их окончании мы не можем получить трафик (кажется) с частного IP-адреса. Мне удалось настроить туннель с нашим клиентом, но у меня возникла проблема с настройкой NAT для работы по мере необходимости. В целях тестирования я смоделировал среду в AWS, используя 2 VPC, и наблюдал за трафиком, используя tcpdump или tshark, чтобы увидеть, что представляет собой адрес from ip. Вот копия установки с разными IP-адресами.

(Simulated Customer Side VPC - 172.16.0.0/16)
Customer Test Server - 172.16.0.20
AWS Hardware VPN - 1.1.1.1
|
|
|
(Internet)
|
|
|
(Our VPC - 10.10.10.0/16)
OpenSwan VPN server - 2.2.2.2 and 10.10.10.10
Internal Test Server - 10.10.10.20

Файл ipsec.conf для OpenSwan ....

conn Tunnel1
  authby=secret
  auto=start
  left=%defaultroute
  leftid=2.2.2.2
  right=1.1.1.1
  type=tunnel
  ikelifetime=8h
  keylife=1h
  phase2alg=aes128-sha1;modp1024
  ike=aes128-sha1;modp1024
  auth=esp
  keyingtries=%forever
  keyexchange=ike
  leftsubnet=10.10.10.0/16
  rightsubnet=172.16.0.0/16
  dpddelay=10
  dpdtimeout=30
  dpdaction=restart_by_peer

и файл секретов выглядит так ....

2.2.2.2 1.1.1.1: PSK "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Я также установил следующие значения в /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0

Делая это, я могу заставить туннель подняться, и я могу общаться между тестовыми экземплярами, используя частные ip-адреса другого тестировщика (с обеих сторон). Это показывает (для ping и ssh), что связь происходит с частного IP-адреса другого тестового сервера. Например, пинг с 10.10.10.20 по 172.16.0.20 показывает (через tshark) пинг с 10.10.10.20.

Чтобы трафик выглядел так, как будто он поступает с внешнего IP-адреса сервера OpenSwan, я добавил запись ip-таблиц в экземпляр OpenSwan.

iptables -t nat -I POSTROUTING -s 10.10.10.0/16 -d 172.16.0.0/16 -o eth0 -j SNAT --to-source 2.2.2.2

Затем, когда я пинг с 10.10.10.20 до 172.16.0.20, пинг идет от 2.2.2.2. Это поведение, на которое я надеялся, однако, когда я пытаюсь выполнить ssh с 10.10.10.20 по 172.16.0.20, трафик туда не попадает. Tshark на клиентском тестовом сервере не показывает входящий ssh-трафик с 10.10.10.20 или 2.2.2.2, а tcpdump на сервере OpenSwan показывает, что трафик не получает NAT для 2.2.2.2 (он показывает пакеты только для 10.10. 10.20 -> 172.16.0.20:22).

Я пробовал много разных конфигураций (борющихся в течение нескольких дней) для установки left, leftsubnet, leftsourceip, leftnexthop, а также использования SNAT и MASQUERADE и других различных записей iptables, но мне не повезло, что трафик выглядел так, как нужно.

Что мне нужно для того, чтобы входящий трафик в сети клиентов выглядел так, как будто он исходит от внешнего IP-адреса? Любая помощь с благодарностью. Благодарю.

Если вам нужны дополнительные журналы tcpdump или tshark, я также могу предоставить их.

И FWIW, у меня действительно есть таблицы маршрутов AWS в VPC Customer Test, установленные так, что трафик 2.2.2.2 и 10.10.10.0/16 идет к шлюзу VPN, а таблицы маршрутов в Нашем VPC имеют весь трафик 172.16.0.0/16, идущий в ENI для экземпляра OpenSwan.

0