用Packet Filter(PF) 做 IP mapping 遇 … - BBS

Edith avatar
By Edith
at 2010-05-01T05:38

Table of Contents

※ 引述《yzupcbug (請加入HOT_Game板)》之銘言:
: 架構大致如下:
: PC1(server)--| pppoe1 | | |
: PC2----------|em1 FreeBSD pppoe2 em0|----|FTTB VDSL|
: PC3----------| | | |
: IP如下:
: PC1: 192.168.198.3/24
: PC2: 192.168.198.4/24
: PC3: 192.168.198.5/24
: FreeBSD
: em1: 192.168.198.254/24
: em0不帶IP
: pppoe1: 固IP, next-hop 1.1.1.1, 介面為tun0
: pppoe2: 動IP, next-hop 1.1.1.2, 介面為tun1
: 想要達到的目的:
: 由 FreeBSD 撥接 PPPoE 出去取得 public IP, 然後 固IP mapping 到 PC1,
: 使得外面連線到 固IP 時, 就等同於連線到 PC1;
: 而 動IP 則作為其它 PC 連外的 NAT(更正確應該說是 PAT) 使用
: 做法:
: 使用PF, 設定檔pf.conf如下:
: int_if="em1"
: int_ip="192.168.198.254"
: int_lan="192.168.198.0/24"
: dyn1_if="tun1"
: dyn1_gw="1.1.1.2"
: static_if="tun0"
: static_gw="1.1.1.1"
: set block-policy return
: scrub in all
: #將固IP介面上, src為內網的封包做NAT轉換為固IP
: nat on $static_if from $int_lan to any -> $static_if
: #將動IP介面上, src為內網的封包做NAT轉換為動IP

加一行 nat on $int_if from 192.168.198.3 port 220 to any -> $static_if

: nat on $dyn1_if from $int_lan to any -> $dyn1_if
: #將連線到固IP的port 220 轉到192.168.198.3, 測試看看.
: rdr on $static_if from any to $static_if port 220 -> 192.168.198.3
: pass all
: #抓取預設出口端的封包, 若src為固IP的就將下一站設為固IP的下一站
: pass out on $dyn1_if route-to ($static_if $static_gw) proto tcp from $static_if to any flags any
: pass out on $dyn1_if route-to ($static_if $static_gw) proto {udp,icmp} from $static_if to any
: #因僅指定的來源轉去固IP, 不會有其他封包走錯路到static_if
: #pass out on $static_if route-to ($dyn1_if $dyn1_gw) proto tcp from $dyn1_if to any flags any
: #pass out on $static_if route-to ($dyn1_if $dyn1_gw) proto {udp,icmp} from $dyn1_if to any
: #設定PUM server的封包改走static if出去
: pass in on $int_if route-to ($static_if $static_gw) proto tcp from 192.168.198.3 to any flags any
: pass in on $int_if route-to ($static_if $static_gw) proto {udp,icmp} from 192.168.198.3 to any
: 結果:
: PC1 連線去外面的話, 如預期地走 固IP 出去;
: 但若是外面連到 固IP port 220,則會有問題, 出現的狀況如下:
: 1.FreeBSD 轉送了該 SYN 封包給 PC1
: 2.PC1 回送 SYN/ACK 封包 給外面來源
: 3.FreeBSD 從em1收到該封包, 經過轉換後, src 換成 固IP
: 4.該封包就這樣依照 default gateway 是走 動IP 的介面而送出去了,
: 沒有再被抓回來轉送到 固IP 介面送出.
: 想請教不知道有沒有人有這方面的經驗可以指點問題在哪?

我印象中

NAT的封包不需另外pass就會通過

(也就是說pass對nat無意義? <- 不大確定)

--

◢█◤◢╱╱ ◢◤◤◢╱╱
╱╱███◤ ◢◤ ██◢███◤◢︿
◥█ ◢█ ψ
◢█╱╱╱╱
◥█◤ ◥█◥██◥████

--
Tags: BBS

All Comments

[MRTG] Unknown SNMP var hrStorageUsed

Candice avatar
By Candice
at 2010-04-30T17:26
自問自答 cfg檔要載入HOST-RESOURCES-MIB.txt ex: #vi ooxx.cfg LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt LoadMIBs: /usr/local/share/snmp/mibs/HOST-RESOUR ...

用Packet Filter(PF) 做 IP mapping 遇到問題

Rebecca avatar
By Rebecca
at 2010-04-30T16:21
架構大致如下: PC1(server)--| pppoe1 | | | PC2----------|em1 FreeBSD pppoe2 em0|----|FTTB VDSL| PC3----------| | ...

關於Sendmail AUTH Login 的問題

Iris avatar
By Iris
at 2010-04-28T21:21
小弟的FreeBSD 是7.2 sendmail是 8.14.3 Cyrus SASL 2.1.23 下了sendmail -d0.1 -bv root | grep SASL指令 出現NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASL ...

sshit

Caroline avatar
By Caroline
at 2010-04-28T17:04
/usr/ports/security/sshit 這個可以拿來擋惡意try ftp or ssh的IP 可以搭配pf ipfw等等 看板上沒有分享,自己用的時候有些問題 所以分享一下我的設定 ===============安裝============= #cd /usr/ports/security/ss ...

cp或mv時 顯示狀態

Mary avatar
By Mary
at 2010-04-27T16:02
※ 引述《slinbody (不敗地球人)》之銘言: : 我想問bsd下 : 有沒有可以取代cp或mv而且可以顯示工作進度的軟體 : 常常再搬移大檔案時 一按enter就要等很久 : 像window貼上時 都會有個目前進度(雖然剩餘時間不太準) : 唯一想到的 就是用ftp在local上般 : 不知道有 ...