背景:我正在尝试设置一个 rasberry pi 服务器。一切都很顺利,我的 pi 可以 apt-get update 等,直到我让端口转发工作并且 ssh 在 LAN 之外工作。我也一直在尝试启动网页,因此我为 80 以外的端口创建了一个端口转发,因为我的 ISP 阻止了它。
问题:通过局域网外的 ssh 访问 pi 后,我无法使用 apt-get 或通过我的 pi 连接到网站。尽管如此,ping 仍然运行良好。
我尝试过的:我尝试了许多不同的 iptables 配置,以及完全刷新它并使用人们建议的配置重新开始几次。它似乎都不起作用。目前,iptables 已完全刷新。
这是 pings 和 wget/curls 的示例输出:
pi@raspberrypi:~$ sudo apt-get update
0% [Connecting to mirrordirector.raspbian.org (5.153.225.207)] [Connecting to w^Cpi@raspberrypi:~$ wget -q -O- google.com
^C
pi@raspberrypi:~$ ping google.com
PING google.com (74.125.224.98) 56(84) bytes of data.
64 bytes from lax02s19-in-f2.1e100.net (74.125.224.98): icmp_req=1 ttl=52 time=58.8 ms
64 bytes from lax02s19-in-f2.1e100.net (74.125.224.98): icmp_req=2 ttl=52 time=53.8 …Run Code Online (Sandbox Code Playgroud) 我使用 ipset 和 iptables 创建了一个名为“黑名单”的黑名单,现在我想知道如何编辑“黑名单”来删除或添加 IP。
有谁知道?
我希望每个数据包(匹配 iptables 规则)延迟某个固定时间间隔。这怎么办?
前置码: iptables -A INPUT -p udp <more conditions> -j DELAY --delay 50000 # delay UDP packets for 50 milliseconds
更新: @related在 Linux 上模拟低带宽、高延迟的网络连接
这是我的情况。我的网络上有一个 iPad、一个 TiVo 和一个 dd-wrt 路由器,还有一台我想用来嗅探/解密 iPad 和 TiVo 之间的数据的机器。
iPad 有一个应用程序,A) 自动发现 TiVo 的 IP,B) 通过 SSL 与 TiVo 通话。iPad 在我的 wifi 网络上,而 TiVo 是有线的,保证数据包通过我的 dd-wrt 路由器;我可以用 tcpdump 嗅探它们,但它们是加密的。
我想尝试使用 tcpcatcher 来尝试使用 ssl 解密和重新加密的中间人。我假设我可以在 dd-wrt 路由器上使用一些简单的 iptable 规则来转发/重定向/nat 将在 ipad 和 tivo 之间传输的数据包,就像透明 http 代理一样。但是,我还没有找到正确的规则来执行此操作,因此需要一些帮助。
我想在 PS3 上玩日本卡拉 OK 游戏,但延迟太可怕了,下载歌曲需要永远。我得到的一个建议是通过 OpenSSH 登录我朋友在日本的服务器,将我的笔记本电脑变成 SOCKS 代理。
[服务器]----(ssh 隧道)---[wlan0 <laptop> eth0]---[PS3]
所以这就是我所做的:
ssh -ND 4711 login@friend.server
Run Code Online (Sandbox Code Playgroud)
在那一刻,我尝试使用 Firefox(使用 SOCKS 代理设置)从我的笔记本电脑访问 google.com,然后我被重定向到 google.co.jp。伟大的。
然后我想通过以太网将我的 PS3 连接到我的笔记本电脑。
我首先为 eth0 分配了一个静态 IP:
ip link set dev eth0 up
ip addr add 139.96.30.100/24 dev eth0
Run Code Online (Sandbox Code Playgroud)
然后我在我的笔记本电脑上启动了一个 DHCP 服务器,为 PS3 提供一个 IP:
systemctl start dhcp4.service
Run Code Online (Sandbox Code Playgroud)
最后我用一些 iptables 魔法启用了 NAT:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
我转到“网络设置”并测试了我的 PS3 的连接,很好,它似乎工作正常。我启动了网络浏览器,google.com 被重定向到 google.fr。多么愚蠢,我忘了将连接转发到正确的端口。
在通过 iptables 进行大量连接转发后,我决定尝试使用透明代理:redsocks。http://darkk.net.ru/redsocks/
安装后我修改了 /etc/redsocks.conf 以满足我的需要:
redsocks {
local_ip=0.0.0.0; …Run Code Online (Sandbox Code Playgroud) 总之,我想让 Tun 设备流量通过另一个具有 Internet 连接的网络接口来回转发。虽然我可以看到流量传到互联网并返回,但它没有路由回我的 Tun 设备。
这是我的设置:
我在 VirtualBox 下使用 Mint Linux 15 VM 进行了非常简单的设置,Win7 作为主机。
在 VM 中,有两个网络接口 - eth0 和 tun0。
tun0 接口被分配为10.0.5.1/24。
ip tuntap add dev tun0 mode tun user askldjd
ip link set tun0 up
ip addr add 10.0.5.1/24 dev tun0
Run Code Online (Sandbox Code Playgroud)我设置了我的 iptables 规则来伪装所有通过 eth0 流出的流量。
iptables -I FORWARD -i tun0 -o eth0 -s 10.0.5.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j …Run Code Online (Sandbox Code Playgroud) 我有一个在主机上运行的 docker 容器,其中一些端口映射到主机上的端口。
docker run -d -p 9009:9009 someserver
除了 80、443 和 22,我希望这台机器与 Internet 防火墙隔离。
但我仍然希望主机内的进程能够连接到 9009。
我有点震惊地发现 docker 似乎完全绕过了丢弃数据包的任何防火墙规则。
我尝试在 centos 7 上使用firewalld和iptables来阻止除 80、443 和 22 之外的所有内容。不知何故,我仍然能够从主机外部访问 docker 端口映射容器(端口 9009)!我发现的一些解决方案似乎完全弄乱了 docker 的路由——要么使 docker 容器无法访问互联网或其他什么。
我的情况可能吗?
这似乎在问同样的问题:https : //security.stackexchange.com/questions/66136/docker-port-forwarding-exposure
我最近为我的网络安装了一个Mikrotik 路由器,我想创建 3 个相互隔离但都可以访问互联网的网络:
通过遵循这些说明并模仿路由器附带的默认配置,我已经能够使用网桥设置这三个网络。
听起来我现在需要定义防火墙规则来阻止网桥之间的流量,而这正是我需要帮助的地方。我的理解是 Mikrotik 防火墙软件是基于 Linux iptables 的。
似乎有两个地方可以做到这一点: 中的主要防火墙配置/ip firewall filter,以及 中特定于网桥的部分/interface bridge filter。最好使用哪一种?各自的优缺点是什么?
我正在试验桥接过滤器,但我所有的规则旁边都有一个小交通栏图标,这对我来说不太好。我找不到有关图标含义的任何解释。
我应该如何设置规则?为每个桥创建一堆单独的链会更易于管理吗?如果是这样,应该如何组织链条?
听起来我需要为此定义forward规则。是否有任何input或output我需要的规则?
我应该在网桥/接口(即桥内、桥外、WAN 接口等)上设置规则匹配,对吗?例如,要阻止从主网络到家庭自动化网络的数据包,我需要一个类似于 in-bridge=main out-bridge=home_automation action=DROP 的规则,对吗?
我目前正在访问中国,所以我有一些设置 VPN 的选项。但是,我的 VPN 服务器有一个习惯,在我使用一段时间后突然从网络中消失。
我认为使用 SSH 隧道连接到另一台服务器并通过它连接 VPN 可能是一种选择,以防止检测到 VPN 流量。这样,大概,流量只是作为到提供商的 SSH 连接读取。
所以,我连接到这样的服务器:
ssh peter@some-server -L 4444:vpn-server:1194 -N
Run Code Online (Sandbox Code Playgroud)
然后将其添加到我的 openvpn 客户端配置中:
remote localhost 1194
Run Code Online (Sandbox Code Playgroud)
可悲的是,这行不通。连接通过身份验证,但之后,我无法连接到 VPN 内部 ( ping 10.8.0.1) 或外部 ( ping 8.8.8.8)。这应该有效,还是我误解了什么?
我应该添加一些 iptables nat 规则吗?到目前为止,我添加的唯一 nat 规则是:
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud) 我试图让我的应用程序在 Docker 中正常运行,但遇到了问题。
该应用程序以 PASV 模式连接到远程 FTP 服务器,并 PUT 文件。非常简单,无需 docker 即可正常工作。FTP 服务器和客户端都不在任何 NAT 之后;但是客户端变成了 NAT,因为我使用的是 Docker 桥接网络。(使用默认网桥配置http://pastie.org/10954592)
如果我在运行客户端应用程序时查看 FTP 服务器上的 tshark,它会交换大量数据包,因此它正在“连接”到服务器,但应用程序没有收到任何回复。这让我假设当 FTP 服务器尝试在该经验端口上响应时,它不会从主机操作系统路由回 Docker 容器。
所以,希望总结一下,有没有什么好的方法可以将这些 pasv 端口正确转发到 docker 网桥?约束:我无法控制生产中的 FTP 服务器,所以我不能简单地硬编码 iptables 的 pasv 端口列表。
感谢您的任何想法!