我有一个带有 1 个网络接口(eth0,公共 IP)的路由器,别名为 eth0:0,本地 IP 192.168.1.1。
我想将所有传入的 https (443) 流量重定向到另一台服务器。我尝试过
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 192.168.1.2:443它有效。所有到达我的公共 IP 的 ssl 端口的流量都被重定向到 192.168.1.2。
但主要问题是这样的;现在从我的本地局域网到互联网的所有 https 流量也被重定向到该本地 IP,例如。https://facebook.com和 192.168.1.2 答案。我应该如何修复我的配置才能使其正常工作?
我设置了从家庭计算机到工作服务器的反向 SSH 隧道:
ssh -f -N -R 19999:localhost:22 remoteuser@server
Run Code Online (Sandbox Code Playgroud)
要连接到我的家庭计算机,我必须首先登录到服务器,然后从那里登录到我的家庭计算机:
otheruser@othermachine$ ssh remoteuser@server
remoteuser@server$ ssh -p 19999 homeuser@localhost
Run Code Online (Sandbox Code Playgroud)
但我希望能够跳过一步并直接通过端口 19999 连接,例如:
otheruser@othermachine$ ssh -p 19999 homeuser@server
Run Code Online (Sandbox Code Playgroud)
我不太熟悉iptables,而且我一直在阅读,但打开一个端口似乎很令人困惑。我很确定我需要添加一条规则iptables,但是我还需要做什么吗?
服务器是RHEL 6,我的家用计算机是Ubuntu 14.04
我需要在 docker 容器中对服务器上失败的内容进行 xdebug,并且从我的笔记本电脑上运行ssh -R 9000:localhost:9000 server并验证了隧道telnet localhost 9000。到目前为止一切顺利,我建立了联系。
现在,在服务器上我做了
iptables -t nat -I PREROUTING -p tcp -d 172.17.42.1 --dport 9000 -j DNAT --to 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
最后我提交了有问题的 docker 实例并运行
docker run --net=host -t -i snapshot /bin/bash
Run Code Online (Sandbox Code Playgroud)
容器内部telnet 172.17.42.1 9000拒绝连接。
我正在使用 centos 7 和 dhclient 4.2.5:
\n\n$ uname -a\nLinux hostname 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\n\n$ dhclient -V\nInternet Systems Consortium DHCP Client 4.2.5\nCopyright 2004-2013 Internet Systems Consortium.\nAll rights reserved.\nRun Code Online (Sandbox Code Playgroud)\n\n最近我注意到日志包含很多以下记录:
\n\nDec 14 10:12:32 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)\nDec 14 10:12:49 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)\nDec 14 10:13:09 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)\nDec 14 10:13:23 hostname …Run Code Online (Sandbox Code Playgroud) 我一直在致力于一个接近完成的项目:只需按一下按钮就能终止我孩子的互联网连接。我基本上通过调用实现了部分解决方案:
ufw 拒绝 IP
杀死他们的互联网的威胁在一半的情况下有效,而上述的方法在剩下的一半中有效。我遇到问题的地方是 YouTube 长视频。有时继续现有连接很方便,但我还希望有一个按钮可以终止所有进出该 IP 的现有流量。事实证明,这比预期要困难得多。
我尝试过 cutt,它似乎甚至无法在 Ubuntu 14.04 上运行。我试过tcpkill。它似乎在运行,但似乎没有做任何事情(我提供了两个以太网接口)并且似乎想要继续运行。虽然我的 ufw 是持久的,但我宁愿立即无状态地终止并删除所有现有连接。
Conntrack 听起来很有希望(http://conntrack-tools.netfilter.org/manual.html),并且有以下内容:
删除一个条目,如果出现以下情况,这可用于阻止流量:
您有一个有状态的规则集,可以阻止处于无效状态的流量。
您已将 /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_loose 或 /proc/sys/net/netfilter/nf_conntrack_tcp_loose(具体取决于您的内核版本)设置为零。
命令
conntrack -D -s <IP>
Run Code Online (Sandbox Code Playgroud)
似乎删除并显示了某些内容,但 YouTube 视频一直在嗡嗡作响,当我这样做时,我看到连接正在重组
conntrack -L
Run Code Online (Sandbox Code Playgroud)
我已经搞定了
echo 0 > nf_conntrack_tcp_loose
Run Code Online (Sandbox Code Playgroud)
并对其进行cat'ed以确保它卡住,但它似乎并没有删除连接。
我不是 100% 确定“阻止无效状态流量的有状态规则集”是什么意思,但我确实看到了以下规则
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
Run Code Online (Sandbox Code Playgroud)
当执行“iptables -L -n”时,如果这就是它引用的内容。
我发现了以下内容:
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP
Run Code Online (Sandbox Code Playgroud)
它对我不起作用,但这可能是因为它按照允许内部网络上的所有流量的一般规则进行,并且通过重新排序它可能会起作用。我不想将 iptables 命令与 ufw 命令混合使用。鉴于 UFW 已经设置了 iptables 来拒绝任何新连接,在 iptables 中设置一个 drop 似乎是多余的,如果可以的话,我真的不想将 UFW 与 iptable 命令混合在一起。 …
我有一台安装了 Ubuntu Server 的计算机,上面运行着一些东西,比如 Plex 服务器、radar 和 deluged。我有一个付费的 OpenVPN,并且我只想通过 VPN 路由洪流流量,而不通过 VPN 将外部计算机的连接路由到 deluged。我看过有关如何在另一个帐户上设置 Deluge 并仅在该帐户上使用 VPN 的教程,但这对我来说不起作用。我发现我需要弄清楚如何将 torrent 流量设置为仅在特定端口或端口范围上运行,并且我需要使用 IPtables 配置这些端口才能通过 VPN 接口,但我无法弄清楚如何做到这些。任何帮助将非常感激。
我想知道是否有一个命令可以列出/查找端口 80(或任何其他端口)上的所有 iptables 规则?例如这样的事情:
iptables --list | grep port 80
Run Code Online (Sandbox Code Playgroud) 我正在设置一个新的家庭服务器,以边缘偏执的安全为目标。
因此,所有可以进入虚拟机的开放端口都拥有自己的虚拟机。我使用 Ubuntu Server 作为主机,因为我喜欢免费的无需重新启动的内核修补。
我已经设置了四个 Debian VM,连接到默认的虚拟桥接口。我现在可以看到并访问应该从主机打开的端口,但是当我尝试从网络访问它们时,我失败了。当使用 nmap 查看它们时,它们显示为“已过滤”。
如何使这些端口可以从更广泛的网络访问?我可以将端口从物理接口转发到网桥上的子网吗?还是让访客使用我的实际路由器(而不是 KVM 内置的路由器)作为网关会更好?
我需要为以下场景创建 iptables 规则:
A。目标端口是1234.A(8.2.3.4)将收到的UDP数据重定向到主机B1(7.2.3.1)、B2(22.93.12.3)、... Bn(12.42.1.3);IP 地址仅供参考。B1, B2, ...Bn必须接收所有包。因此,主机A必须复制包。B1, B2, ... Bn)和源IP(主机A)AB1,B2...BnB1, B2, ...Bn不必能够回复我尝试用PREROUTING/解决这个问题mangle:
HOST_A=8.2.3.4
HOST_B1=7.2.3.1
HOST_B2=22.93.12.3
...
HOST_BN=12.42.1.3
iptables -F -t mangle
iptables -t mangle -A PREROUTING -d $HOST_A …Run Code Online (Sandbox Code Playgroud) 我对 iptables 非常熟悉,而且我觉得iptables -L -v很容易阅读。备份很容易,我对此很满意。
然而,在最近版本的 Ubuntu 中有 ufw 会严重污染 iptables。除了干净的规则列表之外,我还有很多不易阅读的规则:
$ iptables -L -v
Chain INPUT (policy DROP 6114 packets, 331K bytes)
pkts bytes target prot opt in out source destination
131K 76M ufw-before-logging-input all -- any any anywhere anywhere
131K 76M ufw-before-input all -- any any anywhere anywhere
6618 368K ufw-after-input all -- any any anywhere anywhere
6191 346K ufw-after-logging-input all -- any any anywhere anywhere
6191 346K ufw-reject-input all -- any any anywhere anywhere
6191 …Run Code Online (Sandbox Code Playgroud)