У меня есть экземпляры Linux ec2 с двумя сетевыми картами (eth0 и eth2). Оба сетевых адаптера имеют общедоступные IP-адреса и могут выходить в Интернет. Этот экземпляр Linux действует для меня как узел шлюза, перенаправляя трафик из ec2 в частные подсети, у которых нет доступа в Интернет.
Могу перенаправить трафик из экземпляра ec2 в частной подсети на этот экземпляр шлюза в общедоступной подсети. Весь трафик экземпляра шлюза поступает на eth0. Теперь я хотел бы иметь возможность выходить в Интернет через eth1, а не через eth0. Я хочу сделать это, потому что я хочу, чтобы внешний мир видел IP-адрес eth1 в качестве исходного IP-адреса.
Выполнение этих шагов помогает мне достичь этого
ip route add 10.0.0.0/23 <subnet of gateway cidr> dev eth2 table 2
ip-правило добавляется из таблицы <IP-адрес частного экземпляра ec2> 2
ip route добавить по умолчанию через 10.0.0.1 dev eth2 table 2
сброс кэша IP-маршрута
iptables -A FORWARD --in-interface eth0 -j ACCEPT # принимает трафик на eth0
iptables --table nat -A POSTROUTING --out-interface eth2 -j MASQUERADE #перенаправляет трафик наружу через eth2
С этой настройкой, когда я скручиваюсь за пределами экземпляра ec2 в частной подсети (через узел шлюза), я вижу то, что я ожидаю увидеть (то есть внешний мир видит, что запрос исходит от IP-адреса eth1), но запросы на скручивание действительно занимают много времени. долгое время (а иногда даже тайм-аут). Я бы сказал, что около 5 из 10 запросов выполняются успешно.
Что мне здесь не хватает?
Спасибо
Кей