【问题标题】:Set ip for traffic for all traffic incoming outgoing为所有传入传出的流量设置 ip
【发布时间】:2020-03-05 01:48:03
【问题描述】:

我为该主机设置了主机和 5 个 IP。 我可以通过任何这些 IP 访问主机。 从该主机和码头建立的任何连接也被检测为来自 IP1 我在该主机上有一个码头工人,我想拥有一个 IP2。我如何设置该泊坞窗,以便当从该泊坞窗与其他外部服务器建立任何连接时,他们会获得有关 IP@ 而不是 IP1 的信息。 谢谢!

【问题讨论】:

  • 你使用的是 docker、swarm 还是 k8s?
  • 您是否尝试过使用专用 IP 进行端口转发?例如docker run --port 1234:IP2:1234
  • 我已经按照说明使用了 docker。看不到端口转发将如何提供帮助?当我从 docker 内部访问一些外部服务时,我只需要被识别为来自 IP2 并形成 IP1。对于测试,我正在使用 requestbin。

标签: docker docker-networking docker-network


【解决方案1】:

要实现这一点,您需要在您的机器上编辑路线。您可以通过运行这些命令来找出当前路线。

$ ip route show
default via 10.1.73.254 dev eth0 proto static metric 100
10.1.73.0/24 dev eth0 proto kernel scope link src 10.1.73.17 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1

那么你需要像这样更改默认路由

ip route add default via ${YOUR_IP} dev eth0 proto static metric 100

【讨论】:

    【解决方案2】:

    最后对我有用的是创建 docker 网络并为该本地范围添加到 iptables 后路由...

    docker network create bridge-smtp --subnet=192.168.1.0/24 --gateway=192.168.1.1
    iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source MYIP_ADD_HERE
    docker run --rm --network bridge-smtp byrnedo/alpine-curl http://www.myip.ch
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多