我正在尝试设置简单奈德我的 FreeBSD 路由器上的端口转发,以便我可以通过 RDP 从外部网络访问本地 Win 计算机 (192.168.20.10)。
配置如下: FreeBSD 12.0 机器,带 2 个网卡伊格布0和免疫球蛋白1。 PPPoE 互联网连接已开启伊格布0。 ISP 通过 DHCP 为我提供固定的公共 IP,从而启动屯0界面,看起来像这样:
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地址在哪里)
局域网开启免疫球蛋白1,互联网访问可以在本地计算机上进行。
使用以下选项重建内核:
#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 配置为 时,是什么阻止了 natd 规则allow ip from any to any
。
请帮我指出我的配置中的错误。
请不要建议端口转发配置的不同方式(pf等),我是专门询问的nad/ipfw。
答案1
我终于弄清楚了这个问题。
我试图杀死奈德只是用一些测试选项重新启动它,我对 LAN 计算机在此之后没有失去互联网连接这一事实感到非常震惊。我开始调查并发现我有另一个单独的 NAT 正在工作!那是ppp nat
在/etc/ppp/ppp.conf
.所以,这就是根本原因。然而我不得不改变我的一些nad/ipfw设置以使一切按预期工作。
首先,我更改natd_interface="igb0"
为natd_interface="tun0"
(从外部网卡更改为连接时启动的 pppoe 接口)。我添加了 ipfwdivert
规则,如下所示:
ipfw add divert natd from any to any via tun0
之后一切工作正常,我现在正在继续调整防火墙。