标签: port-forwarding

如何配置从硬编码到 IP 的特定 IP 的流量以使用 iptables 转发到另一个 IP:PORT?

不幸的是,我们有一个客户端硬编码了一个设备以指向特定的 IP 和端口。我们希望将流量从他们的 IP 重定向到我们的负载均衡器,负载均衡器会将 HTTP POST 发送到能够处理该请求的服务器池。我希望来自所有其他 IP 的现有流量不受影响。

我相信 iptables 是实现这一目标的最佳方式,我认为这个命令应该可以工作:

/sbin/iptables -t nat -A PREROUTING -s $CUSTIP -j DNAT -p tcp --dport 8080 -d $CURR_SERVER_IP --to-destination $NEW_SERVER_IP:8080
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有按预期工作。我不确定是否需要在POSTROUTING链中添加另一条规则?

下面我用真实的 IP 替换了上面的变量,并尝试在我的测试环境中逐步复制布局。

$CURR_SERVER_IP = 192.168.2.11  
$NEW_SERVER_IP = 192.168.2.12  
$CUST_IP = 192.168.0.50  
Run Code Online (Sandbox Code Playgroud)

完全按预期工作。

networking iptables port-forwarding

7
推荐指数
1
解决办法
2万
查看次数

iptables:将端口 80 转发到端口 8080

如何在内部将端口 80 转发到端口 8080?

我的目标是让 Web 应用程序服务器 (Glassfish) 在端口 8080 上运行,但外部世界可以在端口 80 上正常访问它。这样做是为了让我不必以 root 身份运行 Glassfish。

我尝试将以下规则添加到我的 /etc/sysconfig/iptables:

-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Run Code Online (Sandbox Code Playgroud)

但这会导致以下错误:

Applying iptables firewall rules: iptables-restore v1.3.5: Line 21 seems to have a -t table option.
Run Code Online (Sandbox Code Playgroud)

iptables centos port-forwarding

7
推荐指数
1
解决办法
3万
查看次数

使用socat将linux终端从串口转发到TCP

我正在研究嵌入式 ARM 平台 Slackware。我正在使用 G24 Java 调制解调器,该调制解调器配置为在端口/dev/ttyS1和之间转发数据/dev/ttyACM0,因此进入任何这些端口的任何内容都可以在另一个端口上看到。我想在这些端口之一上设置终端,/dev/ttyS1并将另一个端口转发/dev/ACM0到 TCP 端口,以便可以通过 LAN 从其他机器访问它。

首先,我配置了/etc/inittab

s2:12345:respawn:/sbin/agetty -L ttyS1 115200 vt100
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过以下命令使用 socat:

socat -d -d -d TCP-l:2020,reuseaddr,fork /dev/ttyACM0,raw,nonblock,waitlock="/var/run/ttyACM0.lock",b115200,echo=1,icanon=1,crnl

然后我试图telnet 192.168.1.222 2020从其他机器连接,结果不太好,我从客户端看到终端要求登录,但是有一个我没有输入的即时答案:^M^M^M...等,终端回答登录不正确,然后一次又一次地回答同样的事情。

我知道这^M意味着回车符,但我不太确定如何解决这个问题。我尝试了不同的 socat 配置,但没有一个能正常工作。

terminal port-forwarding tcp embedded-linux socat

7
推荐指数
1
解决办法
1万
查看次数

SSH 和 SSH 隧道有什么区别

正如标题所说,我不太明白它们之间的区别。例如,如果我在没有隧道的情况下通过 SSH 连接到特定服务器,我将获得与隧道相同的 shell。

ssh tunneling port-forwarding socks

7
推荐指数
2
解决办法
9269
查看次数

在桥接模式下为 KVM 来宾分配 ipv6 地址

系统:CentOS 6.5

网络:br0上的桥接

IPv6:ISP 本机 /64 块。

IPv4:ISP 地址(不是内部 LAN)

目的:仅将 IPv6 分配给来宾(手动),我不希望将 ipv4 地址分配给来宾操作系统。


在主机上:

/etc/sysctl.conf:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1 
net.ipv6.conf.br0.forwarding = 1
net.ipv6.conf.default.forwarding = 1
Run Code Online (Sandbox Code Playgroud)

brctl 显示

bridge name     bridge id               STP enabled     interfaces
br0             8000.e840f2ecdfed       no              eth0
                                                        vnet0
virbr0          8000.52540051ef3c       yes             virbr0-nic
Run Code Online (Sandbox Code Playgroud)

如果配置:

br0       Link encap:Ethernet  HWaddr E8:40:F2:EC:DF:ED  
      inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.255  Mask:255.255.255.0
      inet6 addr: 2607:beef:be:beef::1/64 Scope:Global
      inet6 addr: fe80::ea40:f2ff:feec:dfed/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:365707 errors:0 dropped:0 overruns:0 frame:0
      TX packets:470458 errors:0 …
Run Code Online (Sandbox Code Playgroud)

networking centos port-forwarding bridge kvm-virtualization

7
推荐指数
1
解决办法
1万
查看次数

如何使用 iptables 将 HTTP 和 SSH 端口转发到我的内部服务器?

我没有路由器,所以我将 Linux 系统变成了一个具有 CentOS 6.4 的路由器,用于将公共网络流量转发到我的本地 LAN。它有两个 NIC 卡。一个用于公共 IP 地址 (eth1),另一个用于私有 IP 地址 (eth2)。

我有一台连接到本地 LAN 的服务器,假设为 192.168.1.2。

xxxx 是公网 IP 地址(这个 IP 地址在 eth1 上)。

Linux系统路由器IP地址假设为192.168.1.1(该IP地址在eth2上)。

我希望当来自任何地方的任何网络的人使用它时,即,

ssh x.x..x.x(公共 IP 地址)或使用PuTTY

它将转到服务器。

我禁用了服务器上的 SELinux 和 iptables 防火墙。

我在 Linux 系统路由器上做了一些 Iptables 修改,但它本身作为路由器工作,而不是来自其他网络和同一网络的主服务器。

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.1 --dport 22 -j DNAT --to-destination 192.168.1.2:22
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我想再次使用来自同一 Linux 系统路由器的 iptables 将所有 HTTP (80) 流量转发到我的内部服务器。

解决这个问题的方法是什么?

http ssh routing iptables port-forwarding

7
推荐指数
1
解决办法
6万
查看次数

SSH 隧道(端口转发)减慢了我的 mysql 查询速度

我目前正在使用 vagrant(虚拟机)测试一些配置,以通过 SSH 隧道将 2 个服务器(当前的 VM)连接在一起。目标是将我的 Web 应用程序安全地连接到数据库。

问题是,当我通过 SSH 隧道查询数据库时,查询速度比不使用隧道时慢 5 到 80 倍。这是我正在使用的命令:

ssh -N -L 3306:127.0.0.1:3306 sshuser@192.168.10.10
Run Code Online (Sandbox Code Playgroud)

从我读到的内容来看,开销不应该那么多,所以我尝试了一些方法来加快传输速度。我发现如果我删除该-N选项,查询的速度与我不使用隧道的速度一样快,但我以“sshuser”的身份登录终端(并&在命令末尾添加一个奇怪的事物...)。

所以知道了,我有几个问题:

  • 当我删除该-N选项时,我的数据是否仍然加密?

  • 如果是这样,我该怎么做才能保持性能而不在控制台中以“sshuser”的身份登录?

  • 我可以使用它们来加快加密速度吗?

预先感谢您的光。

ssh port-forwarding linux-networking vagrant tunnel

7
推荐指数
2
解决办法
1万
查看次数

CentOS 端口转发不起作用

我正在使用 CentOS 6.5,并且在我的 iptables 中添加了以下命令以将端口 8088 上的所有传入流量转发到 4569:

iptables -A PREROUTING -t nat -p udp --dport 8088 -i eth0 -j DNAT --to-destination 127.0.0.1:4569
iptables -I FORWARD 1 -d 127.0.0.1 -p udp --dport 4569 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

iptables --list 显示以下输出:

iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             localhost.localdomain udp dpt:iax

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Run Code Online (Sandbox Code Playgroud)

但是当我在 udp 端口​​ 4569 上进行数据包跟踪时,我在该端口上看不到任何数据包。然后我添加了这个:

iptables …
Run Code Online (Sandbox Code Playgroud)

iptables port-forwarding

7
推荐指数
1
解决办法
8763
查看次数

使用 firewall-cmd 进行 ssh 端口转发

我正在尝试通过 ssh 隧道连接到 NAT 后面的服务器:

从笔记本电脑 ssh --> 在防火墙中使用端口转发的主机 --> 直接进入来宾(172.16.0.2,在主机 NAT 后面)。

在主机上使用 iptables - 它会起作用:

# iptables -I OUTPUT  -d 0.0.0.0/0 -j ACCEPT
# iptables -I FORWARD  -d 0.0.0.0/0 -j ACCEPT
# iptables -I INPUT  -d 0.0.0.0/0 -j ACCEPT
# iptables -t nat -I PREROUTING -d 0.0.0.0/0 -p tcp --dport 222 -j DNAT --to-destination 172.16.0.2:22
Run Code Online (Sandbox Code Playgroud)

但是,主机重启时不会保存 iptables,因为 firewalld 服务正在运行(firewalld 是 RHEL 7 中的默认设置)。

所以我正在尝试使用 firewall-cmd进行相同的端口转发

在主机上使用 firewall-cmd - 它不起作用:

# firewall-cmd --permanent --zone=public …
Run Code Online (Sandbox Code Playgroud)

linux port-forwarding ssh-tunnel firewalld

7
推荐指数
2
解决办法
2万
查看次数

使用wireguard进行端口转发

使用 qbittorrent 和 airdcpp 等应用程序来共享文件。它们都需要转发一些端口才能“可连接”。

在家庭连接中,我会进入路由器设置192.168.1.1,然后转发端口,例如。56000到我的电脑的本地 IP 地址:192.168.1.124。而且服务会正常工作。

后来在Linode VPS 上设置了wireguard,希望我可以VPN 进入它并屏蔽我的IP。但是当我这样做时,当我访问https://whoer.net这样的地方时,我的 IP 地址会发生变化。但使用的端口,例如。 56000未转发,因此应用程序不可“连接”。

为了让 VPS 像我的家庭路由器一样转发这些端口,我需要在 iptables 中添加哪些内容?

端口56000设置为allow活动 VPSufw防火墙中的端口。

非常感谢您的浏览。

这是我的 VPS 线卫配置的样子:

Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 49503
PrivateKey = ***


[Peer]
PublicKey = ***
PresharedKey = ***
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128
Run Code Online (Sandbox Code Playgroud)

port-forwarding wireguard

7
推荐指数
1
解决办法
4万
查看次数