firewall-cmd 以及 iptables 折腾了好久实在是没成功。
家里有个内网主机 A 和主机 B,主机 B 使用 zerotier 组了异地局域网,主机 A 不想安装 zerotier。
所以从外网的请求都会通过这个虚拟网卡发送的主机 B,希望主机 B 可以把请求转发给 A。
比如 ssh -p 23 root@HostB 实现可以 ssh 到主机 A
1
azh7138m 2019-04-13 12:05:18 +08:00 1
如果只是 forward 一个端口上 tcp 或者 udp 流量,我现在在用的方案是 https://github.com/rssnsj/portfwd
|
2
rizon OP |
4
bruce2000 2019-04-13 12:10:29 +08:00
haproxy
nginx 了解下 |
5
rizon OP |
6
azh7138m 2019-04-13 12:16:07 +08:00
|
8
binux 2019-04-13 12:24:05 +08:00 1
iptables -t nat -A PREROUTING -d $HOST_B/32 -i eth0 -p tcp -m tcp --dport 23 -j DNAT --to-destination $HOST_A
|
9
aaa5838769 2019-04-13 12:28:35 +08:00
防火墙规则就可以吧
|
10
liwufan 2019-04-13 12:45:40 +08:00
祖传 netcat 就行啊
mkfifo fifo nc -lk 跳板机端口 <fifo | nc 目标机 ip a 目标机端口 >fifo |
11
snoopygao 2019-04-13 15:00:02 +08:00
A 有外网地址的机器 111.111.111.111 ,假设用户名是 user_a
vi /etc/ssh/sshd_config GatewayPorts yes 或 ssh 命令中加-g 参数 B 只有内网的机器,假设用户名是 user_b 设置密钥对 ssh-keygen -t rsa -b 4096 ssh-copy-id [email protected] 连接到 A 机,会自动启动 2022 端口 ssh -fCNR 2022:localhost:22 [email protected] C 其它机器上执行 ssh [email protected] -p 2022, 就能连到 B 机了 最后在 B 机上设置上 autossh 防止断开连接 |
12
snoopygao 2019-04-13 15:01:17 +08:00
|
13
snoopygao 2019-04-13 15:02:17 +08:00
还是写错了 user_a
|
14
dorothyREN 2019-04-13 17:30:16 +08:00
iptables 直接转发不就行了
|
15
azh7138m 2019-05-30 00:57:06 +08:00
我重新实现了一下 portfwd https://github.com/muzea/portfwd
提供了 api 可以控制转发地址 :D |