Подробное руководство по ipfw nat
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- капитан
- Сообщения: 1820
- Зарегистрирован: 2010-12-25 20:41:50
- Откуда: Хлебная столица
Re: Подробное руководство по ipfw nat
Занести в таблицу диапазон IP — можно только маской, без вариантотв?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2009-09-01 11:19:26
- Откуда: Москва
- Контактная информация:
Re: Подробное руководство по ipfw nat
Удалось решить http://forum.lissyara.su/viewtopic.php? ... 25#p189254
на самом деле решил что напрягать ipfw для 80 порта - не самый удачный вариант.
поставил на шлюзе nginx - он у меня слушает 80 порт и уже nginx распределяет кого куда. В зависимости какой адрес домена набрал, на такой сервер и отправляйся.
у меня сейчас просто на одном внешнем IP три доменных имени висят, которые три разных машины обслуживает, так вот nginx видит какое набрали доменное имя и уже проксирует (именно проксирует, а не маскарадинг или редирект) на нужную машину.
если речь идет о web, то решается через nginx ооочень красиво на мой взгляд.
если не web (а например rdp на 10.0.0.15), то примерно так (net.inet.ip.fw.one_pass должно быть в 0 чтобы пакеты проходили не один раз через фаервол):
немного поясню как работает:
первый проход пакета
раз пакет для IpOut:3389 то мы его засовываем в правило nat 123 и делаем для 10.0.0.15:3389
второй проход пакета
раз пакет из 10.0.0.0/24, то отправляется на правило nat 10 где он маскируется под IpOut
такой пакет придет на 10.0.0.15:3389 от IpOut, ответный пакет будет размаскирован в обоих правилах
Эту фишку можно использовать и для внешних адресов. чтобы получатель получал всё от имени шлюза
Не то чтобы мне удалось решить это только что, но поступил вопрос в личку, решил отписаться. На случай если будет интересно кому-то:никак не получается сотворить следующее.
имеется: локальная сеть - шлюз - инет
на шлюзе проброс портов через redirect_port tcp 10.0.0.200:80 out_ip:80
не получается сделать так чтобы клиенты из локальной сети при вводе в браузере out_ip попадали на 10.0.0.200, чего к сожалению не происходит.
+ порт 7777 и еще некоторые не web
честно говоря что-то пока не могу придумать как сделать.
там же на шлюзе стоит squid и статистика пользователей на 10.0.0.1:80
на самом деле решил что напрягать ipfw для 80 порта - не самый удачный вариант.
поставил на шлюзе nginx - он у меня слушает 80 порт и уже nginx распределяет кого куда. В зависимости какой адрес домена набрал, на такой сервер и отправляйся.
у меня сейчас просто на одном внешнем IP три доменных имени висят, которые три разных машины обслуживает, так вот nginx видит какое набрали доменное имя и уже проксирует (именно проксирует, а не маскарадинг или редирект) на нужную машину.
если речь идет о web, то решается через nginx ооочень красиво на мой взгляд.
если не web (а например rdp на 10.0.0.15), то примерно так (net.inet.ip.fw.one_pass должно быть в 0 чтобы пакеты проходили не один раз через фаервол):
Код: Выделить всё
${FwCMD} nat 123 config ip ${IpOut} redirect_port tcp 10.0.0.15:3389 ${IpOut}:3389
${FwCMD} add nat 123 ip from any to ${IpOut} 3389
${FwCMD} add nat 123 tcp from 10.0.0.15 3389 to any
${FwCMD} nat 10 config ip ${IpOut} same_ports
${FwCMD} add nat 10 all from 10.0.0.0/24 to 10.0.0.15
первый проход пакета
раз пакет для IpOut:3389 то мы его засовываем в правило nat 123 и делаем для 10.0.0.15:3389
второй проход пакета
раз пакет из 10.0.0.0/24, то отправляется на правило nat 10 где он маскируется под IpOut
такой пакет придет на 10.0.0.15:3389 от IpOut, ответный пакет будет размаскирован в обоих правилах
Эту фишку можно использовать и для внешних адресов. чтобы получатель получал всё от имени шлюза
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2007-10-24 14:37:12
- Откуда: С-Пб
Re: Подробное руководство по ipfw nat
Благодарю за оперативный ответ. Правильно ли я понял, что в таком случае придется создавать по дополнительному экземпляру nat для каждого redirect (port/addr)?bwdude писал(а):Удалось решить
Рискну спросить у знатоков по возникшим "неприятностям" в ходе настройки и эксплуатации (адреса и имена приведены измененными, любое совпадение случайно).
Сервер, два интерфейса, igb0 к провайдеру, igb1 в локальную сеть.
Код: Выделить всё
uname -a
FreeBSD serv.example.com 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Mar 31 22:52:39 MSD 2011 adm@serv.example.com:/usr/obj/usr/src/sys/kern64 amd64
Код: Выделить всё
cat /usr/src/sys/amd64/conf/kern64
...
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
...
Код: Выделить всё
cat /etc/sysctl.conf
net.inet.ip.fw.one_pass=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.ip.fastforwarding=1
net.inet.tcp.maxtcptw=40960
net.inet.icmp.drop_redirect=1
net.inet.icmp.maskrepl=0
net.inet.icmp.icmplim=100
kern.ipc.nmbjumbop=192000
kern.ipc.nmbclusters=229376
kern.ipc.maxsockets=204800
net.inet.tcp.maxtcptw=163840
kern.maxfiles=204800
kern.ipc.somaxconn=4096
net.inet.ip.intr_queue_maxlen=4096
net.inet.tcp.drop_synfin=1
net.inet.tcp.nolocaltimewait=1
net.inet.ip.portrange.randomized=0
Код: Выделить всё
cat /etc/rc.conf
gateway_enable="YES"
ifconfig_igb0="inet 1.2.3.214 netmask 255.255.255.252 -rxcsum -txcsum -tso "
ifconfig_igb0_alias0="inet 1.2.4.2 netmask 255.255.255.248"
ifconfig_igb0_alias1="inet 1.2.5.149 netmask 255.255.255.240"
ifconfig_igb0_alias2="inet 1.2.5.151 netmask 255.255.255.240"
ifconfig_igb1="inet 192.168.0.1 netmask 255.255.255.0"
defaultrouter="1.2.3.213"
hostname="serv.example.com"
firewall_enable="YES"
firewall_nat_enable="YES"
dummynet_enable="YES"
firewall_script="/etc/rc.ipfw"
Код: Выделить всё
cat /etc/rc.ipfw
#!/bin/sh
fw="/sbin/ipfw "
if_out="igb0"
ip_out="1.2.3.214"
ip_out0="1.2.4.2"
ip_out1="1.2.5.149"
if_in="igb1"
ip_in="192.168.0.1"
admin="3.2.1.89"
client1="192.168.0.11"
rdrct1="1.2.5.151"
rdrct238="192.168.0.56"
$fw -f flush
$fw -f pipe flush
$fw -f queue flush
$fw add 100 allow ip from any to any via lo0
$fw add 200 deny ip from any to 127.0.0.0/8
$fw add 300 deny ip from 127.0.0.0/8 to any
$fw add 1040 allow ip from any to any via $if_in
$fw add 1041 allow tcp from $admin to $ip_out 22 in recv $if_out keep-state
$fw add 1050 deny ip from any to 192.168.0.0/16 in recv $if_out
$fw add 1060 deny ip from 192.168.0.0/16 to any in recv $if_out
$fw add 1070 deny ip from any to 172.16.0.0/12 in recv $if_out
$fw add 1080 deny ip from 172.16.0.0/12 to any in recv $if_out
$fw add 1090 deny ip from any to 10.0.0.0/8 in recv $if_out
$fw add 10100 deny ip from 10.0.0.0/8 to any in recv $if_out
$fw add 10110 deny ip from any to 169.254.0.0/16 in recv $if_out
$fw add 10120 deny ip from 169.254.0.0/16 to any in recv $if_out
$fw pipe 1 config bw 2Mbit/s queue 60 gred 0.002/10/30/0.1
$fw queue 1 config pipe 1 queue 60 mask src-ip 0xffffffff gred 0.002/10/30/0.1
$fw pipe 2 config bw 2Mbit/s queue 60 gred 0.002/10/30/0.1
$fw queue 2 config pipe 2 queue 60 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
$fw nat 1 config log if $if_out reset same_ports deny_in redirect_port tcp $rdrct238:3389 3389
$fw nat 2 config log same_ports redirect_addr $client1 $rdrct1
$fw add 10230 skipto 10290 ip from $client1 to any out xmit $if_out
$fw add 10240 skipto 10310 ip from any to $rdrct1 in recv $if_out
$fw add 10250 queue 1 ip from any to any out xmit $if_out
$fw add 10260 nat 1 ip from any to any via $if_out
$fw add 10270 queue 2 ip from any to any in recv $if_out
$fw add 10280 allow all from any to any
$fw add 10290 queue 1 ip from any to any out xmit $if_out
$fw add 10300 nat 2 ip from $client1 to any out xmit $if_out
$fw add 10310 nat 2 ip from any to $rdrct1 in recv $if_out
$fw add 10320 queue 2 ip from any to any in recv $if_out
$fw add 10330 allow all from any to any
$fw add 65534 deny all from any to any
Клиент на DNS-сервере (в панели управления стороннего хостера) указывает "A" запись "client1.example01.com" на ip $rdrct1, пробрасывает на своем роутере нужные порты. Пробует перейти из своей сети (за своим роутером с адресом $clien1) по адресу http: //client1.example01.com и видит... кукиш. "Снаружи" все хорошо.
Вопрос: поможет только еще один экземпляр nat? Может, есть более "изящное" решение? Таких редиректов будет штук 20-30, соответственно *2 экземпляров nat?
При переагрузке очень странное поведение шлюза - сначала есть интернет, минуты через 3 пропадает и не появляется вплоть до /etc/rc.d/ipfw restart
Так же заметил неприятность - пропадают пакеты при ping на ресурсы в Internet из локальной сети и шлюза. Не очень много, из 1000 теряю 4-15, но IMHO это не есть правильно. При включении торрентов на другом компьютере за этим шлюзом число потерь пактов возрастает в 2-3 раза.
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
конфиг нгиникса выложьтеbwdude писал(а):Удалось решить http://forum.lissyara.su/viewtopic.php? ... 25#p189254
...
поставил на шлюзе nginx - он у меня слушает 80 порт и уже nginx распределяет кого куда. В зависимости какой адрес домена набрал, на такой сервер и отправляйся.
у меня сейчас просто на одном внешнем IP три доменных имени висят, которые три разных машины обслуживает, так вот nginx видит какое набрали доменное имя и уже проксирует (именно проксирует, а не маскарадинг или редирект) на нужную машину.
...
мне будет очень приятно
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2009-09-01 11:19:26
- Откуда: Москва
- Контактная информация:
Re: Подробное руководство по ipfw nat
если вы говорите про правила nat, то нет. не обязательно. можно всё в одном правиле.miragh писал(а):Благодарю за оперативный ответ. Правильно ли я понял, что в таком случае придется создавать по дополнительному экземпляру nat для каждого redirect (port/addr)?bwdude писал(а):Удалось решить
я использую разные когда мне нужно логически их разделить
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2009-09-01 11:19:26
- Откуда: Москва
- Контактная информация:
Re: Подробное руководство по ipfw nat
выкладываю пару секций server из раздела http (остальное по аналогии):vadim64 писал(а):конфиг нгиникса выложьтеbwdude писал(а):Удалось решить http://forum.lissyara.su/viewtopic.php? ... 25#p189254
...
поставил на шлюзе nginx - он у меня слушает 80 порт и уже nginx распределяет кого куда. В зависимости какой адрес
...
мне будет очень приятно
Код: Выделить всё
server {
listen 1.2.3.4;
server_name corporate.example.com autoconfig.example.com;
location / {
proxy_pass http://192.168.1.7;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /webcam/ {
proxy_pass http://192.168.1.30/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
auth_basic "enter support password";
auth_basic_user_file ngpasswd;
}
server {
listen 1.2.3.4;
server_name webportal.example.com;
location / {
proxy_pass http://192.168.1.9/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600;
}
}
server {
listen 1.2.3.4;
server_name help.example.com;
location / {
proxy_pass http://192.168.1.7/wiki/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /wiki/ {
proxy_pass http://192.168.1.7/wiki/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 1.2.3.4;
server_name mail.example.com;
location / {
proxy_pass http://192.168.1.4/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
а где кусок про рдп?
не зажимаем! выкладываем!
давно себе такое хочу, лень доки читать и думать
не зажимаем! выкладываем!
давно себе такое хочу, лень доки читать и думать
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2009-09-01 11:19:26
- Откуда: Москва
- Контактная информация:
Re: Подробное руководство по ipfw nat
рдп делается через ipfwvadim64 писал(а):а где кусок про рдп?
не зажимаем! выкладываем!
давно себе такое хочу, лень доки читать и думать
просто проброс. читай выше
уже написал
nginx только для web
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
ну нгиникс с модулями ещё и почту пробрасывает
я то думал кто то рдп накрутил ещё туда
я то думал кто то рдп накрутил ещё туда
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2007-10-24 14:37:12
- Откуда: С-Пб
Re: Подробное руководство по ipfw nat
С этого места можно поподробней (для меня было очевидно что решение с nginx касается исключительно http)? Есть понимание почему пакеты не идут к клиенту, а вот как сделать так чтоб проходили - пока не хватает знаний.bwdude писал(а):если вы говорите про правила nat, то нет. не обязательно. можно всё в одном правиле.
я использую разные когда мне нужно логически их разделить
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2007-10-24 14:37:12
- Откуда: С-Пб
Re: Подробное руководство по ipfw nat
Господа, неужели никто не подскажет выход из сложившейся ситуации? Взываю к вам 

- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
bwdude выше описал, как он решил этот вопрос
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 14
- Зарегистрирован: 2007-10-24 14:37:12
- Откуда: С-Пб
Re: Подробное руководство по ipfw nat
ПК +1 в Вашу пользу.vadim64 писал(а):bwdude выше описал, как он решил этот вопрос
По теме:
Камрад bwdude описал redirect_port, обязательно попробую когда возникнет такая проблема. Если не ошибаюсь, с redirect_addr другая ситуация, т.к. перенаправляется весь трафик.
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
я не совсем вас понимаю
bwdude описал распор из двух натов при one_pass=0, который позволяет типа проксировать на машину в локалку запросы, идущие из локалки для порта на внешнем интерфейсе роутера
что именно вы хотите?
bwdude описал распор из двух натов при one_pass=0, который позволяет типа проксировать на машину в локалку запросы, идущие из локалки для порта на внешнем интерфейсе роутера
что именно вы хотите?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 12
- Зарегистрирован: 2010-07-25 19:12:16
Re: Подробное руководство по ipfw nat
Господа знатоки подскажите пожалуйста по следующему вопросу:
благополучно работал сервер на FreeBSD 8.1 - выступая в качестве рутера-шейпера для разных внутренних серых подстей
позже нужно было добавить еще одну vlan-подсеть с использованием статического ната - IPFW_NAT redirect_addr
все сделал по статье http://www.lissyara.su/articles/freebsd ... #example_2
внешний интерфейс bce0 :
198.51.100.242/30 -tso
alias 203.0.113.19/32
внутренние интерфейсы vlan2, vlan172
192.0.2.0/24 - vlan2
192.0.172.0/29 vlan172
таким оборазом прокидываю весь трафик, который приходит на 203.0.113.19 на 192.0.172.2
на внутренней машине 192.0.172.2 есть openvpn, также вне нашей сети а именно в DC на сервере тоже настроен openvpn - они связываются по белым ip между собой соотвественно получается,
что сервер из DC видит порт UDP 1194 на ip 203.0.113.19, также из вне ходят и натятся пинги на 203.0.113.19
смотрю tcpdump'ом на интерфейсе vlan172 все натится правильно при прохождении пингов.
пробую подключится по ssh на 203.0.113.19:
ssh 203.0.113.19 - глухо
telnet 203.0.113.19 22 - глухо
смотрю на сервере tcpdump'ом на интерфейсе vlan172 по TCP 22 - глухо
Проблема именно на вход на 203.0.113.19 , на выход с 192.0.172.2 все работает отлично - NAT есть - инет работает
такое впечатление, что не редиректятся TCP пакеты на вход.
Подскажите пожалуйста - уже все перепробовал - больше нет идей в чем проблема!
Наперед спасибо.
благополучно работал сервер на FreeBSD 8.1 - выступая в качестве рутера-шейпера для разных внутренних серых подстей
позже нужно было добавить еще одну vlan-подсеть с использованием статического ната - IPFW_NAT redirect_addr
все сделал по статье http://www.lissyara.su/articles/freebsd ... #example_2
внешний интерфейс bce0 :
198.51.100.242/30 -tso
alias 203.0.113.19/32
внутренние интерфейсы vlan2, vlan172
192.0.2.0/24 - vlan2
192.0.172.0/29 vlan172
Код: Выделить всё
00300 3706180 4580006588 queue 2 ip from not 192.0.2.0/24 to 192.0.2.0/24 out
00400 2989370 975558073 queue 21 ip from 192.0.2.0/24 to not me in
00500 1250422 1172758479 queue 3 ip from not 192.0.172.0/29 to 192.0.172.0/29 out
00600 1094520 170108620 queue 31 ip from 192.0.172.0/29 to not me in
05000 14312 1295328 allow ip from any to any via lo0
05100 1125548 155012111 fwd 127.0.0.1,3128 tcp from 192.0.2.0/24 to not me dst-port 80 in recv vlan2
06000 1 56 deny ip from 192.168.0.0/16 to any in via bce0
06010 145 18952 deny ip from 172.16.0.0/12 to any in via bce0
06020 8 647 deny ip from 10.0.0.0/8 to any in via bce0
06030 0 0 deny ip from 127.0.0.0/8 to any in via bce0
06040 0 0 deny ip from 0.0.0.0/8 to any in via bce0
06050 0 0 deny ip from 169.254.0.0/16 to any in via bce0
06060 0 0 deny ip from 192.0.2.0/24 to any in via bce0
06070 0 0 deny ip from 204.152.64.0/23 to any in via bce0
06080 0 0 deny ip from 224.0.0.0/3 to any in via bce0
06100 0 0 deny ip from table(1) to any
06600 128 15063 deny ip from any to any frag in via bce0
06900 3 188 deny ip from 192.0.172.0/29 to 192.0.2.0/24 via vlan*
06930 0 0 deny ip from 192.0.2.0/24 to 192.0.172.0/29 via vlan*
08000 1248 261020 allow ip from any to any via gif0
08000 54553 19002412 allow esp from any to any
08000 0 0 allow ah from any to any
08000 1247 284460 allow ipencap from any to any
08000 946 212668 allow udp from any to me dst-port 500
08000 6728 501062 allow tcp from table(22) to me dst-port 22 in via bce0
08100 0 0 allow tcp from any to me dst-port 21 in via bce0
08110 1672 283264 allow tcp from any to any dst-port 50000-50100 in via bce0
08200 245 13543 allow tcp from any to me dst-port 80 in via bce0
08210 130 6776 allow tcp from any to me dst-port 443 in via bce0
08300 8 384 allow tcp from any to me dst-port 1723 in via bce0
08500 0 0 allow tcp from any to 192.0.2.110 dst-port 35300 in via bce0
09000 1606 78126 allow ip from 192.0.2.0/24 to me in recv vlan2
09010 442 114981 allow ip from me to 192.0.2.0/24 out xmit vlan2
09040 0 0 allow ip from 192.0.172.0/29 to me in recv vlan272
09050 0 0 allow ip from me to 192.0.172.0/29 out xmit vlan272
09100 1862056 818269566 allow ip from 192.0.2.0/24 to any in recv vlan2
09120 3693987 4561598260 allow ip from any to 192.0.2.0/24 out xmit vlan2
09130 207 51066 deny ip from any to any via vlan2
09170 1094359 169882309 allow ip from 192.0.172.2 to any in recv vlan272
09180 1248375 1170218355 allow ip from any to 192.0.172.2 out xmit vlan272
09190 0 0 deny ip from any to any via vlan272
09200 1094359 169882309 skipto 10300 ip from 192.0.172.2 to any out xmit bce0
09210 1250427 1172758922 skipto 10310 ip from any to 203.0.113.19 in recv bce0
10000 7762734 5763933566 nat 1 ip from any to any via bce0
10100 0 0 allow gre from any to any
10200 7715894 5759321780 allow ip from any to any
10300 1094359 169882309 nat 2 ip from 192.0.172.2 to any out xmit bce0
10310 1250427 1172758922 nat 2 ip from any to 203.0.113.19 in recv bce0
10400 2344782 1342640816 allow ip from any to any
65535 804 124991 deny ip from any to any
Код: Выделить всё
# ipfw nat show config
ipfw nat 2 config log same_ports redirect_addr 192.0.172.2 203.0.113.19
ipfw nat 1 config if bce0 log deny_in same_ports reset \
redirect_port tcp 192.0.2.110:35300 35300
на внутренней машине 192.0.172.2 есть openvpn, также вне нашей сети а именно в DC на сервере тоже настроен openvpn - они связываются по белым ip между собой соотвественно получается,
что сервер из DC видит порт UDP 1194 на ip 203.0.113.19, также из вне ходят и натятся пинги на 203.0.113.19
Код: Выделить всё
$ ping -t4 203.0.113.19
PING 203.0.113.19 (203.0.113.19): 56 data bytes
64 bytes from 203.0.113.19: icmp_seq=0 ttl=249 time=4.836 ms
64 bytes from 203.0.113.19: icmp_seq=1 ttl=249 time=3.762 ms
64 bytes from 203.0.113.19: icmp_seq=2 ttl=249 time=4.532 ms
64 bytes from 203.0.113.19: icmp_seq=3 ttl=249 time=4.977 ms
--- 203.0.113.19 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.762/4.527/4.977/0.470 ms
пробую подключится по ssh на 203.0.113.19:
ssh 203.0.113.19 - глухо
telnet 203.0.113.19 22 - глухо
смотрю на сервере tcpdump'ом на интерфейсе vlan172 по TCP 22 - глухо
Проблема именно на вход на 203.0.113.19 , на выход с 192.0.172.2 все работает отлично - NAT есть - инет работает
такое впечатление, что не редиректятся TCP пакеты на вход.
Подскажите пожалуйста - уже все перепробовал - больше нет идей в чем проблема!

Наперед спасибо.
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
правила с натом 2 надо переместить выше правил с натом 1
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
либо переписать правило второго ната так, чтобы оно не захватывало адреса для второго ната
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- рядовой
- Сообщения: 12
- Зарегистрирован: 2010-07-25 19:12:16
Re: Подробное руководство по ipfw nat
А можно по подробней с примерами ?
Пробовал второй нат ставишь выше первого , сиптомы теже - кроме как теперь когда захожу telnet 203.0.113.19 22, а попадаю не на внутренний сервер, а на шлюз 198.51.100.242
различаю я их по версии openssh, но при этом когда пингую пингуется имено внутренний 192.0.172.0 вижу по ttl на внутреннем он 255, то есть из вне получается ttl 249 при пинге.
Пробовал второй нат ставишь выше первого , сиптомы теже - кроме как теперь когда захожу telnet 203.0.113.19 22, а попадаю не на внутренний сервер, а на шлюз 198.51.100.242
различаю я их по версии openssh, но при этом когда пингую пингуется имено внутренний 192.0.172.0 вижу по ttl на внутреннем он 255, то есть из вне получается ttl 249 при пинге.
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
покажите сам конфиг фаервола, я же не вижу что там у вас за опции ната
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
-
- проходил мимо
Re: Подробное руководство по ipfw nat
Доброго времени суток.
Подскажите как слепить такую схему: Имееться FreeBSD 8.2-RELEASE, имеються итерфейсы
vr0-внешняя ip статический
rl0-внутренняя
и tun0-USB модем 3G настроеный запускаеться, ip динамический.
нужно чтобы при потери инета на vr0 запускался USB модем 3G и при этом инетернет раздавал не всей сети а нескольким компьютерам.
ядро собрано с этими прараметрами
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_NAT
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
Подскажите как слепить такую схему: Имееться FreeBSD 8.2-RELEASE, имеються итерфейсы
vr0-внешняя ip статический
rl0-внутренняя
и tun0-USB модем 3G настроеный запускаеться, ip динамический.
нужно чтобы при потери инета на vr0 запускался USB модем 3G и при этом инетернет раздавал не всей сети а нескольким компьютерам.
ядро собрано с этими прараметрами
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_NAT
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
-
- проходил мимо
- Сообщения: 2
- Зарегистрирован: 2011-11-30 8:51:13
Re: Подробное руководство по ipfw nat
Помогите слепить такую схему как выше описанно
-
- проходил мимо
Re: Подробное руководство по ipfw nat
Написать скрипт, который будет проверять наличие\отсутствие, при отсутствии - дозваниваться и поднимать резрев, рестартовать фаервол с нужными вам правилами.
-
- проходил мимо
- Сообщения: 2
- Зарегистрирован: 2011-11-30 8:51:13
Re: Подробное руководство по ipfw nat
а можно пример скрипта, если не сложно конечно.
-
- проходил мимо
Re: Подробное руководство по ipfw nat
Вот один из нагугленых
Код: Выделить всё
#!/bin/sh
#Загрузим флаг из файла по умолчанию - 0
CUR_CHANNEL=`cat CUR_CHANNEL`
# ping хоста
png=`ping -c 1 -i 1 PING_HOST | grep % | awk '{ print $7 };'`
case $png
in
100%)
if [ "$CUR_CHANNEL" = "0" ] ; then
`echo 1 > FL_CHANNEL`
/usr/local/sbin/mpd4 --kill
/usr/local/sbin/mpd5 --file /etc/mpd4/mpd.reserv --background --pidfile /var/run/mpd.pid
/bin/sh pfctl -ef /etc/pf.isp_reserv
/bin/sh /etc/netstart
fi
break
0%)
if [ "$CUR_CHANNEL" = "1" ]; then
`echo 0 > FL_CHANNEL`
/usr/local/sbin/mpd4 --kill
/usr/local/sbin/mpd5 --file /etc/mpd4/mpd.normal --background --pidfile /var/run/mpd.pid
/bin/sh pfctl -ef /etc/pf.isp_normal
/bin/sh /etc/netstart
fi
break
;;
*)
break
;;
esac[code]
- vadim64
- майор
- Сообщения: 2101
- Зарегистрирован: 2009-09-17 15:15:26
- Откуда: Засратовец
Re: Подробное руководство по ipfw nat
бля...
теги, люди, теги!
теги, люди, теги!
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.