Ваше решение - использовать iptables
для определения правил NAT.
В качестве примеров я буду ссылаться на $ physicalServerIP, который является локальным IP, и $ publicIP для вашего общедоступного IP.
Чтобы перенаправить Tomcat (предполагается на $ physicalServerIP), чтобы его попытки подключиться к серверу на порту 8081 фактически отправлялись на сервер на порту 8082:
iptables -t nat -A PREROUTING -p tcp -s $physicalServerIP --dport 8081 -j REDIRECT --to-port 8082
Входящие запросы, поступающие на $ publicIP на порт 8082, могут быть отправлено на $ physicalServerIP на порт 8081:
iptables -t nat -A PREROUTING -d $publicIP -p tcp -m tcp --dport 8082 -j DNAT --to-destination $physicalServerIP:8081
Чтобы завершить предыдущий NAT, направьте пакеты от $ physicalServerIP для отправки (обратно) через NAT на общедоступном интерфейсе:
iptables -t nat -A POSTROUTING -s $physicalServerIP/32 -j SNAT --to-source $publicIP
Имея в виду этот подход, если вы хотите Вся локальная сеть должна проходить через NAT, вы можете изменить 32
с предыдущей команды на 24
, если ваша локальная сеть - $ physicalServerIP / 24.
Уберите (
и ищите не )
. Используйте \1
, чтобы сохранить совпадающую группировку.
sed 's/a\(([^)]*\))/a\1_mynewstring)/g' file1
Получается:
a(bc_mynewstring)
a(l_mynewstring)
a(d_mynewstring)
a(loke_mynewstring)
a(babab_mynewstring)
a(h323_mynewstring)