- blogs:
- cles::blog
2009/08/21
iptablesでポートマッピング
久しぶりにiptablesでNATの設定をしたらハマってしまったので、忘れないうちにメモ。
こんなネットワークがあり、ServerAの8080で待ち受けているサービスを、Clientから使いたいという状況でした。
┌───────────┐
│ ServerA │
│ 192.168.200.2:8080 │
└───────────┘
│
│192.168.200.0/24
│
┌eth1(192.168.200.1) ─┐
│ServerB │
└eth0(192.168.100.1) ─┘
│
│192.168.100.0/24
│
┌───────────┐
│Client │
│ 192.168.100.0/24 │
└───────────┘
│ ServerA │
│ 192.168.200.2:8080 │
└───────────┘
│
│192.168.200.0/24
│
┌eth1(192.168.200.1) ─┐
│ServerB │
└eth0(192.168.100.1) ─┘
│
│192.168.100.0/24
│
┌───────────┐
│Client │
│ 192.168.100.0/24 │
└───────────┘
以下、作業メモ
† 最終的なネットワーク構成
最終的なネットワーク構成はこんな感じになりました。やったこととしては、ServerBには既に8080で動いているサービスがあったので、ServerAへのNATに使うアドレスとして、eth0:1を追加し、それに対してDNATの設定をしたという感じです。
やりたい事はそんなに難しい事ではないのですが、NATするためにはDestinationだけではなくて、Sourceの書き換えも必要になるので、DNATと対になるMASQUERADEもしくはSNATを書かないといけないのをすっかり忘れていて、かなり時間がかかってしまいました。
┌───────────┐
│ ServerA │
│ 192.168.200.2:8080 │
└───────────┘
│
│192.168.200.0/24
│
┌eth1(192.168.200.1) ──────────────┐
│ 192.168.200.2:8080 │
│ServerB ↑DNAT │
│ 192.168.100.2:8080 │
└eth0(192.168.100.1) ─ eth0:1(192.168.100.2) ─┘
│
│192.168.100.0/24
│
┌───────────┐
│Client │
│ 192.168.100.0/24 │
└───────────┘
│ ServerA │
│ 192.168.200.2:8080 │
└───────────┘
│
│192.168.200.0/24
│
┌eth1(192.168.200.1) ──────────────┐
│ 192.168.200.2:8080 │
│ServerB ↑DNAT │
│ 192.168.100.2:8080 │
└eth0(192.168.100.1) ─ eth0:1(192.168.100.2) ─┘
│
│192.168.100.0/24
│
┌───────────┐
│Client │
│ 192.168.100.0/24 │
└───────────┘
† /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.100.2
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
ONBOOT=yes
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.100.2
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
† nat.sh
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.100.2 --dport 8080 -j DNAT --to 192.168.200.2:8080
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.100.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.100.2 --dport 8080 -j DNAT --to 192.168.200.2:8080
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.100.0/24 -j MASQUERADE
† 作業手順
ifup eth0:1
bash nat.sh
iptables -L -n -v -t nat
bash nat.sh
iptables -L -n -v -t nat
[5年前][4年前][3年前][2年前][1年前][1年後][2年後] |
by hsur at 22:04, Category: Tips | linux / networking |
Views: 763
このエントリは役に立ちましたか?
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/3168
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
Loading
- 「鋲螺」の読み方 (3)
- NP_DragAndDropUploader v1.2 (2)
- 覚醒の配達で目覚める朝 (2)
- シェルスクリプトで最新のフ... (1)
- 予期しない例外でRubyが落ち... (1)
1 . VMware vCenter Converter で 物理サーバの仮想化をやってみた (19166)
2 . ネットワーク接続時のパスワード保存先 (16812)
3 . JavaScriptでCSVを読み込む (14112)
4 . 「鋲螺」の読み方 (13198)
5 . NHK がネットを使ったラジオ配信を開始してた (13064)
2 . ネットワーク接続時のパスワード保存先 (16812)
3 . JavaScriptでCSVを読み込む (14112)
4 . 「鋲螺」の読み方 (13198)
5 . NHK がネットを使ったラジオ配信を開始してた (13064)
cles::blogについて
Calendar
Referrers