我的电脑有两个 IP 地址。如何使用CentOS 将端口80上的传入请求转发到来8080自我的 IPiptables之一?
例如,我有 ip 地址1.1.1.1和2.2.2.2,我想将http://1.1.1.1端口转发80到端口8080,1.1.1.1但不是2.2.2.2。
我该怎么做呢?
我尝试使用以下 bash sctipt 将 ssh 流量从一台机器重定向到另一台机器:
IPTABLES="/usr/sbin/iptables"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t nat
$IPTABLES -X -t nat
$IPTABLES -F -t mangle
$IPTABLES -X -t mangle
$IPTABLES --policy INPUT ACCEPT
$IPTABLES --policy FORWARD ACCEPT
$IPTABLES --policy OUTPUT ACCEPT
$IPTABLES -t nat -A POSTROUTING --out-interface ppp0 -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to 192.168.2.2
echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)
但是当我输入
ssh user@localhost
Run Code Online (Sandbox Code Playgroud)
或者
ssh user@192.168.2.1 # (address of local host)
Run Code Online (Sandbox Code Playgroud)
我收到错误“连接被拒绝”。
请帮我。
我有一台有 3 位客人的 Ubuntu 主机。它们都在端口 80 上运行不同的 Web 服务。我如何告诉主机根据主机名将请求转发给适当的来宾?
主机:example.com
来宾:git.example.com、www.example.com、psql.example.com
我得到了lo(127.0.0.1)和eth0(172.17.0.8)。我想将登陆的数据包重定向127.0.0.1:80到172.17.42.1:80(从 路由eth0)。
我试过
iptables -t nat -A OUTPUT -p tcp --dport 80 -d 127.0.0.1 -j DNAT --to 172.17.42.1:80
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时我没有curl localhost:80得到任何回应,当我这样做时curl 172.17.42.1:80它就起作用了。
如何将端口转发到主机名和端口。我正在看这篇文章:Iptables forward all traffic to a specified port, to another device and see how to do it port to ip 但如果我需要做 port to hostname 怎么办?尝试将主机作为目的地,但它在 iptables 中引发错误
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination ehb-us-redis-001.ehb-usredis.u1.cache.com:6379
iptables v1.4.21: Bad IP address "ehb"
Try `iptables -h' or 'iptables --help' for more information.
Run Code Online (Sandbox Code Playgroud) 我有几个 VM 运行在服务器(虚拟机管理器,VMM)之上。我想将服务器上的端口 80 转发到我的一台虚拟机的端口 80。主机运行 CentOS7,因此 firewalld 负责。显然,VMM 也使用 firewalld 来处理虚拟连接,所以我不能把它扔出窗口。
我基本上没有成功地复制了这个线程中的所有命令,归结为:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.122.224
Run Code Online (Sandbox Code Playgroud)
或者
firewall-cmd --permanent --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=80 to-addr=192.168.122.224'
Run Code Online (Sandbox Code Playgroud)
firewalld 目前的状态如下:
[root@my-machine ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp8s0
sources:
services: ssh dhcpv6-client samba smtp http
ports: 25/tcp
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" forward-port port="80" protocol="tcp" to-port="80" to-addr="192.168.xxx.xxx"
Run Code Online (Sandbox Code Playgroud)
这是输出
iptables -L -n -v
Chain FORWARD (policy ACCEPT 0 packets, …Run Code Online (Sandbox Code Playgroud) 我不太确定这是否应该属于这里,但如何将公共 IP 添加到我的服务器?
我想在服务器 B 中启动一个系统直播到互联网。问题是我的服务器(服务器 A)和服务器 B 之间没有物理连接。
我注意到服务器 B 是:
我在某处读到,将公共 IP 和端口转发分配给服务器 B 可能会帮助我将该系统实时启动到 Internet。
问题是我对网络知之甚少/甚至一无所知,每个术语对我来说都像是一个难题。
我之前问过如何在运行wireguard服务的VPS上转发端口,以ufw和iptables作为管理。
我必须这样做:
(56000是我选择的随机端口)(10.66.66.2是wireguard的内部ip)
ufw route allow proto tcp to 10.66.66.2 port 56000
Run Code Online (Sandbox Code Playgroud)
然后我会这样做来实际使用 iptables 转发端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 56000 -j DNAT --to-destination 10.66.66.2
Run Code Online (Sandbox Code Playgroud)
我有办法实现这一firewalld目标吗?这样我就不必将转发分成两个地方?
这里是否使用伪装/是否需要?因为我不知道它有什么作用,也不知道它有什么用。
VPSwireguardwg0conf供参考:
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) 我有一个在线 GPS 跟踪器,它连接到 TCP 服务器并每隔几秒钟将其当前位置发送给它。跟踪器的配置允许用户设置服务器的 IP 地址及其端口。
我的问题是从跟踪器接收数据的 TCP 服务器应用程序在我家庭网络中的计算机上运行,而我没有静态 IP 地址。这意味着当我的 IP 地址更改时,我必须每 24 小时重新配置我的跟踪器。
我在 DynDNS.org 网站上创建了一个帐户并在我的路由器中配置了 DDNS 部分,现在可以通过主机名访问它。如果只有 thacker 可以接受主机名而不是 IP 地址,这将解决我的问题。但事实并非如此。
有没有办法轻松解决我的问题?也许某种互联网服务将指定端口上的连接转发到给定的主机名?我不知道...
提前感谢您的帮助。
我正在尝试在本地计算机(Windows 7 32 位)上打开端口 22。我正在使用网络工具来检查我的端口是否打开。它说端口 22 已关闭。所以我禁用了防火墙,看看它是否会导致端口被阻止。即使禁用了防火墙,端口 22 仍然关闭。
我在没有无线路由器的情况下直接连接到我的电缆。可能是什么问题?
更新我正在尝试使用 SSH 连接到服务器(Linux - CentOS 4.5 版)。我在我的机器上使用 Putty 客户端(Windows 7)。当我尝试连接时,连接超时。我运行命令telnet mysite.com 22以查看是否可以通过端口 22 进行连接,但我收到“连接超时”的消息。信息。
更新2想通了。除了我本地计算机上的防火墙外,服务器上还有一个防火墙,它只对某些 IP 开放端口 22。所以即使端口 22 是开放的,它也没有对我的 IP 开放。
port-forwarding ×10
iptables ×4
firewalld ×2
centos ×1
centos7 ×1
dnat ×1
firewall ×1
hostname ×1
ip-address ×1
networking ×1
port ×1
routing ×1
security ×1
windows ×1
wireguard ×1