powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / NAT in PF OpenBSD
5 сообщений из 5, страница 1 из 1
NAT in PF OpenBSD
    #36677708
Фотография PaulEr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Возникла проблема с NAT. До этого настраивал на другой машине, перенес оттуда конфиги, все вроде бы делаю также, но что-то пока не взлетит. Что есть: машина( centos), шлюз (openbsd). В шлюзе 2 сетевухи, одна смотрит в локалку, к другой подключена другая сеть(в которую надо попасть с машины centos).
Прописал маршрут с машины centos в другую сеть:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[root@master]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
 192 . 168 . 0 . 0       0 . 0 . 0 . 0           255 . 255 . 255 . 0    U          0   0            0  eth0
 192 . 168 . 111 . 0     0 . 0 . 0 . 0           255 . 255 . 255 . 0    U          0   0            0  eth1
 192 . 168 . 122 . 0     0 . 0 . 0 . 0           255 . 255 . 255 . 0    U          0   0            0  virbr0
 172 . 16 . 0 . 0        192 . 168 . 0 . 155     255 . 255 . 0 . 0      UG         0   0            0  eth0
 169 . 254 . 0 . 0       0 . 0 . 0 . 0           255 . 255 . 0 . 0      U          0   0            0  eth0
 224 . 0 . 0 . 0         0 . 0 . 0 . 0           240 . 0 . 0 . 0        U          0   0            0  eth1
 0 . 0 . 0 . 0           192 . 168 . 0 . 1       0 . 0 . 0 . 0          UG         0   0            0  eth0

Сама машина имеет адрес 192.168.0.200.

На шлюзе:
192.168.0.155 - локальная сетевуха (ste0), 172.16.6.2(xl0) - сетевуха внешняя.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
 127 / 8                127 . 0 . 0 . 1           UGRS        0          0   33200       8  lo0
 127 . 0 . 0 . 1            127 . 0 . 0 . 1           UH          0          0   33200       4  lo0
 172 . 16 / 16            172 . 16 . 6 . 1          UGS         0          3      -      8  xl0
 172 . 16 . 6 . 0 / 28       link# 2              UC          2          0      -      4  xl0
 172 . 16 . 6 . 0 / 28        172 . 16 . 6 . 2          UGS         0          0      -      8  xl0
 172 . 16 . 6 . 1           00 : 19 :2f:a1:d7:1a  UHLc        2        585      -      4  xl0
 172 . 16 . 6 . 2           00 : 04 : 79 : 66 : 41 :d3  UHLc        0          2      -      4  lo0
 172 . 16 . 52 . 2          172 . 16 . 6 . 1          UGHS        0       1012      -      8  xl0
 192 . 168 . 0 / 24        link# 3              UC          3          0      -      4  ste0
 192 . 168 . 0 . 1          00 : 22 : 57 : 61 :b8:d2  UHLc        0          6      -      4  ste0
 192 . 168 . 0 . 200        00 :1f: 29 :c4: 79 :de  UHLc        0          9      -      4  ste0
 192 . 168 . 0 . 212        00 :0c:6e:dd:e6:9f  UHLc        1      80993      -      4  ste0
 224 / 4                127 . 0 . 0 . 1           URS         0          0   33200       8  lo0


Форвардинг включен:
Код: plaintext
1.
2.
# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding= 1 
#

PF:
# cat /etc/pf.conf
# $OpenBSD: pf.conf,v 1.44 2009/06/10 15:29:34 sobrado Exp $
#
# See pf.conf(5) for syntax and examples; this sample ruleset uses
# require-order to permit mixing of NAT/RDR and filter rules.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.

ext_if="xl0"
int_if="ste0"

set skip on lo
nat pass on $ext_if inet proto {tcp,udp} from ($int_if:network) port > 1024 to any ->($ext_if:0)

pass out on $ext_if inet proto tcp from any to any keep state

pass quick inet proto icmp
block log all
block log quick on $int_if inet proto tcp from ($int_if:network) to any port 25

pass out quick on $ext_if inet proto {tcp,udp,icmp} from ($ext_if:0) to any flags S/SAFR
pass in on $int_if inet proto {tcp,udp} from ($int_if:network) port > 1024 to any flags S/SAFR
#

tcpdump-ом вижу, что не натится локальный адрес 192.168.0.200 на 172.16.6.2.

17:48:56.593546 802.1d STP config root=0.0:15:c7:9b:e8:a rootcost=8 bridge=800a.0:d:65:da:5b:0 port=6 ifcost=128 age=2/0 max=20/0 hello=2/0 fwdelay=15/0
17:48:57.527308 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:3) (DF) (ttl 63, id 0, len 84)
17:48:58.527317 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:4) (DF) (ttl 63, id 0, len 84)
17:48:58.597908 802.1d STP config root=0.0:15:c7:9b:e8:a rootcost=8 bridge=800a.0:d:65:da:5b:0 port=6 ifcost=128 age=2/0 max=20/0 hello=2/0 fwdelay=15/0
17:48:59.527322 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:5) (DF) (ttl 63, id 0, len 84)
17:49:00.527329 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:6) (DF) (ttl 63, id 0, len 84)
17:49:01.527329 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:7) (DF) (ttl 63, id 0, len 84)


Sincerely,
PaulEr
...
Рейтинг: 0 / 0
NAT in PF OpenBSD
    #36679489
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень силен в PF, хотя сам его использую, но поделюсь некоторыми соображениями.
Я так понимаю это правило NAT:
Код: plaintext
nat pass on $ext_if inet proto {tcp,udp} from ($int_if:network) port >  1024  to any ->($ext_if: 0 )

Допустим оно правильное, тогда выходит, что натится только tcp и udp трафик. ICMP (пинг) под это правило не попадает.
У меня в простом случае NAT был бы прописан так:
Код: plaintext
nat on $ext_if from $int_if to any -> ($ext_if)
...
Рейтинг: 0 / 0
NAT in PF OpenBSD
    #36680229
Фотография PaulEr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k-nikeНе очень силен в PF, хотя сам его использую, но поделюсь некоторыми соображениями.
Я так понимаю это правило NAT:
Код: plaintext
nat pass on $ext_if inet proto {tcp,udp} from ($int_if:network) port >  1024  to any ->($ext_if: 0 )

Допустим оно правильное, тогда выходит, что натится только tcp и udp трафик. ICMP (пинг) под это правило не попадает.
У меня в простом случае NAT был бы прописан так:
Код: plaintext
nat on $ext_if from $int_if to any -> ($ext_if)


Да, вы правы. Сегодня попробую пропустить icmp.
...
Рейтинг: 0 / 0
NAT in PF OpenBSD
    #36683044
spudei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, правило
Код: plaintext
pass out on $ext_if inet proto tcp from any to any keep state
никогда не сработает, потому как побеждает последнее подходящее,
если сработало правило quick - поиск прекращается немедленно.
А за ним стоит правило блокировки.
...
Рейтинг: 0 / 0
NAT in PF OpenBSD
    #36687922
Фотография PaulEr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, не снатил icmp трафик, пинги идут. Всем спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / NAT in PF OpenBSD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]