我使用这样的命令:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.118 --dport 4080 -j DNAT --to-destination 192.168.1.118:4088
我的问题是什么是查看所选链中所有规则的命令。我正在使用,iptables -L但它不显示任何内容。但是,该命令已成功重定向。
我的电脑配备了两个网络接口,wlan0& eth0,我想使用 WiFi 端口作为wlan0.
hostapd设施,它在本地网络内的路由模式下正常工作;用户可以连接到接入点并且 DHCP 在两个网段中都正常工作。hostapd没有任何防火墙或iptables规则(iptables并禁用防火墙),因为我只想使用 ADSL 路由器的内置防火墙。我的网络配置如下:
PC with hostapd -> cable connection -> ADSL routerwlan0 -> eth0 <-> 192.168.0.1 <-> internet192.168.10.1 -> 192.168.0.7 -> static routing to 192.168.10.X电脑ifconfig:
eth0 Link encap:Ethernet HWaddr 00:12:3F:F2:31:65
inet addr:192.168.0.7 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
TX packets:1008097 errors:0 dropped:0 …Run Code Online (Sandbox Code Playgroud) 现在我能够ssh通过互联网ssh托管以及从主机到虚拟机。我想要做的是ssh从外面直接到Guest机器。
我尝试使用iptables以下方法执行此操作:
iptables -t nat -A PREROUTING -m tcp -p tcp --dport 2222 -j DNAT --to-destination 192.168.130.128:22
Run Code Online (Sandbox Code Playgroud)
并且还打开了这个相关的端口UFW:
ufw allow routed
ufw allow outgoing
ufw deny incoming
ufw allow 2222/tcp
Run Code Online (Sandbox Code Playgroud)
重新加载防火墙后,远程ssh将冻结debug1: Connecting to x.x.x.x [x.x.x.x] port 2222并使用tcpdump -i vmnet8 'port 22'我可以看到:
listening on vmnet8, link-type EN10MB (Ethernet), capture size 65535 bytes
18:56:03.002790 IP x.x.x.x.13203 > y.y.y.y.ssh: Flags [S], seq 1077492285, win 29200, options [mss …Run Code Online (Sandbox Code Playgroud) 我已将 sshd 配置为位于不同的端口上。我已经使用 firewalld 打开了那个端口:
$ sudo firewall-cmd --zone=public --add-port=22000/tcp --permanent
Run Code Online (Sandbox Code Playgroud)
列表规则显示端口 22000 是开放的:
$ sudo firewall-cmd --permanent --zone=public --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ssh
ports: 22000/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
但是我无法从远程主机登录到端口 22000。如果我使用 iptables,它可以工作:
$ sudo iptables -I INPUT -p tcp --dport 22000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我现在可以登录了。但是如何使用 Firewalld 打开端口?
编辑:根据要求:
$ sudo firewall-cmd --get-default-zone
public
Run Code Online (Sandbox Code Playgroud)
和:
$ firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
Run Code Online (Sandbox Code Playgroud) 我有一个新的 VPN 连接(使用 openvpn)来允许我绕过一些 ISP 限制。虽然它工作正常,但它正在通过 vpn占用所有流量。这给我的下载(我的互联网连接比 vpn 允许的速度快得多)和远程访问造成了问题。我运行一个 ssh 服务器,并运行一个守护进程,它允许我通过手机安排下载。
我在 eth0 上有我现有的以太网连接,在 tun0 上有新的 VPN 连接。
我相信我需要设置默认路由以在 192.168.0.0/24 网络上使用我现有的 eth0 连接,并将默认网关设置为 192.168.0.1(我的知识很不稳定,因为我已经很多年没有这样做了)。如果那是正确的,那么我不确定该怎么做!我当前的路由表是:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
0.0.0.0 10.51.0.169 0.0.0.0 UG 0 0 0 tun0 0 0 0
10.51.0.1 10.51.0.169 255.255.255.255 UGH 0 0 0 tun0 0 0 0
10.51.0.169 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 0 0 0
85.25.147.49 192.168.0.1 255.255.255.255 UGH 0 0 …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了 Fedora 19 并且我使用的是 firewalld 而不是 iptables,但是我在解释新术语时遇到了困难。
我有 2 个网卡。一个是在 ifcfg-* 文件中指定的 ZONE="internal" 和另一个“external”,我在 /etc/sysctl.conf 中设置了 ipv4.forwarding = 1,并运行 firewall-cmd --zone=external --add -化妆舞会
但是,当我尝试从内部网络上的任何机器进行路由时,我收到了禁止目标主机的消息,当然,如果我禁用了 firewalld,错误就会消失,但随后我就失去了伪装。
在 iptables 中有一个名为 FORWARD 的规则集,但在 firewalld 中我只能找到 --add-port-forward 这不是一回事。
如何在 firewalld 中允许路由?
......我取得了一些进展......
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens4 -o eth1 -j ACCEPT
将允许路由,但它不是持久的,并且不允许 --permanent 选项。如何在重新启动后保持这种持久性?
这篇博文有一个模板 iptables 规则来转发流量,从路由器到另一个 IP 地址。
iptables -t mangle -A POSTROUTING \
-d [IP to spy on] \
-j ROUTE –tee –gw [IP of wireshark]
iptables -t mangle -A PREROUTING \
-s [IP to spy on] \
-j ROUTE –tee –gw [IP of wireshark]
Run Code Online (Sandbox Code Playgroud)
我没有测试该命令,因为我没有要监视的特定 IP。
然而,我尝试了以下似乎有语法问题的方法:
iptables -t mangle -A POSTROUTING \
-j ROUTE –tee –gw [IP of wireshark]
iptables -t mangle -A PREROUTING \
-j ROUTE –tee –gw [IP of wireshark]
Run Code Online (Sandbox Code Playgroud)
随着错误:
Try `iptables -h' or 'iptables --help' …Run Code Online (Sandbox Code Playgroud) 背景:我正在尝试设置一个 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。
有谁知道?