Добрый день, помогите разобраться, необходимо ограничить юзерам доступ к шлюзу, причем есть 2 группы пользователей, с разными открытыми портами Например для бол-ва пользователей "лан" 80 порт должен быть закрыт и открыт лишь для вип-юзеров Немного изменил найденный в сети скрипт, но есть проблемма:Всем юзерам доступен 80 порт (возможно и другие) даже если его нет с списке разрешенных портов, помогите токрыть юзерам одной подсети доступ к разным портам!
#!/bin/bash
ipt=/sbin/iptables
lan=192.168.0.0/24 #Локалка
vpn=192.168.1.0/24 #VPN
lan_ip=192.168.0.1 # аипи сервера
net_ip=х.х.х.х #инет айпи
vpn_ip=192.168.1.1 # Vpn serv
lan_ports=`cat /etc/iptables/lan_ports` # порты доступные для лан
vpn_ports=`cat /etc/iptables/vpn_ports` #порты доступные для впн
net_ports=`cat /etc/iptables/net_ports` #порты доступные для инета
vip_ports=`cat /etc/iptables/vip_ports` #порты доступные для вип юзеров
lan_dev=eth0
net_dev=eth1
vpn_dev=tun0 # VPN dev
vip=`cat /etc/iptables/vip` # айпишники вип юзеров
$ipt -t nat -F
$ipt -F
$ipt -t nat -X
$ipt -X
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
$ipt -P FORWARD DROP
#create chains
$ipt -N lan_input
$ipt -N all_input
$ipt -N vip_input
$ipt -N vpn_input
#####################################################################
#####################################################################
$ipt -A INPUT -s localhost -j ACCEPT
$ipt -A INPUT -d localhost -j ACCEPT
$ipt -A INPUT -s $lan_ip -j ACCEPT
$ipt -A INPUT -s $net_ip -j ACCEPT
$ipt -A INPUT -s $vpn_ip -j ACCEPT
$ipt -A INPUT -p ALL -i $lan_dev -s $vpn -j ACCEPT
#####################################################################
$ipt -A OUTPUT -s localhost -j ACCEPT
$ipt -A OUTPUT -d localhost -j ACCEPT
$ipt -A OUTPUT -s $lan_ip -j ACCEPT
$ipt -A OUTPUT -d $lan_ip -j ACCEPT
$ipt -A OUTPUT -s $net_ip -j ACCEPT
$ipt -A OUTPUT -d $net_ip -j ACCEPT
$ipt -A OUTPUT -s $vpn_ip -j ACCEPT
$ipt -A OUTPUT -d $vpn_ip -j ACCEPT
#####################################################################$ipt -A INPUT -s $lan -p icmp -j ACCEPT
#####################################################################
$ipt -A FORWARD -j ACCEPT
$ipt -A FORWARD -p TCP --dport 5800 -i $net_dev -j ACCEPT # DameWare
$ipt -A FORWARD -p TCP --dport 5001 -i $net_dev -j ACCEPT # SalesWorks
########################################################################
for ip in $vip
{
$ipt -A INPUT -s $ip -j vip_input
}
########################################################################
$ipt -A INPUT -i $lan_dev -j lan_input
$ipt -A INPUT -i $vpn_dev -j vpn_input
$ipt -A INPUT -i $net_dev -j all_input#chains for lan
echo stage 0
for port in $lan_ports
{
$ipt -A lan_input -s $lan -p tcp --dport $port -j ACCEPT
$ipt -A lan_input -s $lan -p udp --dport $port -j ACCEPT
}
$ipt -A lan_input -s $lan -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A lan_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A lan_input -j DROPecho stage 1
for port in $vpn_ports
{
$ipt -A vpn_input -s $vpn -p tcp --dport $port -j ACCEPT
$ipt -A vpn_input -s $vpn -p udp --dport $port -j ACCEPT
}
$ipt -A vpn_input -s $vpn -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A vpn_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A vpn_input -j DROP
#chains for net
echo stage 2
for port in $net_ports
{
$ipt -A all_input -d $net_ip -p tcp --dport $port -j ACCEPT
$ipt -A all_input -d $net_ip -p udp --dport $port -j ACCEPT
}
$ipt -A all_input -d $net_ip -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A all_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A all_input -j DROP
#chain for vip
echo stage 3
for port in $vip_ports
{
$ipt -A vip_input -d $lan_ip -p tcp --dport $port -j ACCEPT
$ipt -A vip_input -d $lan_ip -p udp --dport $port -j ACCEPT
$ipt -A vip_input -d $net_ip -p tcp --dport $port -j ACCEPT
$ipt -A vip_input -d $net_ip -p udp --dport $port -j ACCEPT
}
$ipt -A vip_input -d $lan_ip -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A vip_input -j REJECT --reject-with icmp-net-unreachable
$ipt -A vip_input -j DROP
echo stage 4
echo 1 > /proc/sys/net/ipv4/ip_forward
$ipt -t nat -A POSTROUTING -o $net_dev -j SNAT --to-source $net_ip
$ipt -t nat -A POSTROUTING -p TCP --dport 5800 -d 192.168.0.116 -j SNAT --to-source $net_ip #DameWare
$ipt -t nat -A POSTROUTING -p TCP --dport 5001 -d 192.168.0.116 -j SNAT --to-source $net_ip #SalesWorks
$ipt -t nat -A POSTROUTING -o $lan_dev -s $vpn -j MASQUERADE # openVPN####################PREROUTING######################################
$ipt -t nat -A PREROUTING -p tcp --dport 5001 -j DNAT --to-destination 192.168.0.116:5001 #SalesWorks
$ipt -t nat -A PREROUTING -p TCP --dport 5800 -j DNAT --to-destination 192.168.0.116:5800 #Dameware Roman
Может вы сначала доку почитаете? А то скрипт похоже сделан по принципу "с мира по нитке". Заодно это поможет вам четко сформулировать вопрос. Очень хорошая дока есть на этом сайте.
>Может вы сначала доку почитаете? А то скрипт похоже сделан по принципу
>"с мира по нитке". Заодно это поможет вам четко сформулировать вопрос.
>Очень хорошая дока есть на этом сайте.Доку на сайте давно обнаружил и читаю, скрипт действительно собран с миру монитке, точнее чужой скрипт + то что мне нужно дописаное мною Все же хотелось бы получить помощь гуру :)
По поводу точнее сформулировать вопрос:
Машина используется в кач-ве роутера+прокси, бол-ву пользователей запрещен 80 порт (а так же 21 и тд,что бы не ходили в обход SQUID), соответвенно в файле lan_ports его нет Что я хочу от этого скрипта, что бы пользователи имели доступ только к тем портам, которые указанны в файле, независимо от того находятся ли они на сервере (pop, smtp) или за ним (80, smtp, pop И тд) Так же в сети есть неск пользователей с айпи адресами из той же подсети что и "простые смертные", котрые будут иметь доступ к большему кол-ву портов Что я сейчас имею: независимо от указанных портов в файла юзеры могут пользоваться всеми портами (я проверял 80 и 21)
>Добрый день, помогите разобраться, необходимо ограничить юзерам доступ к шлюзу, причем есть
>2 группы пользователей, с разными открытыми портами Например для бол-ва пользователей
>"лан" 80 порт должен быть закрыт и открыт лишь для вип-юзеровКогда-то давным-давно меня очень интересовала настройка файервола на ОС GNU/Linux. Очень - потому что прокси выставленный без оного в Большой Интернет почему-то взломали, за ним взломали ещё пару машин _за_ ним... Надо было что-то делать.
>Немного изменил найденный в сети скрипт, но есть проблемма:
Да, готовые скриптов и изучение предмета стали основными направлениями моих поисков. Благо готовых "скриптов" по всему интернету -- масса... Смущало одно: любой их них был абслютно, пугающе нечитабелен. Это вызывало очень неприятные сомнения в собственных способностях даже после изучения множества статей об iptables, не включавших в себя "готовых" скриптов.
Я так и не достиг "высот" написания собственного "готового" скрипта, но проблему построения файервола на iptables решил. Я использую "компилятор правил iptables", как я его для себя обозначил, - FireHOL. http://firehol.sf.net/
http://google.ru/search?q=firehol+"Andrey+Mitrofanov&qu...
>Всем юзерам доступен 80 порт (возможно и другие) даже если его нет
>с списке разрешенных портов, помогите токрыть юзерам одной подсети доступ к
>разным портам!Странным образом, "готовые скрипты" вроде Вашего всё ещё вызывают у _меня_ ужас своей нечитабельностью. Да, теперь _я_могу_, сделав над собой усилие, прочитать такой скрипт, но многократно (ужас!) перечитывать его исправляемые варианты -- выше моих сил. :)
Хотите, помогу переписать[1] Ваш файервол на firehol, чтобы и Вы никогда больше :) не читали ужасных "готовых скриптов"[2]?
----
[1] - примерно вот так: http://www.opennet.me/openforum/vsluhforumID3/12524.html#1 Получилось несколько короче "оригинала" и _существенно_ читабельнее, не правда ли?[2] - Чтение iptables-save и firehol debug/explain _после_ готового :) скрипта на firehol, тем не менее, не вызывает ужаса, приветствуется для углубления :) понимания, и использовалось мною для отладки собственных конфигураций. Они теперь уже "подросли" и, наверное, уже сами способны кого-то напугать, но не меня. Например, на трёх хостах "под моим началом" счётчик строк 'egrep -v "^ *(#|$)" <firehol.conf |wc -l' показал 28, 58 и 79. Счётчики строк в iptables[3] - 149, 313 и 501 соответственно.
[3] 'iptables-save |egrep "^-"|wc -l' - созданием цепочек, загрузкой модулей и установкой ip_forward - пренебрегаю :), хотя firehol всё это и делает. за меня.
----
PS: В отпуск собираюсь, если меня не будет видно-слышно недели три :)) -- появлюсь напомните о себе.PPS: 2SubGun: ;) /так/--^^ агитировать за exim ещё не возьмусь. может быть, когда нибудь... если дебиановский exim-config не перерастёт в компилятор конфигураций exim, решающий такие Ж) проблемы.
debian:/home/makar# iptables -L --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT 0 -- localhost anywhere
2 ACCEPT 0 -- anywhere localhost
3 ACCEPT 0 -- debian.unit.ru anywhere
4 ACCEPT 0 -- xxx anywhere
5 ACCEPT 0 -- 192.168.1.1 anywhere
6 ACCEPT 0 -- 192.168.1.0/24 anywhere
7 ACCEPT icmp -- localnet/24 anywhere
8 vip_input 0 -- terminalserver.unit.ru anywhere
9 vip_input 0 -- mainserver.unit.ru anywhere
10 vip_input 0 -- pdc.unit.ru anywhere
11 lan_input 0 -- anywhere anywhere
12 vpn_input 0 -- anywhere anywhere
13 all_input 0 -- anywhere anywhereChain FORWARD (policy DROP)
num target prot opt source destination
1 ACCEPT 0 -- anywhere anywhere
2 ACCEPT tcp -- anywhere anywhere tcp dpt:5800
3 ACCEPT tcp -- anywhere anywhere tcp dpt:5001Chain OUTPUT (policy DROP)
num target prot opt source destination
1 ACCEPT 0 -- localhost anywhere
2 ACCEPT 0 -- anywhere localhost
3 ACCEPT 0 -- debian.unit.ru anywhere
4 ACCEPT 0 -- anywhere debian.unit.ru
5 ACCEPT 0 -- xxxxx (inet ip) anywhere
6 ACCEPT 0 -- anywhere xxxxx (inet ip)
7 ACCEPT 0 -- 192.168.1.1 anywhere
8 ACCEPT 0 -- anywhere 192.168.1.1Chain all_input (1 references)
num target prot opt source destination
1 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:webcache
2 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:8080
3 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:netbios-ssn
4 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:netbios-ssn
5 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:netbios-dgm
6 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:netbios-dgm
7 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:netbios-ns
8 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:netbios-ns
9 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:smtp
10 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:25
11 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:pop3
12 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:pop3
13 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:449
14 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:449
15 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:1488
16 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:1488
17 ACCEPT tcp -- anywhere xxxxx (inet ip) tcp dpt:domain
18 ACCEPT udp -- anywhere xxxxx (inet ip) udp dpt:domain
19 ACCEPT 0 -- anywhere xxxxx (inet ip) state RELATED,ESTABLISHED
20 REJECT 0 -- anywhere anywhere reject-with icmp-net-unreachable
21 DROP 0 -- anywhere anywhereChain lan_input (1 references)
num target prot opt source destination
1 ACCEPT tcp -- localnet/24 anywhere tcp dpt:https
2 ACCEPT udp -- localnet/24 anywhere udp dpt:https
3 ACCEPT tcp -- localnet/24 anywhere tcp dpt:ldap
4 ACCEPT udp -- localnet/24 anywhere udp dpt:ldap
5 ACCEPT tcp -- localnet/24 anywhere tcp dpt:ldaps
6 ACCEPT udp -- localnet/24 anywhere udp dpt:ldaps
7 ACCEPT tcp -- localnet/24 anywhere tcp dpt:microsoft-ds
8 ACCEPT udp -- localnet/24 anywhere udp dpt:microsoft-ds
9 ACCEPT tcp -- localnet/24 anywhere tcp dpt:domain
10 ACCEPT udp -- localnet/24 anywhere udp dpt:domain
11 ACCEPT tcp -- localnet/24 anywhere tcp dpt:webcache
12 ACCEPT udp -- localnet/24 anywhere udp dpt:8080
13 ACCEPT tcp -- localnet/24 anywhere tcp dpt:netbios-ssn
14 ACCEPT udp -- localnet/24 anywhere udp dpt:netbios-ssn
15 ACCEPT tcp -- localnet/24 anywhere tcp dpt:netbios-dgm
16 ACCEPT udp -- localnet/24 anywhere udp dpt:netbios-dgm
17 ACCEPT tcp -- localnet/24 anywhere tcp dpt:netbios-ns
18 ACCEPT udp -- localnet/24 anywhere udp dpt:netbios-ns
19 ACCEPT tcp -- localnet/24 anywhere tcp dpt:smtp
20 ACCEPT udp -- localnet/24 anywhere udp dpt:25
21 ACCEPT tcp -- localnet/24 anywhere tcp dpt:pop3
22 ACCEPT udp -- localnet/24 anywhere udp dpt:pop3
23 ACCEPT tcp -- localnet/24 anywhere tcp dpt:449
24 ACCEPT udp -- localnet/24 anywhere udp dpt:449
25 ACCEPT tcp -- localnet/24 anywhere tcp dpt:1488
26 ACCEPT udp -- localnet/24 anywhere udp dpt:1488
27 ACCEPT tcp -- localnet/24 anywhere tcp dpt:3389
28 ACCEPT udp -- localnet/24 anywhere udp dpt:3389
29 ACCEPT 0 -- localnet/24 anywhere state RELATED,ESTABLISHED
30 REJECT 0 -- anywhere anywhere reject-with icmp-net-unreachable
31 DROP 0 -- anywhere anywhereChain vip_input (3 references)
num target prot opt source destination
1 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:ftp
2 ACCEPT udp -- anywhere debian.unit.ru udp dpt:fsp
3 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:webcache
4 ACCEPT udp -- anywhere debian.unit.ru udp dpt:8080
5 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:netbios-ssn
6 ACCEPT udp -- anywhere debian.unit.ru udp dpt:netbios-ssn
7 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:netbios-dgm
8 ACCEPT udp -- anywhere debian.unit.ru udp dpt:netbios-dgm
9 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:netbios-ns
10 ACCEPT udp -- anywhere debian.unit.ru udp dpt:netbios-ns
11 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:smtp
12 ACCEPT udp -- anywhere debian.unit.ru udp dpt:25
13 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:pop3
14 ACCEPT udp -- anywhere debian.unit.ru udp dpt:pop3
15 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:449
16 ACCEPT udp -- anywhere debian.unit.ru udp dpt:449
17 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:1488
18 ACCEPT udp -- anywhere debian.unit.ru udp dpt:1488
19 ACCEPT tcp -- anywhere debian.unit.ru tcp dpt:domain
20 ACCEPT udp -- anywhere debian.unit.ru udp dpt:domain
21 ACCEPT 0 -- anywhere debian.unit.ru state RELATED,ESTABLISHED
22 REJECT 0 -- anywhere anywhere reject-with icmp-net-unreachable
23 DROP 0 -- anywhere anywhereChain vpn_input (1 references)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:webcache
2 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:8080
3 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:netbios-ssn
4 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:netbios-ssn
5 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:netbios-dgm
6 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:netbios-dgm
7 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:netbios-ns
8 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:netbios-ns
9 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:smtp
10 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:25
11 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:pop3
12 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:pop3
13 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:449
14 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:449
15 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:1488
16 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:1488
17 ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:domain
18 ACCEPT udp -- 192.168.1.0/24 anywhere udp dpt:domain
19 ACCEPT 0 -- 192.168.1.0/24 anywhere state RELATED,ESTABLISHED
20 REJECT 0 -- anywhere anywhere reject-with icmp-net-unreachable
21 DROP 0 -- anywhere anywhere
iptables-save не судьба ? -- если реально человеку помогать -- то не так ведь?
>iptables-save не судьба ? -- если реально человеку помогать -- то не
>так ведь?а... вот оно что...
тогда понятно почему forward хоть и drop -- но всё равно accept
>>iptables-save не судьба ? -- если реально человеку помогать -- то не
>>так ведь?
>
>а... вот оно что...
>тогда понятно почему forward хоть и drop -- но всё равно accept
>В смысле?
>>>iptables-save не судьба ? -- если реально человеку помогать -- то не
>>>так ведь?
>>
>>а... вот оно что...
>>тогда понятно почему forward хоть и drop -- но всё равно accept
>>
>
>В смысле?в прямом
>|| iptables-save не судьба ? -- если реально человеку помогать -- то не так ведь?Перевожу: помогающим читать и писать _удобнее_ на одном "языке". Вывод iptables-save больше похож на вводимые (в скрипте~) правила == он более удобен для. Независимо от того, что думал себе %) автор -L.
Кроме того, в выводе -L нет таблицы nat, даже если в ней есть правила, присутстуют "localnet/" и числовые адреса вперемешку и проч.
Показывай вывод iptables-save -- быстрее ответят.
>>тогда понятно почему forward хоть и drop -- но всё равно accept
>В смысле?В смысле в церочке FORWARD у тебя стоит ACCEPT-ото_всех-ко_всем. Первой строкой: ни до второй-третьей старательно "выписанных" строк этой цепочки, ни до политики DROP дело не доходит никогда. Это к вопросу, почему у тебя всем везде "можно".
Туда же относятся и опять же старательно выписанные правила в INPUT/OUTPUT и их подцепочках: если тебя удивляло, почему доступ к Инету _не_ ограничивается этой кучей правил, --
>>| Что я сейчас имею: независимо от указанных портов в файла юзеры могут пользоваться всеми портами
-- откорою тайну: в цепочку INPUT попадают пакеты адресованные _твоей_ машине, а через цепочку OUTPUT проходят только пакеты, исходящие от неё лично-локально (NAT-ами и редиректами - в данном случае пренебрежём). Пакеты, которые проходят "насквозь", например, те, что ты хотел бы ограничивать = соединения из локалки в интернет, нужно "ловить" в цепочке FILTER.
вобщем лучше как посоветовали выше либо учить/
либо как сказал Andrey Mitrofanov какой-нибудь билдер.
>Добрый день, помогите разобраться, необходимо ограничить юзерам доступ к шлюзу, причем есть
>2 группы пользователей, с разными открытыми портами Например для бол-ва пользователей
>"лан" 80 порт должен быть закрыт и открыт лишь для вип-юзеров
>Немного изменил найденный в сети скрипт, но есть проблемма:
# -- /etc/firehol/firehol.conf --
version 5# 449 - "as"? 1488 - docstor? нет 445?
all_svcs="webcache netbios_ns netbios_dgm netbios_ssn as smtp pop3 docstor dns"
## определения "сервисов" в нотации firehol
server_dmware_ports="tcp/5001"; client_dmware_ports="default"
server_salesw_ports="tcp/5800"; client_salesw_ports="default"
server_docstor_ports="tcp/1488 udp/1488"; client_docstor_ports="default"
server_as_ports="tcp/449 udp/449"; client_as_ports="default"lan_dev=eth0
lan_ip=192.168.0.1 # аипи сервера
lan=192.168.0.0/24 #Локалка
#lan_ports=`cat /etc/iptables/lan_ports` # порты доступные для лан #+$all_svcs !
lan_svcs="https ldap ldaps microsoft_ds rdp"
vip=`cat /etc/iptables/vip` # айпишники вип юзеров
#vip_ports=`cat /etc/iptables/vip_ports` #порты доступные для вип юзеров #+$all_svcs !
vip_svcs="ftp"vpn_dev=tun0 # VPN dev
vpn_ip=192.168.1.1 # Vpn serv
vpn=192.168.1.0/24 #VPN
#vpn_ports=`cat /etc/iptables/vpn_ports` #порты доступные для впн
#== vpn_svcs="$all_svcs"net_dev=eth1
net_ip=х.х.х.х #инет айпи
##net_ports=`cat /etc/iptables/net_ports` #порты доступные для инета
#?? net_svcs="$all_svcs"
##-t NAT#?masquerade
snat to "$PUBLIC_MYIP" outface "$net_dev"NATTED=192.168.0.116
dnat to "$NATTED" proto tcp dport "5001 5800"##-t FILTER
interface "$lan_dev" lan
server "icmp" acceptrouter net inface "$net_dev" dst "$net_ip"
# server "dmware salesw" accept
#?? server "$all_svcs" acceptrouter other
policy reject
server "$all_svcs" accept
group with inface "$lan_dev $vpn_dev" src "$lan $vpn"
server "$lan_svcs" accept
server "$vip_svcs" accept src "$vip"
server "dmware salesw" accept dst "$NATTED"
group endСмысл исходного скрипта, вообще говоря, не сохранён: я оставил в основном только "хождение" наружу. С NAT-ом и маскарадом: не прочитал толком, чего "хотелось", написал от балды. Может ещё чего не "расшифровал". Там, где в коммертариях "?", -- что-то не понятно или не так.
"router net" - пустой соединения _из_ интернета посностью дропаются.
Сервисы в firehol описываются не номерами портов, а именами. Кроме директив dnat/snat.