LINUX.ORG.RU
ФорумAdmin

OpenBSD 4.7, pf, 2 wan, reply-to


0

0

Имеется сервер с OpenBSD4.7-stable с тремя интерфейсами:

  • bge0 - смотрит в инет с белым адресом, прописан default gateway
  • gem0 - смотрит во внутреннюю сеть 10.x.x.x/8
  • vr0 - имеет серый адрес 192.168.1.50, подключен к LAN порту soho роутера (192.168.1.1), который через свой WAN-порт подключен к другому провайдеру по pppoe.

Через первого провайдера все замечательно работает, можно ходить в инет через NAT, мапить порты внутрь.

Через второго можно пускать некоторых клиентов из внутренней сети при помощи route-to (vr0 192.168.1.1) и тоже NAT работает.

Вопрос: как мапить порты со второго провайдера хотя бы на эту машину?

Я делаю так:

  1. На SOHO-роутере я настраиваю forwarding нужного порта на 192.168.1.50
  2. «tcpdump -i vr0» показывает приходящие на 192.168.1.50 пакеты с реального адреса в интернете, с которого я их отправляю.
  3. Ответы сервак посылает на этот же реальный адрес в интернете, но через bge0 (так показывает «tcpdump -i bge0»), то есть через тот интерфейс, на котором прописан default gateway, несмотря на reply-to в конфиге.

Вот pf.conf

##### Macros #####
ext="bge0"
int="gem0"

# Trusted ports (TCP)
so="{ 21, 22, 25, 80, 110, 119, 143, 443, 465, 587, 993, 2083, 3389, 5000, 5190, 5222, 8080, 8443 }"

##### Tables #####
table <Network>         const counters { 10.0.0.0/8 }

##### Options #####
set skip on lo
set state-policy if-bound
set block-policy return

##### Traffic Normalization #####
match all scrub (random-id reassemble tcp)

##### Translation #####
match out on  vr0 from <Network> to any nat-to (vr0)
match out on bge0 from <Network> to any nat-to (bge0)

##### Packet Filtering #####
block in

pass out quick on bge0 from 192.168.1.50 route-to (vr0 192.168.1.1)
pass out quick on  vr0 from bge0 route-to (bge0 12.34.56.78)

pass out quick

# block some shit
block in quick on $ext from any to 255.255.255.255
block in quick on $ext from <Private> to any
antispoof quick for { lo $int }
pass proto icmp all

# Pass inter-networks
pass quick on $int from <Network> to <Network>

# Pass to neighbourhood
pass in quick on $int from <Network> to 192.168.1.0/24

# Pass trusted TCP
pass in on $int proto tcp from any to any port $so

# Pass DNS & NTP
pass in on $int proto udp from any to any port { 53, 123 }

# GW
pass in on $ext proto tcp from any to ($ext) port 22 synproxy state
pass in on vr0 proto tcp from any to (vr0) port 5001 reply-to (vr0 192.168.1.1)

Что я делаю не так?


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.