Вы думали в правильном направлении, но использовали немного неправильного правила.
$ iptables -t nat -A PREROUTING -p tcp -d your_static_ip_of_eth1 \
--dport 8888 -j DNAT --to-destination 192.168.1.90:8888
Это правило передаст весь трафик, который достигает Вашего сервера с целевым портом 8888 и с целевым IP его интерфейса eth1 к Вашему внутреннему веб-серверу. Если Вы хотите изменить его так, Ваш сервер отвечает в порте 80
затем замените номер порта --dport
опция. Если Вам нравится изменяться, порт веб-сервера затем изменяют порт --to-destination
опция.
Я предполагаю, что Вы защитили свою систему с надлежащим набором правил iptables, но для полноты, рассмотрите эти правила также:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth2 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
Также Вам нужна включенная маршрутизация ipv4, так отредактируйте/etc/ufw/sysctl.conf и некомментарий:
net/ipv4/ip_forward=1
/nonew
Когда TCP проходит через IPv6, изменяется метод, используемый для вычисления контрольной суммы, согласно [1131799]RFC 2460[1131800]:
Так как можно получить больше портов?
Одним из подходов было бы суммирование дополнительных IP-адресов с использованием большего количества интерфейсов. Если ваша система имеет несколько сетевых карт, это проще, но даже с одной сетевой картой можно использовать виртуальные интерфейсы (так же известные как [1131474]псевдонимы[1131475]) для выделения большего количества IP-адресов, если это необходимо.
ПРИМЕЧАНИЕ:[1131477] Использование псевдонимов было заменено на
iproute2
, который можно использовать для суммирования IP-адресов на одном интерфейсе (т.е. [1131480]eth0[1131481]).
Пример
Linux Advanced Routing & Traffic Control HOWTO
Multiple default routes / public gateway IPs under Linux
iproute2 cheat sheet - сайт Даниила Батурина
Да вы можете!
Это было сделано ранее, например, сервер шифрования EdgeHill, Wicch имеет> 25.000.000 Deamons, работающих в Интернете.
Я хотел вмешаться только потому, что хорошего ответа нет.
Один из способов сделать это - добавить параметр IP, который указывает расширение порта. Опция должна быть спроектирована так, чтобы соответствовать необязательной части IP-заголовка и пропускаться при неизвестных переходах.
Вы могли бы использовать эту опцию и ее информационную информацию для расширения номера порта источника, назначения или обоих портов.
Ограничения не будут автоматически работать в существующем программном обеспечении, просто добавив опцию, в любом случае, их придется переписать, чтобы воспользоваться этой опцией, независимо от того, как она реализована, существующее программное обеспечение и межсетевые экраны будут игнорировать пакет или процесс как обычно, используя значения в полях порта источника и назначения.
Короче говоря, сделать это непросто, и лучше было бы использовать один многоразовый прослушиватель и данные, содержащиеся в полезной нагрузке пакета.
Вы также можете более легко разрешить повторное использование портов в программном обеспечении, что может помочь преодолеть это ограничение за счет повторного использования портов сервера для множественных клиентских подключений.
Rtsp, например, может использовать заголовок SessionId вместе с различными другими заголовками в полезной нагрузке IP-пакета, чтобы определить, для какого соединения был отправлен запрос, и действовать соответственно, например, если сокет, из которого было доставлено сообщение, не совпадает с удаленным адресом сокета, которому соответствует сеанс, тогда можно либо разрешить сеансу обновляться новым сокетом для обработки, отклонить сообщение или выполнить ряд других действий. в зависимости от приложения.
Http-сервер также может работать с этим или любым другим типом сервера.
Главное, что следует помнить при разрешении повторного использования портов, - это то, что вы также должны учитывать исходный IP-адрес.