FreeBSD natd 埠轉發
我正在嘗試在我的 FreeBSD 路由器上設置簡單的natd埠轉發,以便我可以通過 RDP 從外部網路訪問本地 Win 機器(192.168.20.10)。
配置如下:帶有 2 個網卡igb0和igb1的 FreeBSD 12.0 機器。igb0上的 PPPoE 網際網路連接。ISP 通過 DHCP 給我固定的公共 IP,調出tun0介面,如下所示:
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492 options=80000<LINKSTATE> inet 91.122.x.x --> 91.122.y.y netmask 0xffffffff groups: tun nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> Opened by PID 1149
(
91.122.x.x
我的固定公共 IP 地址在哪裡)igb1上的 LAN ,網際網路訪問在本地機器上工作。
使用以下選項重建核心:
#IPFW options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=30 options LIBALIAS options IPFIREWALL_DEFAULT_TO_ACCEPT # optional, won't let you lock out options IPDIVERT #PPPoE options NETGRAPH option NETGRAPH_PPPOE options NETGRAPH_SOCKET
配置如下:
root@beastiebox:/etc # cat rc.conf hostname="beastiebox" gateway_enable="YES" ifconfig_igb0="DHCP" ifconfig_igb1="inet 192.168.20.1 netmask 255.255.255.0" mpd_flags="-b" mpd_enable="YES" sshd_enable="YES" #NAT natd_enable="YES" natd_interface="igb0" natd_flags="-f /etc/natd.conf" #DHCP dhcpd_enable="YES" dhcpd_flag="-q" dhcpd_conf="/usr/local/etc/dhcpd.conf" dhcpd_ifaces="igb1" dhcpd_withumask="022" dhcpd_chuser_enable="YES" dhcpd_withuser="dhcpd" dhcpd_withgroup="dhcpd" dhcpd_chroot_enable="YES" dhcpd_devfs_enable="YES" dhcpd_rootdir="/var/db/dhcpd" #Firewall firewall_enable="YES" firewall_type="simple" firewall_script="/etc/ipfw.rules" firewall_logging="YES" firewall_script="YES"
root@beastiebox:/etc # cat natd.conf same_ports yes use_sockets yes #unregistered_only yes redirect_port tcp 192.168.20.10:3389 3389 redirect_port udp 192.168.20.10:3389 3389
到目前為止,防火牆是透明的:
root@beastiebox:/etc # ipfw list 65535 allow ip from any to any root@beastiebox:/etc #
我已經嘗試了很多選項,但仍然無法從外部 RDP 到本地 Win 機器。(如果我將我的 FreeBSD 路由器換成我以前用過的另一個路由器,它就可以工作)。我只是不明白
redirect_port
當 ipfw 配置為allow ip from any to any
.請幫我指出我的配置中的錯誤。
請不要建議埠轉發配置的不同方式(pf 等),我特意詢問natd/ipfw。
我終於弄清楚了這個問題。
我試圖殺死natd只是為了用一些測試選項重新啟動它,我完全被 LAN 機器在那之後並沒有失去他們的網際網路連接的事實驚呆了。我開始調查並發現我有另一個單獨的 NAT 工作!那是
ppp nat
在/etc/ppp/ppp.conf
. 所以,這是根本原因。但是,我不得不更改我的一些natd/ipfw設置,以使一切按預期工作。首先,我改為
natd_interface="igb0"
(natd_interface="tun0"
從我的外部 NIC 到介面 pppoe 在連接時啟動)。我添加了 ipfwdivert
規則,如下所示:
ipfw add divert natd from any to any via tun0
之後一切正常,我現在正在繼續我的防火牆調整。