我就是不喜欢用socat :-P

我就是不用socat

能用系统自带的东西简单解决的问题为什么要多装一个东西呢对不对

firewall转发tcp到别的机器上

firewall-cmd --permanent --add-forward-port=port=<本机端口>:proto=tcp:toaddr=<目标IP>:toport=<目标端口>

firewall转发udp到别的机器上

firewall-cmd --permanent --add-forward-port=port=<本机端口>:proto=udp:toaddr=<目标IP>:toport=<目标端口>

允许防火墙伪装IP
(虽然不知道这个有什么意义但是不做不行)

firewall-cmd --add-masquerade --permanent

最后重载防火墙,使规则生效

firewall-cmd --reload

题外话:
firewall在/etc/firewalld/zones下面储存了一些规则(应该可以这样说吧?
比如我添加完上面的规则之后那个xml文件是这样的

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <masquerade/>
  <forward-port to-addr="<目标IP>" to-port="25565" protocol="tcp" port="25565"/>
  <forward-port to-addr="<目标IP>" to-port="25565" protocol="udp" port="25565"/>
</zone>

那大概可以直接编辑这个xml然后直接firewall-cmd --reload使规则生效吧?
没实验过(逃走


20191015 update:

socat真香!

docker run -d --restart=always \
    -p 10022:10022 \
    alpine/socat \
    TCP4-LISTEN:10022,fork,reuseaddr TCP4:192.168.122.101:22 \

标签: none