TL;DR:我正在寻找一个脚本或一个 cron 作业,它会定期在 linux 主机(树莓派上的 fedora)上运行,它将检查路由器中是否仍然存在端口转发规则,如果不存在则添加它. 目的是始终可以通过 SSH、VNC 和传输 Web 界面从家庭网络之外的互联网上的任何机器访问 raspberry pi linux 主机。设置如下:
路由器:
Beetel 440Tx1 ADSL2 路由器+调制解调器+wifi。
设置:
路由器连接到互联网(ISP 宽带)并具有动态外部 IP。它为我的计算机提供了一个私人家庭网络,内部 IP 192.168.xy 也充当 DHCP。
主持人:
带有 Fedora Linux 的 raspberry pi ARM 主机,始终运行 ssh、vnc、传输守护程序服务器在启动时启动。它还具有 no-ip.com dyndns 免费 DUC(动态更新客户端),它会定期检查外部 IP 并将其绑定到主机字符串。所以我总是可以通过解析像 myrouter.no-ip.org 这样的 dyndns 字符串来找到我的路由器的外部 IP。pi 有一个静态内部 IP,如 192.168.1.z。
端口转发:
仅当通过以太网电缆或密码保护的 Wi-Fi 连接到该网络时,才必须使用带有工厂凭据的 GUI/浏览器登录路由器
http://192.168.1.1/html/index1.html
Run Code Online (Sandbox Code Playgroud)
我通过登录将外部 IP 上端口 22、5900、9091 上的任何流量转发到 pi 上 192.168.1.z 上的相应侦听程序(sshd、vncserver、传输守护程序)来设置规则。
问题:
当路由器(路由器)重新启动时,或者即使出现电力峰值并且 UPS 必须暂时介入,该路由器也会失去上述端口转发规则,并且通常会从我的 ISP …
-A PREROUTING -s 10.0.10.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-A PREROUTING -s 10.0.10.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
-A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
COMMIT
Run Code Online (Sandbox Code Playgroud)
上面的代码是我用来在linux中转发流量的代码。
现在我需要在 Mac OSX 中做同样的事情。10.8 如果重要。
所以这里是交易。
之前,我使用代理连接到 linux 机器并使用该代理我能够使用 mitmproxy 监控流量
现在,在 mac 上,我使用内置的互联网共享,并想使用 mitmproxy,它只侦听端口 8080 的内容。
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether ac:de:48:81:1d:4a
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
Configuration:
priority 0 hellotime 0 fwddelay 0 maxage 0
ipfilter disabled flags 0x2 …Run Code Online (Sandbox Code Playgroud) 虚拟服务器和端口转发是一回事吗?
我一直这么认为,但我的 Dlink DIR-655 两者都有。
我在端口转发中唯一能看到的是能够进行范围,而虚拟服务器允许您将单个外部端口转发到内部机器上的不同编号端口。
它们是唯一的区别吗?
我正在寻找一种在 Windows 10 中获得 iptables 功能的方法。我启用了 IP 路由,我需要将 tcp 数据转发到另一台主机(端口 8080),然后在伪装 IP 的同时转发他的响应。在 linux 中,我可以使用以下方法执行此操作(其中 $1 = <内部 IP >,$2 = 80,$3 = 8080,$4 = tcp)
iptables -t nat -A PREROUTING -p $4 --match multiport --dports $2 -j DNAT --to-destination $1:$3
iptables -A FORWARD -p $4 --match multiport --dports $2 -d $1 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Windows 10 中实现类似的功能?
我已经建立了一个 Minecraft 服务器并构建了很多东西,现在我想让我的朋友也玩它。
我将它托管在我的家用电脑上,不想在其他地方设置新服务器,所以我需要允许我的服务器可以通过互联网访问。
我怎样才能让我的朋友可以通过互联网连接到这个服务器?
我有一个 linux 服务器,我想把它放在路由器后面的家庭网络中。我有时需要从外部 ssh 到此服务器,但我不想设置端口转发,因为我无权访问路由器,也不知道路由器的 IP。
我能做的就是把一些程序放在linux服务器上,这样当它连接到Internet时,它就会不断地向我的另一台在线服务器发送数据,所以我知道它的IP地址。但是有没有办法从外部通过 ssh 连接到路由器后面的服务器?诸如 NAT 或保持网络连接的套接字之类的东西?
非常感谢
我正在尝试将我的端口 8085 转发到远程服务器,该端口是用于小型 http 服务器的实时摄像机流端口。
我正在使用的命令是这样的:
ssh -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20
Run Code Online (Sandbox Code Playgroud)
由于此命令现在是正确的,它确实转发了端口,我可以通过转到 localhost:8085 来查看远程服务器上的实时流,但问题是在客户端上打开了一个 TTY 会话,它阻止了所有进一步的脚本从运行。
所以我尝试在后台使用 ssh:
ssh -Nf -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为似乎连接已关闭。端口转发在脚本中使用,脚本评估 if/then/else 条件,然后执行转发。转发此端口不会停止所有其他脚本。它应该简单地转发端口,然后继续前进,同时保持它打开。
我做错了什么或者还有其他可以使用的标志吗?
我需要设置一个 DNS 服务器来管理我的域名的 DNS。
根据我遵循的指南,我需要同时拥有主 DNS 服务器和辅助 DNS 服务器。我轻松地在我的计算机上创建了两个虚拟机来完成此任务。当我脑子里有了一个认识时,一切都很顺利。
如果我运行两台服务器,每台服务器在端口 53 上提供 DNS 服务,那么如何将这两台服务器转发到我的单个公共 IP 地址,同时将所有内容保留在端口 53 上?
据我了解,我必须为两台服务器使用端口 53,而且您不能“重叠”端口,或将两个端口的流量合并为一个。
我不会在市场上从 ISP 购买另一个 IP,因此,如果在不获得另一个 IP 的情况下无法做到这一点,我就会处理它。
关于我的网络+情况的重要信息:
我在我的家庭网络上执行此操作,并且无法访问 ipv6。我有一台物理服务器,但可以根据需要创建任意数量的虚拟机。高可用性对我来说不是一个问题,因为我基本上有零客户端(除了我自己)并且可以轻松地从中断中恢复。
我有一个奇怪的端口转发问题。我试图向外部网络打开端口 22。只要我不在局域网内,我就可以访问它。例如,我可以从我的办公室访问它。但是在局域网内,我可以使用本地IP访问端口,但无法使用外部IP访问端口。就好像路由器正在阻止环回。我检查了我所有的路由器设置,关闭了任何与防火墙/过滤相关的东西。有任何想法吗?
假设我为游戏开放了几个端口。
我的问题是
如果攻击者知道我的特定外部 IP,我会被黑客入侵吗?
黑客可以通过这些端口访问我的路由器和设置吗?如果是这样,这样做的可能性有多大?这有多容易?
使用路由器的安全设置,即使端口转发打开,它是否也能阻止攻击者?
port-forwarding ×10
networking ×4
router ×3
iptables ×2
linux ×2
nat ×2
ssh ×2
command-line ×1
dns ×1
ip ×1
mac ×1
script ×1
security ×1
windows ×1
windows-10 ×1