web-dev-qa-db-ja.com

インターフェイス上の複数のIPアドレス。そのうちの1つを出力用に指定したい

Curlmyip.comでcurlを実行し、誤った出力IPアドレスを取得しました。私のsystemdサービスファイルは:

[Unit]
Description=Wired Networking
Wants=network.target dibbler-client.service
Before=network.target dibbler-client.service

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/sbin/ip addr add ${address}/24 dev ${interface}
ExecStart=/sbin/ip addr add ${failover}/32 dev ${interface}
ExecStart=/sbin/ip route add default via ${gateway} src ${failover}
ExecStart=/sbin/ip -6 addr add ${addressv6}/64 dev ${interface}

ExecStop=/sbin/ip addr flush dev ${interface}
ExecStop=/sbin/ip -6 addr flush dev ${interface}
ExecStop=/sbin/ip link set dev ${interface} down

[Install]
WantedBy=multi-user.target

そして変数は:

interface=eno1
address=88.190.15.135
address6=2001:bc8:300a:dead::b12d
failover=212.83.129.104
broadcast=88.190.15.255
gateway=88.190.15.1

今、ip addrは私に与えます:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether b8:ac:6f:94:e2:4e brd ff:ff:ff:ff:ff:ff
    inet 88.190.15.135/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet 212.83.129.104/32 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::baac:6fff:fe94:e24e/64 scope link
       valid_lft forever preferred_lft forever

そしてIPルート:

default via 88.190.15.1 dev eno1  src 212.83.129.104
88.190.15.0/24 dev eno1  proto kernel  scope link  src 88.190.15.135

curlmyip.comは、出力IPアドレスが88.190.15.135であることを教えてくれます。この出力アドレスを変更して212.83.129.104にするにはどうすればよいですか?

編集:ゲートウェイへのルートのソースを変更するためにテストされました...変更はありません。

ありがとう!

6
Cubox

私の専用プロバイダーが私に言ったように、 https://Twitter.com/online_fr/status/384662183751450624

私はこれを追加しました:-t nat -A POSTROUTING -o eno1 \! -d 10.8.0.0/24 -j SNAT --to-source 212.83.129.104そしてすべては今うまくいきます:)

Online.netでホストされている場合は、それが唯一の方法です。

0
Cubox

プロバイダーがIPルーティングでいくつかの汚いトリックをしているようです。使用している2番目のIPアドレスは、完全に異なるネットワーク上にあります。あなたのdediboxはAS12322にあり、他のIPアドレスはAS12876のTiscaliに登録されています。関係するサービスプロバイダーが機能しているため、これは機能しているようです。

とにかく、ネットワーク接続を確立できるほとんどのプログラムには、送信元IPアドレスを指定できるオプションがあります。 curlコマンドラインの場合、そのオプションは--interface

curl --interface 212.83.129.104 http://curlmyip.com/
10
Michael Hampton

投稿した設定から、デフォルトルートのソースとして212.83.128.104を指定しているように見えます。

default via 88.190.15.1 dev eno1  src 212.83.129.104

おそらくそれを変更するか、削除する必要があります。

編集:どうやら私は質問を誤解し、212.83.128.104がソースIPとして使用されていると思いました。私がそれを正しく再読めば、88.190.15.135が実際にソースIPとして使用されており、望ましい動作は代わりに212.83.129.104を使用することです。診断するには、詳細情報が必要ですが、このバグの影響を受けていると思います: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1093999 = where ip route ... srcがカーネルで壊れています。

2
Jed Daniels