我希望在端口 8001 上进入 ppp0 的连接路由到端口 8080 上的 eth0 上的 192.168.1.200。
我有这两条规则
-A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 192.168.1.200:8080
-A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
它不起作用。我错过了什么?
我想NAT在iptables. 这样,所有到达192.168.12.87和 port的数据包都80将被转发到192.168.12.77port 80。
如何用 iptables 做到这一点?
或者
还有其他方法可以实现相同的目标吗?
我想将所有流量从端口 443 重定向到内部端口 8080。我正在为 iptables 使用此配置:
iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \
--dport 443 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
这适用于所有外部客户。但是如果我试图从同一台机器访问端口 443,我会收到连接被拒绝的错误。
wget https://localhost
Run Code Online (Sandbox Code Playgroud)
如何扩展 iptables 规则以重定向本地流量?
这是一个关于发夹式 NAT(环回 NAT)的规范问题。
这个问题的一般形式是:
我们有一个包含客户端、服务器和 NAT 路由器的网络。路由器上有到服务器的端口转发,因此它的一些服务可从外部使用。我们有指向外部 IP 的 DNS。本地网络客户端无法连接,但外部工作。
这个问题的答案是从多个其他问题合并而来的。他们最初引用了 FreeBSD、D-Link、Microtik 和其他设备。然而,他们都试图解决同样的问题。
如何将来自端口 80 的请求转发到同一台 Linux 机器上的另一个端口?
我曾经通过更改来做到这一点nat.conf,但是我使用的这台机器没有 NAT。什么是替代方案?
我有一台 Linux VPS (virtuozzo) 服务器,我需要设置端口转发,但我的托管服务提供商不允许使用iptables-nat内核模块,因此iptables -t nat- 无法正常工作。
我正在寻找其他方法来做到这一点。我知道我可以使用openssh转发端口,但我需要转发 20 多个不同的端口,tcp 和 udp,所以这不是一个选项。
有没有可以做端口转发的linux软件?
使用 NAT 时,如何将运行 libvirt/KVM 的服务器上的端口转发到 VM 上的指定端口?
例如,主机的公共 IP 为 1.2.3.4。我想将端口 80 转发到 10.0.0.1,将端口 22 转发到 10.0.0.2。
我假设我需要添加 iptables 规则,但我不确定在哪里合适以及应该指定什么。
iptables -L 的输出
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 10.0.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 …Run Code Online (Sandbox Code Playgroud) 我目前使用 ufw 来强制执行一些基本的防火墙规则。是否也可以使用 ufw 进行端口转发?
特别是我想将传入流量转发到我的服务器(运行 ufw 的同一台机器)在端口 80 到端口 8080 上。(http 流量转发到 tomcat)
钍
我的情况 :
我(本地主机) -> 服务器 A(ip:100.100.100.100) =>(服务器 B(ip:192.168.25.100),服务器....)
我可以通过 SSH 连接到服务器,因为它有一个真正的 ip,如果我想连接到服务器 b,我会用它的 ip(192.168.25.100) SSH 服务器 b
例子:
从我的电脑:
ssh user@100.100.100.100
Run Code Online (Sandbox Code Playgroud)
然后在 100.100.100.100,
ssh user@192.168.25.100
Run Code Online (Sandbox Code Playgroud)
这将使我使用 ssh 连接到服务器 B
如果我想直接连接到服务器 b 怎么办?我怎样才能做到这一点?
例子:
从我的 oc:
ssh@192.168.25.100
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
ssh -L 22:localhost:22 user@100.100.100.100
Run Code Online (Sandbox Code Playgroud)
没有成功
快速提问 - 我运行两个 linux 机器,一个是我自己的桌面,另一个是我的 VPS。出于 VPS 端的安全原因,我选择了与 MySQL ( /var/run/mysqld/mysql.sock) 的套接字连接。我知道我可以像这样ssh -L 3307:127.0.0.1:3306 user@site.com建立隧道:如果我设置远程 sql server 来监听某个端口,但我想知道的是我可以做这样的事情:ssh -L /path/to/myremotesqlserver.sock:/var/run/mysqld/mysql.sock从而隧道两个套接字,而不是两个端口?
一个完全可以接受的解决方案也是将本地端口转发到远程套接字文件,但在可能的情况下,我试图不在远程机器上运行 tcp 服务器。
(是的,我知道 tcp 会更容易)。
port-forwarding ×10
linux ×7
iptables ×4
firewall ×2
nat ×2
networking ×2
ssh ×2
internet ×1
libvirt ×1
mysql ×1
socat ×1
socket ×1
ssh-tunnel ×1
ubuntu ×1
ufw ×1