нужно замаскироваться так, чтобы заходя на сервер из локалки но указав внешний адрес сервера, сервер меня видел с внешним ип адресом (тоесть со своим внешним)
это должно быть очень сильное колдунство, т.е. довольно тяжелый костыль
первый пример в ответе №1 набора правил для МЭ - это широкое использование модуля conntrack для фильтрации транзитных и входящих соединений
второй пример в ответе №3 набора правил для МЭ - это использование модуля state и conntrack
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED,DNAT -j ACCEPT
для транзитного трафика принимать соединения в состоянии ESTABLISHED и RELATED, если в таблице nat цепочки PREROUTING есть правило для изменения IP адреса назначения (DNAT), то принять такое соединение
iptables -A INPUT -i eth0 -p icmp -m conntrack --ctstate NEW -j ACCEPT
если интерфейс, на который прибежал ICMP пакет eth0, и это первый для данного соединения ICMP, тогда принимаем
iptables -A FORWARD -i eth1 -m conntrack --ctstate NEW -j ACCEPT
Если интерфейс назначения eth1 и это первый для данного соединения пакет любого типа, тогда принять
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
не используется ни модуль state, ни conntrack, что затруднит составление сложных правил.
Кроме полезных состояний, есть состояние INVALID, которое будет отбиваться правилом по умолчанию DROP для FORWARD и INPUT
при таких правилах надо следить за порядком правил, для каждого DNAT действия в PREROUTING разрешать соединения в цепочке FORWARD таблицы filter